Self-hosted Docker Compose stack manager for home labs.
251
A self-hosted Docker Compose stack manager for home labs, with a proper login. Inspired by Dockge - same idea, fresh code, different look, security first.
Home labs only (for now). Dockup is built for a machine on your own network. It is not hardened for internet-facing VPS use - don't put it on a public server.
docker run ... command and have it converted
to composeSECRET_KEY); everything else lives in
the Settings screen, encrypted at restDockup ships as a normal pre-built image
(lightmorphic/dockup on Docker Hub) - no cloning, no building. All you need
is the compose file:
mkdir -p /opt/dockup /opt/stacks && cd /opt/dockup
curl -fsSL -o compose.yaml https://dockup.lightmorphic.com/compose.yaml
echo "SECRET_KEY=$(python3 -c 'import secrets;print(secrets.token_urlsafe(48))')" > .env
docker compose up -d
Open http://<server-ip>:4000, create the admin account, done. Updating
later is the update dot in Dockup's own top bar, or the usual:
docker compose pull && docker compose up -d
(Prefer building from source? Download
https://dockup.lightmorphic.com/dockup-source.tar.gz, unpack it into
/opt/dockup instead and put build: . in a compose.override.yaml -
everything else is identical.)
/opt/stacks is the recommended stacks folder - each stack is a plain
folder with a compose file, so there's no lock-in: the folder works with
plain docker compose (or any other manager) at any time.
A second, separate step - only needed for host OS update checks and per-stack Tailscale Serve toggles. Everything else works without it. Easiest way: Settings → Host OS & Tailscale → "Install companion" (one click, once Dockup itself is running). Or manually:
The companion is inside the image, so taking it from there always gives you the version you are running:
mkdir -p /tmp/dockup-companion
cid=$(docker create lightmorphic/dockup:latest)
docker cp "$cid:/app/companion" /tmp/dockup-companion
docker rm "$cid"
cd /tmp/dockup-companion/companion && sudo sh install.sh
Then add the companion socket mount in a compose.override.yaml and
restart Dockup. Full steps in runbook.md.
Enable the Podman socket, then swap the socket mount in compose.yaml
(see the comment there) and flip the engine in Settings. The full steps
are in runbook.md.
Everything routine - restart, backups, restore, logs, pruning - is a button in the UI. The runbook covers the rest in plain language: install, restore, rollback, moving to Podman, and what to do when something's wrong.
Dockup is free software under the GNU General Public License v3.0 - see LICENSE. You may use, study, change and share it; if you distribute a changed version, it has to carry the same freedoms.
Bundled third-party bits: xterm.js
(MIT) for the terminal, Manrope
(SIL OFL) for the type. Python dependencies are in requirements.txt -
all permissively licensed (BSD/MIT/Apache).
Comments are stripped from the published code to keep it lean.
Content type
Image
Digest
sha256:265de07ce…
Size
52.4 MB
Last updated
about 5 hours ago
docker pull lightmorphic/dockup