v0.1.1 Open source · MIT · one binary

12-factor deploys. Any hardware. None of the bloat.

Deploy Docker Compose apps to a cheap VPS or a box at home, the twelve-factor way: config lives on the server, every release is immutable, deploys have zero downtime and HTTPS is automatic. Your docker-compose.yml stays exactly as it is.

curl -fsSL https://raw.githubusercontent.com/ddahan/dokwalt/main/install.sh | sh

macOS & Linux (Windows via WSL). Servers: any 64-bit Debian or Ubuntu machine — amd64 or arm64.

~/code/shop — zsh

            
Docker Compose◆Caddy◆Let's Encrypt◆SQLite◆systemd◆SSH◆amd64 & arm64◆Debian◆Ubuntu◆Go◆
0MB

RAM for the server daemon, next to Caddy

0binary

CLI on your laptop, daemon on your server

9open ports

for the control plane — you talk to it over SSH

7files to add

to your repo — config lives on the server

◆ CLI-only, and gorgeous

Type dokwalt. That's the dashboard.

A live, full-screen view of every app, service and request — right in your terminal. Click an app.

dokwalt
◆ DokWalt prod cpu 6% mem 13% disk 69%
APPS
↑↓ select · 1/2/3 tabs · r rollback · p promote · R restart · o open · ? help · q quit

◆ Zero-downtime deploys

The new version starts next to the old one.

Traffic only switches once it passes its health checks. If it fails, the current version keeps serving and you see your app's own error logs. Databases are never duplicated — they keep running untouched.

  1. Build on your machinedocker buildx, for the server's CPU
  2. Upload changed layers onlycontent-addressed, never sent twice
  3. Start the new colorblue and green take turns
  4. Health checkyour compose healthcheck:, then HTTP
  5. Switch trafficCaddy routes atomically
  6. Drain the old versionin-flight requests finish first
● serving v2
visitors Caddy v2 blue · web v3 green · web postgres never duplicated

◆ Twelve-factor, by design

Apps, releases, config, pipelines.
On any hardware.

Survives reboots and power cuts

After a kernel update at 04:00 or a power cut, every site serves HTTPS again — with nothing to type. A native systemd service, a proxy that boots from its last-known-good config, and certificates that persist.

◆ prod · simulation
  • blog.example.com200 OK
  • shop.example.com200 OK
  • wiki.example.com200 OK

                
              

Releases & instant rollbacks

Every deploy and config change is a numbered, immutable release. Rolling back is instant: the images are already on the server.

Optional pipelines

dokwalt promote ships staging's exact images to production. No rebuild, no upload.

Native Docker Compose

No DokWalt file in your repo. Stateful services are detected and never duplicated; one-shot jobs run your migrations first.

Automatic HTTPS

Let's Encrypt via Caddy, with a real check that your DNS and ports are right — before burning rate limits.

12-factor config

Config vars live on the server, encrypted — never in git. Changing one rolls out a new release with zero downtime.

Logs & monitoring

Merged live logs, top, 7-day metrics, request rates, latency and errors per domain.

Discord & Slack alerts

Site down, failed deploy, crash loop, certificate, disk, memory, CPU temperature — and when it's resolved.

Runs on any hardware

A $5 VPS, a mini PC, an old laptop, a box on your shelf — any 64-bit Debian or Ubuntu machine. Images are built on your laptop for the server's CPU.

◆ Small & private

What's not in the box.

Many sites share one small machine, so the platform's own overhead has to be tiny. Every component earns its place — or it isn't there.

On a 1 GB server

dokwalt~27 MB
caddy~45 MB
your appsthe rest
  • Web UI the CLI and TUI are the interface
  • Docker Swarm one server, done well
  • Kubernetes not even a little
  • Redis nothing to cache
  • Postgres for its own state SQLite in WAL mode
  • CI, GitHub Actions, paid services builds run on your laptop
  • A public control port SSH only; just Caddy on 80/443
  • DokWalt files in your repo strict 12-factor

◆ Everyday commands

Everything from your terminal.

dokwalt

          

◆ Get started

From zero to HTTPS in three commands.

1

Install the CLI

On your Mac or Linux machine. Run it again later to upgrade.

curl -fsSL https://raw.githubusercontent.com/ddahan/dokwalt/main/install.sh | sh
2

Set up your server

Installs Docker if needed, the systemd service and Caddy. Any SSH-reachable Debian or Ubuntu machine.

dokwalt server init you@your-server --email you@example.com
3

Deploy

In any folder with a compose.yaml. Point DNS at your server and add a domain.

dokwalt apps:create myapp dokwalt deploy dokwalt domains:add myapp.example.com --service web

Needs Docker on your computer (Docker Desktop or OrbStack) and SSH key access with sudo on a 64-bit server with ports 80 and 443 open. 1 GB of RAM is enough for a few small sites.

Your server. Your sites.
Back up on their own.