Hosting di Dewaweb Banyak Untungnya!

Zero-Click Deployment: Next.js to cPanel with GitHub Actions

Banyak developer yang menggunakan shared hosting atau cloud hosting berbasis cPanel sering menemui kendala ketika mencoba menjalankan perintah build langsung di server — entah karena keterbatasan resource, batas waktu eksekusi, atau konfigurasi environment yang tidak mendukung. Akibatnya, proses deploy aplikasi Node.js seperti Next.js menjadi rumit dan sering kali harus dilakukan secara manual: build di lokal, lalu upload hasilnya ke server.
Dalam artikel ini, kita akan membahas solusi lengkap dan modern untuk mengatasi masalah tersebut — yaitu Zero-Click Deployment menggunakan GitHub Actions. Pendekatan ini memungkinkan aplikasi Next.js dibuild otomatis di GitHub, lalu dikirim langsung ke cPanel melalui SSH, tanpa perlu melakukan build di server maupun upload manual. Hasilnya: proses deploy yang lebih cepat, stabil, dan sepenuhnya otomatis setiap kali kode di-push ke branch utama.
autodeploy-cpanel
Terminal
Error “WebAssembly.Instance(): Out of memory” pada cPanel terjadi karena proses build Next.js kehabisan RAM dan batasan pada share cloud hosting. Solusinya: jangan build di server, lakukan build di luar (GitHub Actions / lokal) → upload hasil build → jalankan npm run start. Hal ini adalah hal umum karena aplikasi yg berjalan di server share cloud hosting dan sering terjadi untuk aplikasi-aplikasi yang memerlukan build seperti NextJS.

🧩 1. Setup Aplikasi Node.js di cPanel

Masuk ke cPanel → Setup Node.js App lalu isi sesuai kebutuhan:
autodeploy-cpanel

🔐 2. Generate SSH Key di server cloud hosting

Agar GitHub dapat mengakses server cPanel melalui SSH, kamu perlu membuat key pair: Masuk ke cPanel kemudian ke menu Terminal
Terminal
autodeploy-cpanel
Saat diminta lokasi penyimpanan, tekan Enter saja. Setelah selesai, akan terbentuk dua file:
  • automate → private key
  • automate.pub → public key
file ini penting, karena akan di gunakan untuk melakukan koneksi antara runner github workflow ke server cPanel
Cara lain untuk generate SSH key melalui UI cPanel.

- Akses cPanel → SSH Access → Manage SSH Keys → Generate a New Key kemudian copy file yang di butuhkan untuk Secrets & Variables di GitHub Repository

⚙️ 3. Tambahkan Secrets & Variables di GitHub Repository

Masuk ke Repository Settings → Secrets and Variables → Actions lalu tambahkan data berikut:
  • DEPLOY_DIR: /home/username/autodeploy | sesuai dengan setup NodeJS ✅
  • NODE_ENV_PATH: source /home/username/nodevenv/autodeploy/22/bin/activate && cd /home/username/autodeploy | sesuai dengan setup NodeJS ✅
  • NODE_MODULES_DIR: /home/username/nodevenv/autodeploy/22/lib | di sesuaikan nama folder dan versi NodeJS yg digunakan (cek di file manager)
  • NODE_VERSION: 22
  • SSH_HOST: Input IP Shared Hosting
  • SSH_PASSPHRASE: Input password ketika generate SSH key atau kosongkan jika tidak ada
  • SSH_PRIVATE_KEY: Input isi file automate dari SSH key yang sudah di generate mulai dari -----BEGIN OPENSSH PRIVATE KEY----- sampai -----END OPENSSH PRIVATE KEY-----
  • SSH_USER: Input username hosting
autodeploy-cpanel

🧱 4. Buat File GitHub Workflow

n-v16
.github/workflows/deploy.yml

⚙️ Penjelasan:

  1. Menentukan nama workflow yang akan muncul di tab Actions di GitHub.
  2. Workflow akan berjalan secara otomatis setiap kali ada perubahan (push) ke branch main. Artinya, begitu kamu meng-commit kode terbaru ke branch main, proses deploy akan dimulai secara otomatis.
  3. Job bernama deploy akan dijalankan di lingkungan Ubuntu yang disediakan GitHub.
  4. Mengunduh seluruh isi repository ke runner agar bisa digunakan di langkah berikutnya.
  5. Menyiapkan Node.js versi 22 agar environment sesuai dengan proyek Next.js kamu.
  6. Menginstal semua package dari package-lock.json secara bersih dan cepat.
  7. Menjalankan perintah build (next build) untuk menghasilkan folder .next yang berisi hasil kompilasi aplikasi siap produksi.
  8. Menyalin hasil build (.next, public, dan file konfigurasi) ke folder sementara bernama build-output.
  9. Mengompres semua file hasil build menjadi satu file: build-output.tar.gz. File inilah yang nanti akan dikirim ke server cPanel.
  10. Mengirim file build-output.tar.gz ke server cPanel menggunakan SCP (Secure Copy Protocol). Kredensial SSH disimpan aman di GitHub Secrets.
  11. Mengirim folder node_modules langsung ke lokasi virtual environment Node.js di cPanel, agar dependency server tetap sinkron dengan proyek lokal.
    • Masuk ke environment Node.js di server (via source).
    • Ekstrak file build-output.tar.gz.
    • Hapus file zip untuk menjaga kebersihan direktori.
    • Restart aplikasi Node.js (biasanya digunakan oleh Passenger/Node App di cPanel).

Menjalankan Deployment dari Local.

  • Buka terminal pada vscode dimana project aplikasi berada
  • Pastikan pada terminal local sudah berada di branch main
  • Jalankan perintah berikut:
Terminal

✅ Hasil Akhir

  • Aplikasi Next.js otomatis dibangun dan dikirim ke server.
  • Tidak perlu lagi upload manual melalui File Manager atau FTP.
  • Deployment berjalan otomatis setiap kali kamu push ke branch main.
autodeploy-cpanel
autodeploy-cpanel

Setelah proses selesai, struktur direktori di server kamu akan tampak seperti ini:

app.js
M
next.config.ts
M
package.json
M
...
Dengan pendekatan Zero-Click Deployment, kamu tidak perlu lagi membangun project di server cPanel. Semua proses dilakukan otomatis di GitHub — mulai dari build, upload, hingga restart aplikasi. Hasilnya: stabilitas, kecepatan, dan workflow profesional bahkan di shared hosting environment.
Jika kamu sebelumnya selalu gagal menjalankan perintah npm run build di cPanel, artikel ini adalah jawaban tuntas untuk mengatasinya.
Enjoy 😉☕️
Hosting di Dewaweb Banyak Untungnya!