Deploy a Rails or any Docker app to a cheap bare-metal server or VPS without downtime
Roll out updates automatically using kamal-proxy to switch traffic between old and new app versions
Set up a production server without installing any special agent software, just SSH access and Docker
Manage deployments to multiple servers from a single config file
Requires Docker on both your local machine and the target server, plus SSH access with a user that has Docker permissions.
Kamal is a deployment tool for web applications. It lets you push your app to any server, whether that is a cheap bare-metal machine you rent directly or a virtual machine from a cloud provider, without the app going offline during the update. The README is brief and points to an external documentation site for full details. The way zero-downtime updates work is through a companion tool called kamal-proxy, which sits in front of your app and switches incoming requests from the old version of the app to the new version once the new one is running and ready. Kamal communicates with your servers over SSH, so no special agent needs to be installed on each server in advance. The tool was originally created by Basecamp, the company behind the Ruby on Rails web framework, and it works naturally with Rails apps. It is not limited to Rails, though: any web application that can be packaged as a Docker container can be deployed with it. Kamal is written in Ruby and is released under the MIT license, which allows use in both personal and commercial projects.
← basecamp on gitmyhub — every repo by this author, as a profile.
Verify against the repo before relying on details.