gitmyhub

kamal

Ruby ★ 14k updated 2d ago

Deploy web apps anywhere.

Kamal deploys any Docker-based web app to any server over SSH with zero downtime, switching traffic from the old version to the new one without taking the site offline.

RubyDockerSSHsetup: moderatecomplexity 3/5

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.

Where it fits