Kamu sudah nulis ratusan baris kode Node.js, database udah nyambung, API udah jalan mulus di localhost:3000 — tapi pas kamu kirim link ke teman, mereka cuma bisa jawab "eh, itu link apa sih, nggak bisa dibuka." 😅 Nah, inilah saatnya kamu belajar deploy Node.js ke server sungguhan! Di artikel ke-15 dari Seri Node.js From Zero to Zorro ini, kita bakal kupas tuntas cara deploy aplikasi Node.js menggunakan PM2 sebagai process manager, Nginx sebagai reverse proxy, dan beberapa pilihan layanan cloud hosting populer. Siap bikin aplikasimu live? Let's go! 🚀
⚙️ Kenapa PM2 Wajib Ada di Server Node.js Kamu?
Bayangkan kamu punya toko online yang ramai pengunjung, tapi kamu cuma taruh satu kasir — dan kalau kasir itu pingsan, toko langsung tutup. Nah, itulah yang terjadi kalau kamu jalankan Node.js pakai node app.js biasa. PM2 hadir seperti manajer toko yang selalu siap: kalau kasirnya pingsan, langsung digantikan!
PM2 (Process Manager 2) adalah tool production-grade untuk mengelola proses Node.js. Dia bisa auto-restart aplikasi kalau crash, menjalankan multiple instance (cluster mode), dan menyimpan log secara otomatis.
Jangan pernah deploy Node.js ke production tanpa process manager. Satu error kecil bisa bikin seluruh aplikasi mati — dan pengguna kamu nggak bisa ngapa-ngapain.
🛠️ Cara Install dan Pakai PM2 — Step by Step
npm install -g pm2
pm2 start app.js --name "my-app"
# Lihat status semua proses
pm2 list
# Lihat log real-time
pm2 logs
pm2 startup
# Simpan konfigurasi proses yang berjalan
pm2 save
pm2 start app.js -i max --name "my-app-cluster"
🌐 Setup Nginx Node.js sebagai Reverse Proxy
Kalau PM2 adalah manajer di dalam dapur, maka Nginx adalah pelayan di depan yang menerima semua tamu. Node.js secara default jalan di port 3000, bukan port 80 (HTTP) atau 443 (HTTPS). Nah, Nginx bertugas meneruskan request dari port 80/443 ke port 3000 — itulah yang disebut reverse proxy.
Nginx bukan hanya reverse proxy — dia juga bisa jadi load balancer, cache server, dan handler untuk static file seperti gambar & CSS. Gunakan Nginx untuk performa terbaik di production!
🔧 Konfigurasi Nginx untuk Node.js
sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
sudo nano /etc/nginx/sites-available/my-app
# Isi dengan konfigurasi berikut:
server {
listen 80;
server_name domainmu.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
sudo ln -s /etc/nginx/sites-available/my-app /etc/nginx/sites-enabled/
# Test konfigurasi
sudo nginx -t
# Restart Nginx
sudo systemctl restart nginx
Pastikan firewall server mengizinkan port 80 dan 443. Di Ubuntu dengan UFW: sudo ufw allow 'Nginx Full'. Jangan lupa juga allow port SSH agar tidak terkunci dari server!
☁️ Pilihan Hosting Aplikasi Node.js di Cloud
Sekarang pertanyaannya: server itu ada di mana? Jangan panik — kamu nggak perlu punya server fisik sendiri. Ada banyak layanan cloud hosting aplikasi Node.js yang bisa kamu pilih sesuai budget dan kebutuhan.
| ☁️ Platform | 💰 Harga Mulai | 🎯 Cocok Untuk | ⭐ Kemudahan |
|---|---|---|---|
| Railway | Gratis (5$/mo+) | Pemula, prototyping | ★★★★★ |
| Render | Gratis (7$/mo+) | Side project, startup | ★★★★★ |
| DigitalOcean Droplet | 6$/bulan | Developer berpengalaman | ★★★☆☆ |
| AWS EC2 | Free tier (pay/use) | Enterprise, skala besar | ★★☆☆☆ |
| Fly.io | Gratis (usage-based) | App global, low latency | ★★★★☆ |
Railway dan Render adalah favorit developer Indonesia karena deploy semudah push ke GitHub — cukup connect repo, dan aplikasinya langsung live! Cocok banget buat pemula yang belum terbiasa manage server manual.
🚂 Deploy Node.js ke Railway — Cara Paling Mudah!
Untuk pemula, Railway adalah pilihan terbaik. Kamu hanya perlu push kode ke GitHub dan Railway akan handle sisanya — termasuk deteksi otomatis bahwa kamu pakai Node.js!
package.json harus ada dengan script "start": "node app.js".DATABASE_URL, JWT_SECRET, dll. Jangan pernah hardcode secret di kode!"name": "my-node-app",
"version": "1.0.0",
"scripts": {
"start": "node app.js",
"dev": "nodemon app.js"
},
"engines": {
"node": ">=18.0.0"
},
"dependencies": {
"express": "^4.18.0"
}
}
- App mati saat ada uncaught error
- Tidak ada auto-restart
- Proses berhenti kalau SSH sesi ditutup
- Tidak ada log terpusat
- Single process = tidak scalable
- Auto-restart saat crash
- Tetap jalan walaupun SSH ditutup
- Startup otomatis saat server reboot
- Log terorganisir & mudah dimonitor
- Cluster mode untuk multi-CPU
Setelah Nginx jalan, pasang SSL gratis pakai Certbot: sudo apt install certbot python3-certbot-nginx lalu sudo certbot --nginx -d domainmu.com. Sertifikat diperbarui otomatis!
Seri Belajar Node.js: Node.js from Zero to Zorro
Artikel ini adalah bagian ke-15 dari 16 artikel dalam seri belajar Node.js lengkap dari nol hingga mahir. Klik link di bawah untuk melihat daftar isi lengkap.
🗂️ Lihat Daftar Isi Lengkap →
No comments:
Post a Comment