Your home-lab stacks, one window, a proper login.

Dockup is a self-hosted Docker Compose stack manager for home labs - every stack, its logs and its terminal in one window, with security taken seriously from the first line.

  • 2FA login
  • Daily backups
  • No terminal needed

! Built for home labs on your own network - not hardened for public VPS hosting (yet).

Features

Dockup is one of your stacks

It sits in the stacks folder with everything it manages, so it shows up in its own list like any other container. Open it, read its compose file, press Update. No special case, no terminal.

Everything in one window

Every stack, its logs, its editor and its terminal on a single page. No hunting through tabs.

A login that means it

Server-side sessions, rate-limited sign-in, optional 2FA, encrypted settings. One secret to set, ever.

Adopts what you run today

Dockup scans your system and pulls existing compose projects and plain containers under management - nothing gets restarted.

Errors you can't miss

Live log streaming with errors in red, a persistent activity log, and optional email alerts when something breaks.

Backups that restore

Daily automatic backups, one-click restore that's itself reversible, and a download-everything zip. No lock-in, ever.

Prune with confidence

Clean unused images, containers, networks and build cache one-by-one or together. Volumes always show exactly what goes first.

Redeploy a stuck container

Recreates a stack from its compose file and whatever image's already pulled - fixes a wedged container without a full re-pull.

Archive, don't just delete

A stack with nothing running can be archived - config kept, out of the way - or deleted for good along with every image it used.

One click to the real thing

Open a stack's actual web UI in a new tab - its Tailscale Serve address if set up, otherwise whatever address got you to Dockup.

Install

# paste straight into Dockge, Portainer, or any compose tool - change
# the SECRET_KEY line below to your own random string, then deploy
services:
  dockup:
    image: ghcr.io/gh-lm/dockup:latest
    container_name: dockup
    restart: unless-stopped
    cap_drop: [ALL]
    cap_add: [CHOWN, SETUID, SETGID, DAC_OVERRIDE]
    security_opt: [no-new-privileges:true]
    ports:
      - "127.0.0.1:4000:5001"
    environment:
      SECRET_KEY: change-this-to-your-own-long-random-string
      TZ: Europe/London
      # real host path of the data/ folder above - only matters for
      # per-stack backups; skip if you don't use that feature
      DOCKUP_DATA_HOST_PATH: /opt/dockup/data
    volumes:
      - ./data:/app/data
      - /var/run/docker.sock:/var/run/docker.sock
      - /opt/stacks:/opt/stacks

Then

Open http://your-server:4000, create the admin account, and adopt what's already running. Updating later is a plain docker compose pull && docker compose up -d, or Dockup's own card in its stack list. Prefer a terminal, or the full file with its comments? The real compose.yaml and the runbook have both.

Optional: the dockup-companion

Adds host OS update checks and per-stack Tailscale Serve toggles - the only two things Dockup can't do through the Docker socket alone. It's the sole part of Dockup that needs root on the actual server rather than just Docker access, which is why it's a separate step you opt into, not something bundled in by default. Skip it entirely and everything else works exactly the same.

# one click in Settings does the whole thing - installs and reconnects
# or, manually (its files live in the repo, not the image):
cid=$(docker create ghcr.io/gh-lm/dockup:latest)
docker cp "$cid:/app/companion" /tmp/dockup-companion && docker rm "$cid"
cd /tmp/dockup-src/companion && sudo sh install.sh

Common questions

Does updating Dockup mean rebuilding it?

No. Dockup ships as a pre-built image, and it sits in the stacks folder with everything it manages, so it appears in its own list. Open it and press Update, exactly as you would for any other stack. No git, no local build, ever.

Does Dockup need root on my server?

Only for two things Docker access alone can't reach - host OS update checks and Tailscale Serve - and only if you opt into the small companion service. Everything else runs through the same Docker socket any container manager needs.

What happens to my stacks if I stop using Dockup?

Nothing. Every stack stays a plain folder with a real compose file, unchanged by Dockup managing it - docker compose or any other tool works on it at any time.

Can I run Dockup on a public VPS?

Not yet recommended. Dockup is built and hardened for a machine on your own network, reached over Tailscale or your LAN - it hasn't been hardened for direct internet exposure.

Do I have to install the companion?

No. It is entirely optional and separate. Without it you lose only host OS update checks and the per-stack Tailscale Serve switches; everything else works.

What does it back up?

Its own settings, registry details and history, every day, kept for as long as you choose. A stack's own data is a separate, deliberate job you ask for per stack.

Can it adopt what I already run?

Yes. Dockup looks over your machine for compose projects and loose containers it isn't managing and offers to take them on. Nothing is restarted to do it.

What happens when Dockup updates itself?

The same as any other stack: open it, press Update. The page goes quiet for a few seconds while its container is replaced, then comes back on the new version.

Where do passwords and keys live?

In Dockup's own settings page, stored encrypted. The only exception is the key that signs your login, which has to exist before there is a page to sign in to, so it sits in the compose file or a .env beside it.