Cara Deploy NestJS di Namecheap Shared Hosting
Mendeploy NestJS ke shared hosting Namecheap tidak sama dengan mendeploy situs statis atau aplikasi PHP. Anda tidak bisa sekadar mengunggah file dan mengharapkan semuanya langsung berjalan.
Anda harus mengompilasi TypeScript ke JavaScript, menginstal dependensi produksi, dan menggunakan cPanel untuk mengelola prosesnya melalui Passenger.
Saya sempat menghadapi masalah folder kosong, file build yang hilang, dan koneksi Redis yang terputus sebelum akhirnya menemukan cara yang tepat. Berikut adalah alur kerja yang sudah terbukti.
Logika Pengaturan
Permintaan mengikuti jalur ini: • Browser atau klien API • Domain dan HTTPS • Apache / Passenger di Namecheap • app.js (jembatan) • dist/main.js (kode yang telah dikompilasi) • Aplikasi NestJS
Persyaratan Utama
• Akun hosting Namecheap dengan dukungan Node.js • Akses ke cPanel dan SSH/Terminal • Proyek NestJS yang berfungsi • Kredensial produksi untuk database atau Redis Anda
Langkah 1: Siapkan kode Anda
Jangan gunakan port yang ditulis secara manual (hard-coded). Di dalam src/main.ts, gunakan process.env.PORT:
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(process.env.PORT || 4000);
}
Langkah 2: Atur dependensi
Pindahkan paket runtime seperti @nestjs/common dan @nestjs/core ke bagian dependencies di package.json. Jika tetap berada di devDependencies, aplikasi Anda akan crash di lingkungan produksi.
Langkah 3: Build dan Buat Jembatan
Namecheap menjalankan JavaScript, bukan TypeScript.
• Jalankan npm run build secara lokal.
• Pastikan dist/main.js sudah ada.
• Buat file app.js di root proyek Anda dengan baris ini: require('./dist/main');
app.js ini bertindak sebagai entry point untuk Passenger.
Langkah 4: Strategi Deployment
Cara paling aman adalah melakukan build secara lokal dan mengunggah artefaknya:
• Unggah app.js
• Unggah folder dist/
• Unggah package.json dan package-lock.json
• Di Namecheap, jalankan: npm ci --omit=dev
Jangan pernah mengunggah folder node_modules lokal Anda. Modul native yang dibangun di komputer Anda tidak akan berfungsi di server Linux.
Langkah 5: Konfigurasi cPanel
Buka "Setup Node.js App" di cPanel:
• Pilih versi Node.js yang benar.
• Atur mode ke Production.
• Atur Application root ke folder Anda.
• Atur Application startup file ke app.js.
Langkah 6: Variabel Lingkungan (Environment Variables)
Tambahkan rahasia Anda (seperti DATABASE_URL atau API key) langsung di antarmuka Node.js cPanel. Anda juga dapat menggunakan file .env di root, tetapi pastikan file tersebut tidak berada di dalam folder dist. Restart aplikasi setelah melakukan perubahan.
Pemecahan Masalah Umum
• EADDRINUSE: Kemungkinan Anda memiliki proses manual yang sedang berjalan. Biarkan Passenger yang mengelola aplikasi.
• Cannot find module: Build Anda hilang atau jalur (path) di app.js salah.
• Redis connection failed: Periksa apakah Namecheap mengizinkan koneksi keluar (outbound) pada port Redis Anda. Anda mungkin perlu meminta dukungan Namecheap untuk membukanya.
Sumber: https://dev.to/adesoji/how-to-deploy-and-run-a-nestjs-app-on-namecheap-shared-hosting-5c45
