This project is a hands-on workshop for learning Kamal — the deployment tool from Basecamp that lets you deploy containerized web apps to any server with zero downtime.
Built with Rails 8, containerized with Docker, and deployed via Kamal to a VPS — no PaaS required.
| Layer | Technology |
|---|---|
| Framework | Ruby on Rails 8.1 |
| Language | Ruby 3.4 |
| Database | SQLite3 |
| Server | Puma + Thruster |
| Jobs | Solid Queue |
| Deploy | Kamal 2 + Docker |
| SSL | Let's Encrypt (auto) |
- Ruby 3.4+
- Docker
- Kamal (
gem install kamal)
# Clone the repo
git clone https://github.com/<your-username>/kamal-workshops-new.git
cd kamal-workshops-new
# Install dependencies
bundle install
# Setup database
bin/rails db:setup
# Start the server
bin/dev# First-time setup
kamal setup
# Subsequent deploys
kamal deploy
# Check logs
kamal app logs├── config/
│ └── deploy.yml # Kamal deployment config
├── .kamal/
│ └── secrets # Environment secrets
├── Dockerfile # Multi-stage production build
└── ... # Standard Rails 8 app
The app is deployed to newapp.8301738.xyz using Kamal with:
- Zero-downtime deploys via rolling restarts
- Automatic SSL via Let's Encrypt
- Docker Hub as the container registry
- Persistent SQLite storage with mounted volumes
This project is open source under the MIT License.
Built with Ruby on Rails & deployed with Kamal
