Back to Blog
team@tinypod.app

Self-Hosting Kamal: Modern Deployment Tool from Basecamp

Kamal deploys containerized apps to bare VPS servers. Created by Basecamp, it's a simple alternative to Kubernetes for small teams.

kamaldeploymentdevopscontainers

What Is Kamal?


Kamal (formerly MRSK) is a deployment tool from Basecamp. It deploys Docker containers to bare Linux servers — no Kubernetes, no complex orchestration.


How Kamal Works


1. Build your Docker image

2. Push to a registry

3. Kamal pulls the image on your servers

4. Kamal manages Traefik for routing

5. Zero-downtime deploys with rolling updates


Key Features


Simple Configuration

yaml

service: myapp

image: myapp

servers:

  • 192.168.1.1
  • registry:

    server: ghcr.io

    username: user

    password:

  • KAMAL_REGISTRY_PASSWORD

  • Zero-Downtime Deploys

    Kamal uses rolling deploys — the new container starts, health checks pass, then the old container is stopped.


    Accessories

    Deploy databases and supporting services alongside your app.


    Multi-Server

    Deploy to multiple servers with different roles (web, worker, etc.).


    Kamal vs Kubernetes vs Docker Compose


  • Kamal: Simple, opinionated, single-command deploys
  • Kubernetes: Complex, scalable, for large teams
  • Docker Compose: Local-focused, no rolling deploys, manual SSH

  • When to Use Kamal


  • Small to medium applications
  • 1-10 servers
  • Teams that want simplicity over flexibility
  • Rails/web apps (but works with any Docker image)

  • Deployment


    Install Kamal locally, configure deploy.yml, run `kamal deploy`. Your app is live with zero-downtime deploys.


    Kamal proves that you don't need Kubernetes for production deployments. For most web apps, a VPS + Kamal is all you need.