Skip to main content

Command Palette

Search for a command to run...

๐Ÿš€ Deploy Next.js di VPS Menggunakan PM2 (Lengkap & Praktis)

Updated
โ€ข2 min read
๐Ÿš€ Deploy Next.js di VPS Menggunakan PM2 (Lengkap & Praktis)

Pendahuluan

Saat membangun aplikasi Next.js, menjalankannya di local dengan npm run dev memang mudah.
Tapi ketika masuk ke server / VPS, kita butuh cara yang stabil, aman, dan otomatis hidup kembali saat server restart.

Di artikel ini, aku akan membahas cara deploy Next.js di VPS menggunakan PM2, lengkap dari build hingga troubleshooting umum.


Kenapa Tidak npm run dev di Server?

Mode dev:

  • โŒ Tidak untuk production

  • โŒ Boros resource

  • โŒ Mati saat terminal ditutup

Solusinya adalah production build + PM2.


Persiapan

Pastikan di VPS kamu sudah terinstall:

  • Node.js v20+

  • npm

  • Project Next.js siap jalan

Cek versi Node:

node -v

1. Build Project Next.js

Sebelum dijalankan di production, WAJIB build dulu:

npm run build

Jika sukses, akan muncul:

Compiled successfully

2. Install PM2

PM2 adalah process manager untuk Node.js.

npm install -g pm2

Cek:

pm2 -v

3. Jalankan Next.js dengan PM2

Gunakan next start, bukan dev.

Contoh menjalankan di port 8080:

pm2 start npm --name "next-portfolio" -- start -- -H 0.0.0.0 -p 8080

Cek status:

pm2 list

4. Auto Start Saat Server Reboot

Agar aplikasi otomatis hidup kembali:

pm2 save
pm2 startup

Jalankan command yang muncul di terminal.


5. Konfigurasi Environment Variable

Next.js tidak membaca .env.example.
Gunakan .env.local.

cp .env.example .env.local

Contoh env penting:

NEXT_PUBLIC_SITE_URL=http://localhost:8080
BETTER_AUTH_URL=http://localhost:8080

โš ๏ธ Setiap ubah ENV โ†’ build ulang wajib dilakukan.


6. Restart Setelah Update

npm run build
pm2 restart next-portfolio

Troubleshooting Umum

โŒ Website Tidak Bisa Diakses

  • Pastikan port terbuka (ufw allow 8080)

  • Pastikan app listen ke 0.0.0.0

โŒ Data Kosong / Failed to Fetch

  • .env.local belum diisi

  • ENV berubah tapi tidak build ulang

  • URL API masih localhost:3000

โŒ PM2 Online Tapi Web Mati

Cek log:

pm2 logs next-portfolio

Penutup

Dengan PM2, aplikasi Next.js jadi:

  • โœ… Stabil

  • โœ… Auto-restart

  • โœ… Siap production

Kalau kamu serius deploy Next.js ke server, PM2 adalah pilihan wajib.


โœจ Semoga bermanfaat dan selamat ngoding!