Deploy GitHub Private Repo ke Server Menggunakan SSH Key
Panduan mengamankan proses pull repository private dari GitHub ke dalam VPS. Membahas pengaturan SSH deploy key, hak akses file di Linux, hingga alasan mengapa file .env tidak boleh di-commit.
Mengapa Private Repo Butuh Autentikasi Khusus?
Saat Anda mengembangkan aplikasi komersial, kodenya disimpan di repositori pribadi (private repo). Ini berarti GitHub memblokir siapa pun yang tidak diundang. Konsekuensinya, server VPS Anda juga tidak bisa melakukan 'git clone' atau 'git pull' tanpa membuktikan identitasnya terlebih dahulu.
Jika menggunakan jalur HTTPS standar, Anda akan terus-menerus diminta memasukkan Personal Access Token (PAT) setiap kali ada pembaruan kode. Metode ini menyulitkan proses deployment otomatis. Penggunaan protokol SSH jauh lebih modern dan aman karena autentikasi dilakukan menggunakan sepasang kunci kriptografi tanpa interaksi manusia secara manual.
Deploy Keys vs Personal Access Tokens (PAT)
Ketika menghubungkan server ke private repo, Anda memiliki dua opsi utama: Deploy Keys atau PAT. Keduanya memiliki fungsi keamanan dan operasional yang berbeda.
| Fitur | Deploy Keys | Personal Access Tokens (PAT) |
|---|---|---|
| Cakupan Akses | Terbatas pada SATU repositori spesifik. | Bisa untuk banyak repo dan organisasi. |
| Identitas | Terkait dengan repo, bukan akun pengguna. | Terkait erat dengan akun GitHub Anda. |
| Keamanan | Sangat aman. Jika bocor, hanya 1 repo yang rentan. | Berisiko tinggi jika bocor (seluruh akun bisa diakses). |
| Penggunaan Terbaik | Akses server produksi, CI/CD. | Akses API, otomasi berbasis pengguna. |
Langkah Menyiapkan SSH Deploy Key
Untuk menerapkan metode keamanan terbaik (least privilege), berikut adalah langkah-langkah menyiapkan Deploy Key di VPS Anda:
- Generate Kunci SSH: Buat sepasang kunci (public/private) tipe ed25519 di terminal server.
- Tambahkan ke GitHub: Buka pengaturan repositori (Settings > Deploy keys), dan masukkan public key Anda.
- Hak Akses (Opsional): Centang 'Allow write access' HANYA JIKA server perlu melakukan push/commit ke repo. Jika hanya untuk pull, biarkan tidak dicentang.
- Konfigurasi SSH: Jika Anda memiliki banyak repo di satu server, atur file `~/.ssh/config` untuk memetakan key spesifik ke repo spesifik.
# Membuat SSH Key baru khusus untuk deploy
ssh-keygen -t ed25519 -C "deploy-key-portofolio"
# Melihat isi public key untuk disalin ke GitHub
cat ~/.ssh/id_ed25519.pub
# Mengetes koneksi ke GitHub
ssh -T git@github.comRisiko dan Hak Akses (Permission) di Linux
Karena private key adalah 'kartu pas' yang bisa melewati keamanan kata sandi, penjagaannya harus sangat ketat. Di sistem operasi Linux, klien SSH akan menolak beroperasi jika ia mendeteksi file private key bisa dibaca oleh pengguna lain di server.
# File private key tidak boleh diakses oleh user/group lain
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pubPerintah `chmod 600` secara eksplisit memastikan bahwa hanya pemilik file (owner) yang memiliki izin untuk membaca (read) dan menulis (write) terhadap file private key tersebut.
Krusial: .env Tidak Boleh Ikut Commit
Satu kesalahan fatal yang masih sering terjadi adalah mengikutsertakan file .env (environment variables) ke dalam commit Git. File .env biasanya memuat kredensial krusial seperti URL database, API key layanan pihak ketiga, atau rahasia enkripsi JWT.
Repositori Git hanya bertugas melacak riwayat perubahan kode sumber, BUKAN melacak kredensial rahasia (secrets) lingkungan server.
Oleh karena itu, selalu pastikan `.env` terdaftar di dalam `.gitignore`. Ketika melakukan pull kode baru ke server VPS, file `.env` yang ada di server (yang sudah Anda buat dan konfigurasikan manual sebelumnya) tidak akan pernah tertimpa atau terpengaruh oleh commit baru.
Kesulitan Men-deploy Aplikasi Anda?
Menyewa server Linux sering kali rumit jika tidak terbiasa. Mari diskusikan bantuan setup VPS untuk aplikasi Anda.
Konsultasi Deployment