Hosting di Dewaweb Banyak Untungnya!

Implementasi CI/CD dari Local ke cPanel Menggunakan GitHub Actions dan SSH

Mengapa Perlu CI/CD? 🤔

Proses pengembangan modern menuntut kecepatan, konsistensi, dan keamanan.
Namun, masih banyak developer yang melakukan upload manual via FTP, yang sering kali menghadapi kendala seperti:
  • 🚫 Firewall blocking pada port FTP
  • ⏱️ Connection timeout saat transfer file besar
  • ⚠️ Risiko keamanan akibat kredensial FTP tersimpan dalam teks biasa
Solusinya?
Gunakan CI/CD berbasis SSH melalui GitHub Actions, yang otomatis mendeteksi perubahan pada branch main dan langsung melakukan deploy ke server cPanel.
CI-CD to cPanel

Persiapan Awal 🛠️

Sebelum memulai, pastikan Anda memiliki:

Langkah 1: Mengaktifkan SSH di cPanel 🔐

  1. Login ke cPanel Anda.
  2. Navigasi ke "SSH Access" di bagian Security.
  3. Klik "Manage SSH Keys".
  4. Pilih "Generate a New Key".
    • Masukkan nama kunci (misal: github-actions-key).
    • Pilih Key Type: RSA.
    • Pilih Key Size: 2048 atau 4096.
    • Masukkan passphrase (opsional, tapi disarankan).
  5. Klik "Generate Key".
  6. Setelah kunci dibuat, klik "Manage Authorization" dan pilih "Authorize" untuk mengaktifkan kunci tersebut.
  7. Unduh kunci private dengan mengklik "View/Download" pada bagian Private Keys.
    • Simpan kunci ini dengan aman, karena akan digunakan di GitHub Actions.
    • Jika cPanel hanya menyediakan kunci publik, Anda bisa membukanya dan copy private key melalui terminal.
    • Salin isi kunci private (biasanya di ~/.ssh/id_rsa atau dari tampilan di cPanel).
CI-CD to cPanel
CI-CD to cPanel
  1. copy isi kunci private mulai dari -----BEGIN OPENSSH PRIVATE KEY----- sampai -----END OPENSSH PRIVATE KEY-----
  2. cek koneksi SSH dari server cPanel ke GitHub
ssh -T git@github.com
Jika berhasil, Anda akan melihat pesan seperti ini:
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
Jika gagal, pastikan kunci SSH sudah benar dan terotorisasi di GitHub. Ikuti langkah di GitHub Docs untuk troubleshooting dan ssh key setup.
  • copy isi kunci public mulai dari ssh-ed25519 AAAAC... sampai ... user@hostname
  • tambahkan kunci public ke GitHub dengan cara masuk ke Settings > SSH and GPG keys > New SSH key
  • beri nama pada key tersebut, misal cpanel-deploy-key
  • paste isi kunci public ke kolom key
  • klik tombol Add SSH key
    Setelah ini kunci SSH sudah siap digunakan untuk autentikasi.
CI-CD to cPanel
CI-CD to cPanel

Langkah 2: Menyiapkan Repository GitHub 📂

  1. Buka repository GitHub Anda.
  2. Navigasi ke tab Settings > Secrets and variables > Actions.
  3. Klik "New repository secret".
  4. Tambahkan secret berikut:
    • Name: SSH_PRIVATE_KEY
    • Value: Paste isi kunci private yang sudah Anda salin dari cPanel
  5. Klik "Add secret".
  6. Tambahkan secret lain untuk informasi koneksi:
    • Name: SSH_HOST
    • Value: Alamat IP atau domain server cPanel Anda (misal: example.com atau IP_ADDRESS)
    • Name: SSH_USERNAME
    • Value: Username SSH Anda (biasanya sama dengan username cPanel)
    • Name: SSH_PASSPHRASE (jika Anda menggunakan passphrase saat membuat kunci)
    • Value: Passphrase kunci SSH Anda (jika ada)
    • Name: SSH_PARENT_DIR
    • Value: Direktori tujuan di server cPanel (misal: public_html atau home/username/public_html)
CI-CD to cPanel

Langkah 3: Membuat Workflow GitHub Actions 🚀

  1. Di repository GitHub Anda, buat folder .github/workflows jika belum ada.
  2. Buat file baru bernama deploy-to-cpanel.yml di dalam folder tersebut.
  3. Salin dan tempel kode berikut ke dalam file deploy-to-cpanel.yml:
.github/workflows/deploy.yml

Berikut Struktur Kode di local - simple project CI/CD

CI-CD to cPanel

Langkah 4: Proses Deployment Berjalan (Automasi) 🔄

  1. Simpan perubahan pada file deploy-to-cpanel.yml dan lakukan commit ke branch main.
  2. Setiap kali Anda melakukan push ke branch main, GitHub Actions akan otomatis menjalankan workflow ini.
  3. Anda dapat memantau proses deployment di tab Actions pada repository GitHub Anda.
CI-CD to cPanel

Kesimpulan 🎉

Dengan mengikuti langkah-langkah di atas, Anda telah berhasil mengatur CI/CD otomatis dari GitHub ke cPanel menggunakan SSH. Metode ini tidak hanya mengatasi masalah firewall dan timeout yang sering terjadi pada FTP, tetapi juga meningkatkan keamanan dan efisiensi proses deployment Anda. Selamat mencoba dan semoga sukses dalam pengembangan proyek Anda! 🚀
Hosting di Dewaweb Banyak Untungnya!