About

A Docker orchestrator for a handful of machines

ProxDock runs Docker applications on hosts with ZFS, and takes over the parts normally left to a pile of scripts: picking something to deploy, where its data lives, what address it answers on, and how you get it all back. It does not replace Docker; it writes the files and runs docker compose. It is not trying to be Kubernetes either. It is for the person running a few machines who wants deployment and backup to be boring.

Why it exists, and where the name comes from

For years I wanted Proxmox for Docker. Proxmox is easy to run, its backups have never let me down, and its web interface is powerful without ever being hard to understand. None of the Docker management tools ever met the standard Proxmox had set.

Plenty of tools will take a Compose file and start it. The gap in most of them was the same one, and it only shows up later: the data.

An application you have run for two years is not valuable because it was hard to install. Installing it again takes minutes. What you cannot get back is what it has accumulated since: the library it indexed, the documents it filed, the settings you tuned once and forgot, the history built up inside it. A tool that captures the image and the Compose file and leaves the volume to you has backed up the replaceable half.

So ProxDock treats the data as the thing worth keeping: one dataset per application, backed up as a stream that restores whole, and moved between nodes by the same code that restores it.

The name is those two halves: Proxmox's way of thinking, pointed at Docker.

This is my attempt at it. It is not there yet, but I think it is off to a good start, and one day it will get there.

Built for a cluster, not tied to one

It was written for a handful of Debian VMs on Proxmox, and that is what it runs on daily. Packages are built and tested for Debian 13 and Ubuntu 24.04 and 26.04. But nothing about it is tied to those: any Linux host with ZFS and Docker will do, and only the packaging is distribution-specific.

Where it is

The full lifecycle runs on a live three-node cluster and has done for months. Names and schemas can still change between releases; migrations ship with the binary and apply themselves.

Working today

  • Deploy, update and roll back an application
  • Snapshot before every configuration change, with one-click rollback
  • Back up, verify and restore, including under a new name and address
  • Ship backups offsite to S3, a NAS, a storage location or another node
  • Encrypt what leaves the host, per destination, at ship time
  • Migrate an application between nodes, address and all
  • Raft-replicated cluster state, any node serving the whole API
  • Scheduled backups with per-kind retention
  • Cluster-wide storage locations and network zones
  • Per-node HTTPS over ACME DNS-01, and certificates you manage yourself
  • Packages for Debian 13 and Ubuntu 24.04 and 26.04, from a signed apt repository

Not yet

arm64
Planned, including clusters mixing arm and x86 nodes. Only amd64 is built today.
Distributions beyond three
Debian 13 and Ubuntu 24.04 and 26.04 are built, tested and published. Nothing in ProxDock is tied to those or to Proxmox. Only the packaging is, so more targets are a packaging job, not a port.

One upgrade rule. Schema migrations are append-only and ship inside the binary, so upgrade every node in a cluster together when a release adds one. The changelog says which releases do.

Licence

AGPL-3.0 open source copyleft

ProxDock is licensed under the GNU Affero General Public License, version 3. You may read it, modify it, run it and pass it on, commercially included, and the source for every release is published.

What it asks in return

  • What you pass on stays under the same licence, source included.
  • If you run a modified version as a service other people use, they can ask you for its source. That is the clause the Affero licence adds over the ordinary GPL, and it is the reason this one is here.
  • Copyright and licence notices stay where they are.

That summary is a summary. The licence text is what governs, and it ships with the source as LICENSE. AGPL-3.0 is an OSI-approved open source licence.