4.0 KiB
Deploy Setrip dengan PM2
Panduan ini untuk menjalankan aplikasi Next.js (setrip) di server Linux/VPS menggunakan PM2. Pastikan PostgreSQL sudah tersedia dan URL-nya sesuai dengan variabel lingkungan aplikasi.
Prasyarat
- Node.js 20.x (disarankan, selaras dengan
@types/nodedi proyek) - npm atau pnpm/yarn (contoh di bawah memakai npm)
- PM2 terpasang global:
npm install -g pm2 - Basis data PostgreSQL dan file
.envdi server (lihat bagian Lingkungan)
File PM2
Konfigurasi PM2 ada di root repositori: ecosystem.js.
Isinya menjalankan biner Next (next start) setelah build, mode fork, satu proses, PORT 3090 (sesuai alokasi server Anda). Ubah PORT di file tersebut atau lewat variabel lingkungan di server jika kebijakan port berubah.
Beberapa tutorial memakai nama ecosystem.config.js; PM2 menerima nama apa pun asal Anda menjalankan pm2 start <file>.
Berapa port yang dibutuhkan?
Untuk trafik HTTP/HTTPS ke aplikasi Next.js, cukup satu port yang didengarkan oleh next start — di setup ini 3090 (atau satu port lain yang Anda set).
PostgreSQL memakai port tersendiri (biasanya 5432) di mesin tempat database berjalan. Itu bukan “port kedua untuk publik” dari aplikasi web: koneksi DB terjadi dari server aplikasi ke database (localhost atau jaringan internal). Di firewall publik Anda biasanya hanya membuka 80/443 (reverse proxy) atau 3090 jika diakses langsung tanpa proxy.
Langkah deploy (pertama kali)
-
Clone repositori ke server (misalnya
/var/www/setrip). -
Masuk ke folder proyek dan pasang dependensi produksi:
cd /var/www/setrip npm ci -
Lingkungan — salin atau buat
.env/.env.productiondi server (jangan commit rahasia ke git). Minimal sesuai kebutuhan aplikasi Anda, contoh:DATABASE_URL— koneksi PostgreSQLNEXTAUTH_SECRET— string acak yang kuatNEXTAUTH_URL— URL publik aplikasi (harus cocok dengan yang dibuka browser), misalnyahttps://domain-anda.comatauhttp://host:3090jika tanpa HTTPS dan akses langsung ke port tersebut
-
Prisma — generate client dan terapkan migrasi (jika memakai migrasi):
npx prisma generate npx prisma migrate deploy -
Build Next.js:
npm run build -
Mulai dengan PM2:
pm2 start ecosystem.jsUntuk memakai blok
env_productiondi file ecosystem:pm2 start ecosystem.js --env production -
Simpan daftar proses agar bangkit lagi setelah reboot:
pm2 save pm2 startupIkuti perintah yang dikeluarkan PM2 (biasanya menyalin satu baris
sudo env ...).
Perintah PM2 yang sering dipakai
| Perintah | Keterangan |
|---|---|
pm2 status |
Status semua aplikasi |
pm2 logs setrip |
Log aplikasi bernama setrip |
pm2 reload setrip |
Reload tanpa downtime (berguna setelah deploy baru) |
pm2 restart setrip |
Restart proses |
pm2 stop setrip |
Menghentikan aplikasi |
pm2 delete setrip |
Menghapus aplikasi dari daftar PM2 |
Deploy ulang (update kode)
Di server, setelah git pull (atau salin artefak baru):
cd /var/www/setrip
npm ci
npx prisma generate
npx prisma migrate deploy
npm run build
pm2 reload setrip
Jika nama aplikasi di PM2 berbeda, ganti setrip dengan nama di ecosystem.js (name).
Reverse proxy (opsional)
Agar bisa HTTPS dan port 80/443, letakkan Nginx (atau Caddy) di depan aplikasi yang mendengarkan di 127.0.0.1:3090. Pastikan NEXTAUTH_URL memakai skema dan host yang sama dengan yang diakses pengguna.
Pemecahan masalah
- 502 / tidak terhubung — cek
pm2 logs setrip, pastikan PostgreSQL dapat dijangkau dari server, danPORTtidak bentrok dengan layanan lain. - Error Prisma — pastikan
npx prisma generatedijalankan setelahnpm cidi setiap deploy, danDATABASE_URLbenar. - NextAuth —
NEXTAUTH_URLharus persis URL publik (termasukhttps://).