Files
setrip/deployment.md
T

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/node di proyek)
  • npm atau pnpm/yarn (contoh di bawah memakai npm)
  • PM2 terpasang global: npm install -g pm2
  • Basis data PostgreSQL dan file .env di 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)

  1. Clone repositori ke server (misalnya /var/www/setrip).

  2. Masuk ke folder proyek dan pasang dependensi produksi:

    cd /var/www/setrip
    npm ci
    
  3. Lingkungan — salin atau buat .env / .env.production di server (jangan commit rahasia ke git). Minimal sesuai kebutuhan aplikasi Anda, contoh:

    • DATABASE_URL — koneksi PostgreSQL
    • NEXTAUTH_SECRET — string acak yang kuat
    • NEXTAUTH_URL — URL publik aplikasi (harus cocok dengan yang dibuka browser), misalnya https://domain-anda.com atau http://host:3090 jika tanpa HTTPS dan akses langsung ke port tersebut
  4. Prisma — generate client dan terapkan migrasi (jika memakai migrasi):

    npx prisma generate
    npx prisma migrate deploy
    
  5. Build Next.js:

    npm run build
    
  6. Mulai dengan PM2:

    pm2 start ecosystem.js
    

    Untuk memakai blok env_production di file ecosystem:

    pm2 start ecosystem.js --env production
    
  7. Simpan daftar proses agar bangkit lagi setelah reboot:

    pm2 save
    pm2 startup
    

    Ikuti 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, dan PORT tidak bentrok dengan layanan lain.
  • Error Prisma — pastikan npx prisma generate dijalankan setelah npm ci di setiap deploy, dan DATABASE_URL benar.
  • NextAuthNEXTAUTH_URL harus persis URL publik (termasuk https://).