Kamal adalah alat deployment yang berjalan di mesin Anda sendiri atau di runner CI, bukan di server. Jadi โpersyaratan VPS Kamalโ sebenarnya pertanyaan tentang mesin yang menjadi tujuan Kamal: mesin itu harus menjalankan kontainer aplikasi Anda, kamal-proxy, aksesori apa pun yang Anda deklarasikan, dan beberapa hari image lama yang disimpan untuk rollback.
Biaya sumber daya Kamal sendiri di host adalah nol. Yang perlu diukur adalah selebihnya.
Apa yang Memakai Sumber Daya di Host
Setelah kamal setup, server menjalankan tiga hal:
- kamal-proxy, proxy HTTP kecil berbahasa Go yang memegang port 80 dan 443
- kontainer aplikasi Anda, satu set untuk tiap peran di
config/deploy.yml - aksesori โ Postgres, Redis, atau apa pun yang Anda deklarasikan
Hanya dua yang di tengah yang berpengaruh pada ukuran. kamal-proxy adalah satu berkas biner statis dan jejaknya lenyap di samping aplikasi sungguhan.
RAM
Angka yang sering menjebak bukan memori pada kondisi normal, melainkan tumpang tindih saat deploy. Kamal menjalankan kontainer baru sementara yang lama masih melayani trafik, dan baru menghentikan yang lama setelah yang baru lolos health check. Karena itu puncak memori adalah pemakaian normal Anda ditambah kira-kira satu salinan kontainer aplikasi.
- Batas praktis: 2 GB, untuk aplikasi kecil tanpa basis data terpisah
- Lapang: 4 GB, yang menutupi aplikasi web biasa plus Postgres dan tumpang tindih deploy
- Tambahkan swap pada host 4 GB. Host yang mulai melakukan swap di tengah deploy bisa cukup lambat sampai melewatkan jendela health check, dan deploy pun di-rollback seolah tanpa sebab.
Kalau Postgres Anda jalankan sebagai aksesori Kamal alih-alih layanan terkelola, hitung porsinya secara terpisah. Konsumen terbesar di mesin itu adalah Postgres, bukan Kamal.
CPU
Batas bawah yang masuk akal adalah dua vCPU, dengan alasan yang tidak ada hubungannya dengan beban normal: selama deploy, host secara bersamaan menarik image, menjalankan kontainer, menjalankan health check, dan melayani trafik dari kontainer lama. Pada satu vCPU, perebutan itu memperpanjang jendela deploy.
- Minimum: 1 vCPU, bisa dipakai untuk aplikasi bertrafik rendah kalau Anda menerima deploy yang lebih lambat
- Disarankan: 2 vCPU
- Membangun image di VPS itu sendiri adalah satu-satunya kasus yang benar-benar butuh lebih. Kalau laptop Anda arm64 dan VPS adalah satu-satunya mesin amd64 yang Anda punya, proses build akan memakai semua core yang Anda berikan.
Penyimpanan
Di sinilah perilaku Kamal benar-benar mengubah angkanya. Kamal menyimpan kontainer dan image lama di server supaya kamal rollback bisa menjalankan versi sebelumnya tanpa menarik dari registry, dan membersihkannya setelah tiga hari secara bawaan.
Jadi disk harus menampung:
- Data dan volume aplikasi Anda sendiri
- Image saat ini plus kira-kira tiga hari versi sebelumnya
- Lapisan dasar bersama, yang hanya disimpan sekali berapa pun jumlah versi yang Anda tahan
Image 1 GB yang di-deploy beberapa kali sehari aman di 40 GB NVMe. Image 3 GB pada disk 25 GB akan memenuhinya dalam sepekan. Pola kegagalannya layak diketahui: disk penuh merusak deploy berikutnya, bukan yang mengisinya, sehingga sebab dan gejalanya terpisah beberapa hari.
Kalau Anda sering deploy, kamal prune all membersihkan tumpukan sesuai permintaan tanpa menunggu jendela tiga hari.
Pilihan Penyedia VPS dan Harganya
| Penyedia | Harga per Bulan | Fitur Menonjol | Tautan Afiliasi |
|---|---|---|---|
| Contabo | โฌ5,99 | Disk 400 GB, sehingga riwayat image tidak pernah jadi batasan | Contabo |
| Hetzner Cloud | โฌ5,49 | 2 vCPU / 4 GB / 40 GB NVMe, snapshot sebelum deploy berisiko | Hetzner Cloud |
| DigitalOcean | $6 USD | Dokumentasi paling jelas untuk penyiapan host yang dilewati Kamal | DigitalOcean |
| Vultr | $5 USD | Pilihan region, berguna saat aplikasi perlu dekat dengan penggunanya | Vultr |
| Linode (Akamai Cloud) | $5 USD | Harga yang mudah diprediksi dan jaringan yang lugas | Linode |
Untuk tinjauan menyeluruh atas pilihan yang ada, lihat perbandingan VPS lengkap kami.
DigitalOcean adalah titik masuk termudah, karena Kamal sengaja tidak mengelola host di luar Docker โ aturan firewall, swap, dan pembaruan otomatis tetap urusan Anda, dan dokumentasi DigitalOcean mencakup ketiganya. Hetzner memberi lebih banyak RAM dan disk per euro kalau Anda nyaman melakukan penyiapan itu sendiri.
Tips Deployment Praktis
- Buka hanya port 22, 80, dan 443 di server. kamal-proxy mengakhiri TLS sendiri, jadi tidak ada lagi yang perlu dijangkau dari luar.
- Periksa
kamal app containerssebelum mengandalkan rollback; versi tujuannya harus masih ada di disk. - Pantau sisa ruang disk dengan mekanisme peringatan yang sama seperti untuk memori. Inilah kegagalan yang datang tanpa suara.
- Men-deploy aplikasi kedua ke host yang sama didukung di Kamal 2 โ kamal-proxy merutekan berdasarkan hostname โ tetapi itu melipatgandakan jumlah kontainer dan riwayat image, jadi ukur disk untuk keduanya.
Kesimpulan
Untuk kebanyakan deployment satu aplikasi, 2 vCPU, 4 GB RAM, dan 40 GB SSD atau NVMe menyisakan ruang untuk aplikasi, basis datanya, tumpang tindih deploy, dan tiga hari image rollback. Naikkan disk sebelum menaikkan RAM: tekanan memori memberi tahu dirinya sendiri, penumpukan image tidak. Untuk pilihan lain, telusuri perbandingan VPS lengkap kami dan temukan yang paling cocok dengan deployment Anda.
Frequently asked questions
Berapa RAM yang dibutuhkan VPS untuk menjadi target deploy Kamal?
Cukup untuk aplikasi Anda, aksesorinya, dan satu salinan tambahan kontainer aplikasi. Selama deploy, kontainer lama dan baru berjalan bersamaan, jadi puncak memori kira-kira pemakaian normal ditambah satu kontainer aplikasi. Pada host 4 GB dengan aplikasi 1 GB itu terasa lapang; tambahkan swap kalau terasa mepet.
Apakah Kamal sendiri memakai CPU atau memori di server?
Tidak. Kamal adalah gem yang Anda jalankan dari mesin sendiri atau dari CI, dan ia berhenti begitu deploy selesai. Satu-satunya tambahan permanen di host adalah kamal-proxy, proxy HTTP kecil berbahasa Go yang pemakaiannya bisa diabaikan di samping aplikasi sungguhan.
Kenapa disk host Kamal lama-lama habis?
Kamal menahan kontainer dan image lama supaya rollback tidak perlu menarik dari registry, lalu membersihkannya setelah tiga hari secara bawaan. Deploy yang sering dengan image besar menumpuk cepat, dan disk biasanya penuh di tengah deploy berikutnya, bukan pada deploy yang menyebabkannya.