{"id":39183,"date":"2024-08-10T14:52:54","date_gmt":"2024-08-10T07:52:54","guid":{"rendered":"\/tutorial\/?p=39183"},"modified":"2025-12-18T23:28:27","modified_gmt":"2025-12-18T16:28:27","slug":"cara-deploy-aplikasi-web-menggunakan-kamal","status":"publish","type":"post","link":"\/id\/tutorial\/cara-deploy-aplikasi-web-menggunakan-kamal","title":{"rendered":"Cara Deploy Aplikasi Web Menggunakan Kamal untuk Proses yang Efektif"},"content":{"rendered":"<p>Proses deploy aplikasi web dalam container terkadang memang terlihat cukup rumit, apalagi kalau Anda belum memiliki pemahaman teknis tingkat lanjut. Untungnya, Kamal bisa membantu mempermudah prosesnya sehingga alur kerja deployment aplikasi web Anda menjadi lebih efisien dan praktis.<\/p><p>Di artikel ini, Anda akan mempelajari cara deploy aplikasi web menggunakan Kamal di <a href=\"\/id\/tutorial\/apa-itu-vps\">VPS (virtual private server)<\/a>. Kami juga akan membagikan tips untuk meningkatkan efisiensi proses deployment aplikasi Anda.<\/p><p>Setelah membaca tutorial ini, Anda pun bisa mulai menggunakan Kamal untuk membantu menangani berbagai proyek Anda dengan lebih mudah. Yuk, simak panduannya di bawah ini!<\/p><h2 class=\"wp-block-heading\" id=\"h-apa-itu-kamal\">Apa Itu Kamal?<\/h2><p>Kamal adalah tool deployment yang berguna untuk meluncurkan aplikasi web secara efisien. Tool ini mengintegrasikan layanan dan operasi penting dalam alur kerja yang praktis sehingga proses deployment aplikasi web bisa dilakukan dengan lebih mudah dan minim risiko error.<\/p><p>Dari segi fungsi, Kamal dirancang untuk mengelola dan mengotomatiskan deployment aplikasi web sehingga pengguna tidak perlu repot menyiapkan server atau mengelola layanan secara manual.<\/p><p>Developer pun bisa membuat dan mengupdate aplikasi webnya tanpa biaya tambahan untuk hal-hal terkait deployment.<\/p><p>Kamal juga mendukung deployment di server fisik hingga single VM. Tool ini memungkinkan deployment tanpa downtime, restart bergilir, asset bridging, remote build, dan pengelolaan layanan aksesori yang menyeluruh.<\/p><p>Dengan Kamal, Anda bisa meluncurkan aplikasi web dengan mudah, mengonfigurasi server, mengelola database, dan menangani penyeimbangan traffic. Tool ini mendukung beragam sistem sehingga bisa digunakan untuk meluncurkan aplikasi web di berbagai platform.<\/p><h2 class=\"wp-block-heading\" id=\"h-apa-keunggulan-kamal-untuk-deploy-aplikasi-web\">Apa Keunggulan Kamal untuk Deploy Aplikasi Web?<\/h2><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img decoding=\"async\" width=\"1024\" height=\"476\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2024\/08\/homepage-kamal.png\/public\" alt=\"tampilan homepage kamal\" class=\"wp-image-39185\" style=\"width:840px;height:auto\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2024\/08\/homepage-kamal.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2024\/08\/homepage-kamal.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2024\/08\/homepage-kamal.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2024\/08\/homepage-kamal.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div><p>Kamal menyediakan berbagai fungsi untuk deployment aplikasi web bagi developer dan bisnis. Berikut beberapa keunggulan Kamal:<\/p><ul class=\"wp-block-list\">\n<li><strong>Praktis<\/strong> &ndash; Kamal difokuskan untuk memfasilitasi deployment sehingga tidak terlalu rumit dibandingkan dengan tool lainnya. Tool ini membantu menyederhanakan proses deployment aplikasi, yang bisa dilakukan hanya dengan menggunakan beberapa <a href=\"https:\/\/www.hostinger.com\/tutorials\/linux-commands\">perintah Linux.<\/a><\/li>\n\n\n\n<li><strong>Automasi <\/strong>&ndash; menyediakan automasi untuk deployment, Kamal bisa membantu mempersingkat alur kerja Anda. Tool ini mengotomatiskan tugas mulai dari update hingga upgrade, serta memastikannya diselesaikan dengan cepat dan konsisten. Hal ini membantu mengurangi proses manual sehingga pengembangan bisa dilakukan dengan lebih optimal.<\/li>\n\n\n\n<li><strong>Stabil dan andal <\/strong>&ndash; dalam hal rilis aplikasi, Kamal bisa memastikan proses yang stabil. Proses deployment yang terstruktur mengurangi risiko error yang mungkin terjadi pada deployment manual, memastikan aplikasi web Anda berjalan dengan lancar dan minim masalah.<\/li>\n\n\n\n<li><strong>Kesesuaian <\/strong>&ndash; Kamal sangat kompatibel dengan sistem VPS Linux. Artinya, Anda bisa menggunakannya secara lebih maksimal untuk meluncurkan aplikasi di hosting VPS Linux.<\/li>\n<\/ul><h2 class=\"wp-block-heading\" id=\"h-cara-deploy-aplikasi-web-menggunakan-kamal\">Cara Deploy Aplikasi Web Menggunakan Kamal<\/h2><p>Di bagian ini, Anda akan mempelajari cara menggunakan Kamal untuk mempermudah proses deployment aplikasi web.<\/p><h3 class=\"wp-block-heading\" id=\"h-1-persiapkan-proses-deployment\">1. Persiapkan Proses Deployment<\/h3><p>Baik menggunakan perangkat lokal maupun server virtual, Anda perlu mempersiapkan beberapa hal lebih dulu demi kelancaran proses deployment. Dalam contoh ini, kami akan menggunakan <a href=\"\/id\/hosting-vps\">VPS hosting dari Hostinger<\/a> untuk menyiapkan sistem deployment aplikasi web.<\/p><p>VPS Hostinger menyediakan server yang canggih dan memadai untuk berbagai kebutuhan deployment Anda. VPS ini memiliki prosedur keamanan terbaik, upgrade yang mudah seiring dengan berkembangnya aplikasi, serta Kodee, asisten AI gratis untuk mempermudah proses pengembangan dan deployment Anda.<\/p><figure class=\"wp-block-image size-large\"><a href=\"\/id\/hosting-vps\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-VPS-hosting_in-text-banner.png\/public\" alt=\"\" class=\"wp-image-29630\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-VPS-hosting_in-text-banner.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-VPS-hosting_in-text-banner.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-VPS-hosting_in-text-banner.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-VPS-hosting_in-text-banner.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><p>Setelah menyiapkan VPS, <a href=\"\/id\/tutorial\/cara-menggunakan-putty-untuk-ssh-ke-vps\">akses server menggunakan PuTTY<\/a> atau SSH client lainnya. Kemudian, update package Linux dengan <a href=\"\/id\/tutorial\/cara-menggunakan-command-ssh\">perintah SSH<\/a> berikut ini:<\/p><pre class=\"wp-block-preformatted\">sudo apt-get update &amp;&amp; sudo apt-get upgrade<\/pre><p>Selanjutnya, siapkan sistem software yang diperlukan oleh aplikasi web Anda, yang mungkin termasuk menginstal web server seperti Apache atau NGINX dan menyiapkan database seperti MySQL atau PostgreSQL.<\/p><p>Anda juga perlu menerapkan langkah-langkah keamanan server, seperti firewall dan kunci SSH untuk akses yang aman.<\/p><p>Apabila akan mengembangkan aplikasi Rails, pastikan Anda sudah menginstal framework Ruby on Rails. Atau, Anda bisa <a href=\"\/id\/tutorial\/cara-install-docker-ubuntu\">menginstal Docker<\/a> dan mengelola container untuk aplikasi Anda.<\/p><h3 class=\"wp-block-heading\" id=\"h-2-instal-dan-mulai-deployment-dengan-kamal\">2. Instal dan Mulai Deployment dengan Kamal<\/h3><p>Setelah sistem Anda siap, mari lanjutkan dengan menginstal Kamal. Apabila menggunakan Ruby, instal Kamal secara global pada VPS Linux menggunakan perintah berikut:<\/p><pre class=\"wp-block-preformatted\">gem install kamal<\/pre><p>Langkah ini dimaksudkan agar Kamal bisa diakses dari direktori mana pun di server Anda.<\/p><p>Apabila lebih menyukai sistem container untuk deployment Kamal, ambil (pull) image Docker dan tetapkan alias dalam file konfigurasi shell Anda. Dengan demikian, Anda bisa menggunakan perintah Kamal tanpa menginstal dependensi pada server.<\/p><p>Selanjutnya, buka direktori <strong>config<\/strong> dan buka file <strong>deploy.yml<\/strong>. Di sini, Anda bisa menentukan informasi seperti tahapan deployment, alamat IP publik, dan URL repositori untuk kontrol versi dengan Kamal.<\/p><p>File <strong>deploy.yml <\/strong>juga akan menyertakan informasi registri. Apabila menggunakan Docker Hub, Anda tidak perlu menentukan server karena sudah diatur secara default.<\/p><p>Berikut contoh yang bisa disertakan dalam <strong>deploy.yml<\/strong>:<\/p><pre class=\"wp-block-preformatted\"># Your web app name. Used to uniquely configure containers.\nservice: hey\n# Your image host or container image name\nimage: 37s\/hey\nservers:\n  - 192.168.0.1\n  - 192.168.0.2\nregistry:\n  # The container registry server, if you're not using Docker Hub\n  # server: ghcr.io \/ ...\n  username: registry-user-name\n  password:\n    secure: KAMAL_REGISTRY_PASSWORD\nenv:\n  secret:\n    secure: RAILS_MASTER_KEY\n#Configure a custom healthcheck\nhealthcheck:\n  path: \/healthz\n  port: 4000\n  max_attempts: 7\n  interval: 20s<\/pre><p>Jangan lupa untuk menjaga kredensial Anda tetap aman dengan mengganti <strong>KAMAL_REGISTRY_PASSWORD <\/strong>dengan token akses registri Docker Anda.<\/p><p>Setelah file konfigurasi siap, saatnya memulai proses deployment. Untuk deployment awal, jalankan:<\/p><pre class=\"wp-block-preformatted\">kamal setup<\/pre><p>Perintah ini akan mempersiapkan server Anda dengan membuat direktori, mengatur izin, dan melakukan tugas-tugas lain yang diperlukan.<\/p><p>Untuk deployment selanjutnya, gunakan:<\/p><pre class=\"wp-block-preformatted\">kamal deploy<\/pre><p>Perintah ini menjalankan tugas-tugas yang diuraikan dalam file <strong>deploy.yml<\/strong>, seperti update kode, migrasi, dan memulai ulang layanan.<\/p><h3 class=\"wp-block-heading\" id=\"h-3-sertakan-file-environment\">3. Sertakan File Environment<\/h3><p>Untuk meluncurkan aplikasi web secara efektif menggunakan Kamal, Anda harus mengelola file environment dengan cermat. File-file ini berisi variabel environment yang sangat penting untuk mengonfigurasi aplikasi Anda dalam berbagai situasi pengembangan, pengujian, dan produksi.<\/p><p>Untuk alasan keamanan, file <strong>ENV<\/strong> aplikasi tidak boleh disertakan dalam kontrol versi. Anda bisa memanfaatkan fitur environment management Kamal yang canggih untuk mentransfer file-file ini ke server dengan aman.<\/p><p>Mulailah dengan menyimpan file environment Anda di lokasi yang aman. Anda bisa menggunakan VPS Hostinger untuk mengelola variabel environment aplikasi secara efektif, memastikan variabel tersebut diterapkan dengan aman dan dikelola secara konsisten selama deployment.<\/p><p>Selanjutnya, manfaatkan perintah <strong>kamal env push <\/strong>untuk mentransfer file ke server dengan aman.<\/p><p>Kapan pun Anda menambahkan variabel environment baru atau memodifikasi variabel environment yang sudah ada dalam file <strong>ENV<\/strong>, jangan lupa untuk mengirimkan (push) perubahan ini ke server remote menggunakan <strong>kamal env push<\/strong>.<\/p><p>Sebelum menjalankan perintah <strong>kamal deploy<\/strong>, selesaikan langkah ini untuk memastikan variabel yang telah diperbarui dimasukkan ke container aplikasi Anda.<\/p><p>Proses ini sangat penting untuk menjalankan layanan dan <a href=\"\/id\/tutorial\/docker-container\">container Docker<\/a> secara optimal, karena akan mengikuti konfigurasi yang ditetapkan oleh variabel-variabel environment.<\/p><h3 class=\"wp-block-heading\" id=\"h-4-jalankan-perintah-di-server\">4. Jalankan Perintah di Server<\/h3><p>Guna mempermudah manajemen aplikasi web Anda, Kamal menyediakan fitur yang mudah digunakan untuk menjalankan perintah secara efisien di seluruh infrastruktur server.<\/p><p>Misalnya, untuk menjalankan perintah di semua server Anda guna mengecek versi Ruby, Anda bisa menjalankan:<\/p><pre class=\"wp-block-preformatted\">kamal app exec 'ruby -v'<\/pre><p>Outputnya akan mengonfirmasi versi Ruby pada setiap host aplikasi, misalnya:<\/p><pre class=\"wp-block-preformatted\">App Host: 192.168.0.1\nruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) [x86_64-linux]\nApp Host: 192.168.0.2\nruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) [x86_64-linux]<\/pre><p>Untuk menargetkan server utama saja, gunakan perintah berikut:<\/p><pre class=\"wp-block-preformatted\">kamal app exec --primary 'cat .ruby-version'<\/pre><p>Apabila perlu menjalankan perintah terkait Rails di semua server, seperti memeriksa pengaturan environment Rails, jalankan perintah berikut:<\/p><pre class=\"wp-block-preformatted\">App Host: 192.168.0.1\nAbout your application's environment\nRails version:             7.1.0.alpha\nRuby version:              ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) [x86_64-linux]\nRubyGems version:          3.3.26\nRack version:              2.2.5\nMiddleware:                ActionDispatch::HostAuthorization, Rack::Sendfile, ActionDispatch::Static, ActionDispatch::Executor, Rack::Runtime, Rack::MethodOverride, ActionDispatch::RequestId, ActionDispatch::RemoteIp, Rails::Rack::Logger, ActionDispatch::ShowExceptions, Action Dispatch::DebugExceptions, Action Dispatch::Callbacks, Action Dispatch::Cookies, Action Dispatch::Session::CookieStore, Action Dispatch::Flash, Action Dispatch::ContentSecurityPolicy::Middleware, Action Dispatch::PermissionsPolicy::Middleware, Rack::Head, Rack::ConditionalGet, Rack::ETag, Rack::TempfileReaper\nApplication root:          \/rails\nEnvironment:               production\nDatabase adapter:          sqlite3\nDatabase schema version:   20221231233303<\/pre><p>Untuk tugas-tugas yang lebih interaktif, seperti meluncurkan konsol Rails atau sesi bash, Kamal juga bisa menyederhanakan prosesnya. Cukup jalankan perintah berikut untuk memulai sesi bash di container image aplikasi baru atau container Docker yang sedang berjalan:<\/p><pre class=\"wp-block-preformatted\"># New container bash session\nkamal app exec -i bash\n# Reuse the current container for bash session\nkamal app exec -i --reuse bash\n# New container Rails console\nkamal app exec -i 'bin\/rails console'<\/pre><h3 class=\"wp-block-heading\" id=\"h-5-periksa-status-server-dengan-kamal-details\">5. Periksa Status Server dengan Kamal Details<\/h3><p>Anda harus memahami kondisi server untuk menjaga performanya serta memastikan aplikasi Anda berjalan dengan lancar. Kamal menyediakan cara yang efisien untuk memantau hal ini melalui perintah <strong>details<\/strong>.<\/p><p>Dengan perintah <strong>kamal details<\/strong>,<strong> <\/strong>Anda bisa melihat keadaan container Anda, statusnya, serta performanya. Berikut hal-hal yang biasanya bisa dipantau:<\/p><p>Untuk container Traefik:<\/p><pre class=\"wp-block-preformatted\">Traefik Host: 192.168.0.1\nCONTAINER ID   IMAGE    COMMAND                 CREATED          STATUS          PORTS\n6195b2a28c81   traefik  \"\/entrypoint.sh&hellip;\" 30 minutes ago   Up 19 minutes   0.0.0.0:80-&gt;80\/tcp...<\/pre><p>Untuk container aplikasi Anda:<\/p><pre class=\"wp-block-preformatted\">App Host: 192.168.0.1\nCONTAINER ID   IMAGE                     COMMAND          CREATED         STATUS          PORTS\nbadb1aa51db3   registry.domain.tld\/...  \"\/rails\/bin\/&hellip;\"  13 minutes ago  Up 13 minutes   3000\/tcp<\/pre><p>Output ini menjelaskan bahwa container sudah berjalan dan port-port sudah dipetakan dengan benar, yang menunjukkan bahwa kondisi server berjalan dengan baik.<\/p><p>Untuk pengecekan yang lebih spesifik, Anda bisa menargetkan container khusus aplikasi dengan menggunakan <strong>kamal app details<\/strong>,<strong> <\/strong>atau <strong>kamal traefik details <\/strong>untuk container khusus Traefik.<\/p><p>Perintah-perintah ini menyediakan akses langsung ke log dan container secara spesifik, mempermudah pengelolaan konfigurasi sistem serta penanganan error dalam deployment Kamal.<\/p><h3 class=\"wp-block-heading\" id=\"h-6-rollback-deployment\">6. Rollback Deployment<\/h3><p>Apabila deployment tidak berjalan sesuai rencana, Anda bisa memanfaatkan rollback Kamal yang praktis. Proses ini dilakukan dengan aktivasi ulang container Docker yang sebelumnya berjalan stabil. Untuk mengelola rollback dengan cepat dan efisien, ikuti langkah-langkah berikut:<\/p><p>Pertama, cari tahu container lama yang tersedia dengan menggunakan perintah <strong>kamal app containers<\/strong>. Perintah ini akan mencantumkan container yang aktif dan tidak aktif. Cari container aktif terakhir berdasarkan tag image atau ID container sebelum terjadi kegagalan deployment.<\/p><p>Contohnya, Anda mungkin melihat output seperti berikut:<\/p><pre class=\"wp-block-preformatted\">App Host: 192.168.0.1\nCONTAINER ID   IMAGE               COMMAND                  STATUS\n1d3c91ed1f51   [previous_image]    \"\/rails\/bin\/docker-e&hellip;\"   Up 19 minutes\n539f26b28369   [failed_image]      \"\/rails\/bin\/docker-e&hellip;\"   Exited (1) 27 minutes ago<\/pre><p>Untuk melakukan rollback, jalankan <strong>kamal rollback [previous_image_tag]<\/strong>. Kamal akan menghentikan container yang saat ini bermasalah dan memulai ulang container terakhir yang stabil. Mengingat container sebelumnya sudah ada di host, proses rollback bisa dilakukan dengan cepat tanpa proses pull lagi dari registri.<\/p><p>Perlu diperhatikan bahwa container lama akan otomatis dibersihkan dalam tiga hari setelah <strong>kamal deploy<\/strong> dilakukan. Jadi, konfirmasikan apakah deployment Anda berhasil dalam jangka waktu ini agar bisa memanfaatkan opsi rollback cepat.<\/p><p>Selain itu, pastikan Anda memiliki file backup dan restore yang tepat dengan Kamal untuk berjaga-jaga kalau terjadi masalah yang tidak terduga. Nah, kalau menggunakan VPS Hosting dari Hostinger, Anda bisa memanfaatkan fitur backup otomatis untuk proses rollback yang jauh lebih mudah.<\/p><h3 class=\"wp-block-heading\" id=\"h-7-bersihkan-server-dengan-kamal-remove\">7. Bersihkan Server dengan Kamal Remove<\/h3><p>Anda bisa menghapus aplikasi yang tidak digunakan untuk mengelola ruang dan performa server. Dengan Kamal, proses ini bisa dilakukan dengan sangat mudah. Untuk menghapus seluruh aplikasi, jalankan perintah <strong>kamal remove<\/strong>.<\/p><p>Kamal kemudian akan menghapus semua komponen yang terkait dengan aplikasi di server, termasuk menghentikan dan menghapus container Docker, menghapus image Docker apa pun, dan menghapus sesi registri yang terkait.<\/p><p>Perintah ini berfungsi untuk memastikan server Anda tetap berjalan secara efisien dan optimal. Namun, Anda harus menggunakan fitur ini dengan hati-hati. Sebelum menjalankan <strong>kamal remove<\/strong>, pastikan untuk membackup data apa pun yang ingin Anda simpan.<\/p><h3 class=\"wp-block-heading\" id=\"h-8-reboot-traefik\">8. Reboot Traefik<\/h3><p>Ketika mengelola load-balancer dan <a href=\"\/id\/tutorial\/nginx-reverse-proxy\">reverse proxy, terutama di server NGINX<\/a>, mungkin ada kalanya Anda perlu reboot Traefik, layanan yang merutekan traffic HTTP Anda. Hal ini biasanya perlu dilakukan setelah argumen atau label Traefik diperbarui, yang mengharuskan pengguna melakukan reboot agar perubahan diterapkan.<\/p><p>Untuk reboot Traefik menggunakan Kamal, jalankan perintah berikut:<\/p><pre class=\"wp-block-preformatted\">kamal traefik reboot<\/pre><p>Proses ini akan memulai ulang layanan Traefik dan menerapkan konfigurasi yang baru. Namun, di lingkungan produksi yang mengutamakan stabilitas dan uptime, pilihlah fitur rolling reboot:<\/p><pre class=\"wp-block-preformatted\">kamal traefik reboot --rolling<\/pre><p>Rolling reboot akan memulai ulang container Traefik secara berurutan, membantu meminimalkan downtime dan menjaga load-balancer agar tetap berfungsi optimal.<\/p><p>Metode yang lebih aman ini memastikan bahwa aplikasi web Anda tetap bisa diakses oleh pengguna saat update sedang berlangsung di latar belakang.<\/p><h2 class=\"wp-block-heading\" id=\"h-tips-terbaik-deploy-aplikasi-web-dengan-kamal\">Tips Terbaik Deploy Aplikasi Web dengan Kamal<\/h2><p>Setelah mempelajari cara deploy aplikasi web Anda ke server, mari simak beberapa tips terbaik dalam proses deployment Kamal untuk manajemen aplikasi web yang lancar dan efisien.<\/p><h3 class=\"wp-block-heading\" id=\"h-otomatiskan-alur-kerja-deployment\">Otomatiskan Alur Kerja Deployment<\/h3><p>Berkat automasi deployment Kamal, tugas-tugas manual yang berulang bisa dilakukan dalam cara yang jauh lebih praktis. Anda bisa mengotomatiskan setup awal, update, dan maintenance aplikasi web dengan perintah dan skrip Kamal sehingga proses deployment menjadi lebih cepat, stabil, dan minim risiko kesalahan pengguna.<\/p><p>Selain itu, Anda bisa mengintegrasikan tool automasi deployment Kamal dalam pipeline CI\/CD untuk meningkatkan efisiensi lebih lanjut. Pipeline ini memfasilitasi peningkatan performa dan update yang lancar sehingga membantu mengoptimalkan prosesnya secara keseluruhan, mulai dari pengembangan hingga deployment.<\/p><p>Dalam hal ini, VPS Hosting dari Hostinger adalah opsi yang ideal. Anda bisa memanfaatkan Kodee, asisten AI kami untuk mempermudah automasi skrip guna mengelola dan menyesuaikan aplikasi web. Gunakan Kodee untuk mendapatkan petunjuk tentang cara mengotomatiskan alur kerja deployment Anda.<\/p><p>Misalnya, Anda bisa menggunakan prompt AI VPS seperti &ldquo;Bagaimana cara mengotomatiskan backup server database menggunakan Kamal?&rdquo;<\/p><p>Kodee kemudian akan memberikan panduan langkah demi langkah yang lengkap. Anda bisa mengajukan pertanyaan lanjutan kalau membutuhkan panduan lebih lanjut. Asisten AI kami ini juga bisa menyediakan template kode aplikasi untuk mempercepat proses setup.<\/p><figure class=\"wp-block-image size-large\"><a href=\"\/id\/hosting-vps\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-VPS-hosting_in-text-banner.png\/public\" alt=\"\" class=\"wp-image-29630\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-VPS-hosting_in-text-banner.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-VPS-hosting_in-text-banner.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-VPS-hosting_in-text-banner.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-VPS-hosting_in-text-banner.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><h3 class=\"wp-block-heading\" id=\"h-deploy-lock-dan-operasi-serentak-yang-aman\">Deploy Lock dan Operasi Serentak yang Aman<\/h3><p>Anda perlu mengelola operasi serentak secara efektif ketika meluncurkan aplikasi web untuk mencegah konflik dan menjaga integritas aplikasi Anda. Kamal memfasilitasi hal ini dengan fitur deploy lock, yaitu mekanisme koordinasi yang mengizinkan satu deployment saja dalam satu waktu.<\/p><p>Berikut cara menerapkan deploy lock dalam proses deployment Anda:<\/p><p><strong>Sebelum Deployment<\/strong><\/p><p>Mulai deploy lock agar proses deployment tidak saling menimpa dengan menggunakan perintah <strong>kamal lock acquire -m &ldquo;Your reason for locking&rdquo;<\/strong>.<strong> <\/strong>Perintah ini akan membuat direktori <strong>kamal_lock<\/strong> pada server utama, yang menunjukkan bahwa proses deployment sedang berlangsung.<\/p><p><strong>Selama Deployment<\/strong><\/p><p>Verifikasikan status lock dengan <strong>kamal lock status<\/strong> guna menentukan siapa yang memulai lock dan apa tujuannya, serta versi mana yang digunakan. Anda mungkin akan melihat output seperti berikut:<\/p><pre class=\"wp-block-preformatted\">Locked by: A.N. Other on 2023-03-24 09:49:03 UTC\nVersion: 77f45c0686811c68989d6576748475a60bf53fc2\nMessage: Automatic deploy lock<\/pre><p>Output ini menyediakan informasi tentang aktivitas deployment yang sedang berlangsung dan memastikan tidak ada operasi yang saling bertentangan.<\/p><p><strong>Setelah Deployment Berhasil<\/strong><\/p><p>Selesaikan proses deployment dengan merilis deploy lock menggunakan <strong>kamal lock release<\/strong>. Tindakan ini berfungsi untuk membersihkan sistem kalau perlu melakukan deployment lagi dan mengoptimalkan keseluruhan prosesnya.<\/p><h3 class=\"wp-block-heading\" id=\"h-gunakan-kamal-hook\">Gunakan Kamal Hook<\/h3><p>Kamal menyediakan sistem hook bagi developer untuk menjalankan skrip khusus pada area tertentu dalam proses deployment. Sistem ini memungkinkan automasi yang disesuaikan serta memastikan proses deployment yang konsisten dan stabil.<\/p><p>Ada empat jenis hook Kamal:<\/p><ul class=\"wp-block-list\">\n<li><strong>Pre-connect hook <\/strong>&ndash; dieksekusi sebelum Kamal mengambil deploy lock dan sebelum membuat sambungan ke remote host. Hook ini berguna untuk tugas DNS warming.<\/li>\n\n\n\n<li><strong>Pre-build hook <\/strong>&ndash; dijalankan sebelum proses build dimulai, melakukan validasi pre-build seperti memeriksa perubahan yang belum diterapkan atau memastikan integrasi berkelanjutan (CI\/continuous integration) telah berlalu.<\/li>\n\n\n\n<li><strong>Pre-deploy hook <\/strong>&ndash; dipicu tepat sebelum deployment dimulai, cocok untuk pemeriksaan akhir seperti memverifikasi penyelesaian CI.<\/li>\n\n\n\n<li><strong>Post-deploy hook <\/strong>&ndash; diaktifkan setelah deploy, redeploy, atau rollback hook. Post-deploy hook bisa mengirimkan notifikasi deployment atau mendaftarkan versi baru ke sistem manajemen performa aplikasi (APM).<\/li>\n<\/ul><p>Skrip dalam hook ini memiliki akses ke berbagai variabel environment <strong>KAMAL_*<\/strong>, yang menyediakan konteks mendetail tentang proses deployment, termasuk timestamp, informasi pengguna, detail versi, dan daftar host.<\/p><p>Apabila ada skrip yang diselesaikan dengan status bukan nol, proses deployment akan dibatalkan untuk mencegah risiko error yang menyebar.<\/p><p>Berikut salah satu contoh pembuatan skrip post-deploy hook yang mengirimkan notifikasi deployment ke chatbot di Basecamp menggunakan variabel <strong>KAMAL_*:<\/strong><\/p><pre class=\"wp-block-preformatted\">#!\/usr\/bin\/env bash\ncurl -q -d \"content=[My App] ${KAMAL_PERFORMER} Rolled back to version ${KAMAL_VERSION}\" https:\/\/3.basecamp.com\/XXXXX\/integrations\/XXXXX\/buckets\/XXXXX\/chats\/XXXXX\/lines<\/pre><p>Skrip ini akan memposting pesan yang menunjukkan siapa yang melakukan rollback beserta versi targetnya.<\/p><p>Apabila hook tidak diperlukan, Anda bisa melewatinya dengan menggunakan flag <strong>-skip_hooks <\/strong>selama perintah deployment, yang mencegah eksekusi skrip kustom ini.<\/p><h2 class=\"wp-block-heading\" id=\"h-kesimpulan\">Kesimpulan<\/h2><p>Di tutorial ini, Anda sudah mempelajari apa itu Kamal, keunggulannya, dan langkah-langkah deploy aplikasi web menggunakan Kamal di VPS Linux.<\/p><p>Kami juga memberikan tips-tips deployment Kamal, seperti automasi alur kerja, mengamankan operasi dengan deploy lock, dan mengoptimalkan proses dengan hook Kamal.<\/p><p>Apabila berencana untuk mengembangkan aplikasi web Anda, cobalah VPS hosting dari Hostinger yang bisa Anda atur sesuai kebutuhan. Dengan harga mulai dari <strong>Rp116900.00\/bulan<\/strong>, Anda bisa memanfaatkan berbagai fitur canggih untuk segala kebutuhan aplikasi Anda.<\/p><p>Misalnya, Anda akan mendapatkan snapshot real-time gratis, backup mingguan otomatis, serta Kodee, asisten AI kami yang siap membantu memaksimalkan strategi deployment dan meningkatkan performa proyek Anda.<\/p><p>Jadi, tunggu apa lagi? Yuk, coba VPS hosting dari Hostinger dengan berbagai fitur canggihnya! Semoga berhasil!<\/p><p>\n\n\n<div class=\"protip\">\n                    <h4 class=\"title\">Artikel Lainnya seputar Deployment dan Containerization<\/h4>\n                    <p><a href=\"\/id\/tutorial\/apa-itu-docker\">Apa itu Docker dan Bagaimana Cara Kerjanya?<\/a><br>\n<a href=\"\/id\/tutorial\/install-redis-ubuntu\">Cara Menginstal dan Setup Redis di Ubuntu<\/a><\/p>\n                <\/div>\n\n\n\n<\/p><h2 class=\"wp-block-heading\" id=\"h-tanya-jawab-faq-cara-deploy-aplikasi-web-menggunakan-kamal\">Tanya Jawab (FAQ) Cara Deploy Aplikasi Web Menggunakan Kamal<\/h2><p>Bagian ini akan menjawab pertanyaan-pertanyaan umum tentang cara deploy aplikasi web menggunakan Kamal.<\/p><div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-question-69442bab765c1\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Apa Persiapan Menggunakan Kamal untuk Deploy Aplikasi Web?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Sebelum melakukan deployment dengan Kamal, pastikan Anda sudah menginstal Git untuk kontrol versi, memiliki akses SSH ke server untuk koneksi yang aman, dan sistem aplikasi Rails dengan dependensi yang diperlukan. Persiapan ini sangat penting untuk proses deployment Kamal yang lancar.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-69442bab765c5\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Apakah Bisa Deploy Aplikasi Web Apa Pun Dengan Kamal?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Ya, Kamal bisa menangani berbagai jenis aplikasi web selain aplikasi Rails. Kamal menyediakan sistem deployment yang fleksibel dan cocok untuk berbagai framework aplikasi web sehingga developer bisa meluncurkan proyeknya secara efektif, apa pun teknologi dasarnya.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-69442bab765c6\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Apakah Kamal Bisa Mengelola Aplikasi Web Sesuai Kebutuhan?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Kamal sangat ideal untuk mengatur aplikasi web sesuai kebutuhan karena mendukung deployment di beberapa host dan terintegrasi dengan load-balancer, yang penting untuk distribusi traffic dan memastikan aplikasi Anda selalu tersedia seiring dengan bertambahnya pengguna dan traffic.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Proses deploy aplikasi web dalam container terkadang memang terlihat cukup rumit, apalagi kalau Anda belum memiliki pemahaman teknis tingkat lanjut. Untungnya, Kamal bisa membantu mempermudah prosesnya sehingga alur kerja deployment aplikasi web Anda menjadi lebih efisien dan praktis. Di artikel ini, Anda akan mempelajari cara deploy aplikasi web menggunakan Kamal di VPS (virtual private server). [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"\/id\/tutorial\/cara-deploy-aplikasi-web-menggunakan-kamal\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":190,"featured_media":39184,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_title":"Cara Deploy Aplikasi Web Menggunakan Kamal","rank_math_description":"Berikut cara deploy aplikasi web menggunakan Kamal: 1. Mulai persiapan, 2. Instal Kamal, 3. Push file environment. Yuk, baca selengkapnya!","rank_math_focus_keyword":"cara deploy aplikasi web menggunakan kamal","footnotes":""},"categories":[5096],"tags":[],"class_list":["post-39183","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vps"],"hreflangs":[{"locale":"en-US","link":"https:\/\/www.hostinger.com\/tutorials\/deploy-web-apps-using-kamal","default":0},{"locale":"fr-FR","link":"https:\/\/www.hostinger.com\/fr\/tutoriels\/deployer-applications-web-avec-kamal","default":0},{"locale":"es-ES","link":"https:\/\/www.hostinger.com\/es\/tutoriales\/como-implementar-aplicaciones-web-con-kamal","default":0},{"locale":"id-ID","link":"https:\/\/www.hostinger.com\/id\/tutorial\/cara-deploy-aplikasi-web-menggunakan-kamal","default":0},{"locale":"en-UK","link":"https:\/\/www.hostinger.com\/uk\/tutorials\/deploy-web-apps-using-kamal","default":0},{"locale":"en-MY","link":"https:\/\/www.hostinger.com\/my\/tutorials\/deploy-web-apps-using-kamal","default":0},{"locale":"en-PH","link":"https:\/\/www.hostinger.com\/ph\/tutorials\/deploy-web-apps-using-kamal","default":0},{"locale":"es-MX","link":"https:\/\/www.hostinger.com\/mx\/tutoriales\/como-implementar-aplicaciones-web-con-kamal","default":0},{"locale":"es-CO","link":"https:\/\/www.hostinger.com\/co\/tutoriales\/como-implementar-aplicaciones-web-con-kamal","default":0},{"locale":"es-AR","link":"https:\/\/www.hostinger.com\/ar\/tutoriales\/como-implementar-aplicaciones-web-con-kamal","default":0},{"locale":"en-IN","link":"https:\/\/www.hostinger.com\/in\/tutorials\/deploy-web-apps-using-kamal","default":0},{"locale":"en-CA","link":"https:\/\/www.hostinger.com\/ca\/tutorials\/deploy-web-apps-using-kamal","default":0},{"locale":"en-AU","link":"https:\/\/www.hostinger.com\/au\/tutorials\/deploy-web-apps-using-kamal","default":0},{"locale":"en-NG","link":"https:\/\/www.hostinger.com\/ng\/tutorials\/deploy-web-apps-using-kamal","default":0}],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/posts\/39183","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/users\/190"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/comments?post=39183"}],"version-history":[{"count":5,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/posts\/39183\/revisions"}],"predecessor-version":[{"id":47053,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/posts\/39183\/revisions\/47053"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/media\/39184"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/media?parent=39183"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/categories?post=39183"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/tags?post=39183"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}