- Makefile 100%
| nginx/snippets | ||
| .env.example | ||
| .gitignore | ||
| compose.yml | ||
| Makefile | ||
| nginx.conf | ||
| README.md | ||
Dockhand
Podman/Docker management UI for the Arcane Demesne homelab. Edge nginx publishes 8088; public hostname dockhand.arcanedemesne.com.
Socket: rootless Podman (/run/user/1000/podman/podman.sock). Enable Dockhand authentication (and prefer MFA) before any tunnel exposure. Cloudflare Access is a strong second gate.
Bootstrap
cp .env.example .env
podman network create gateway-hub # once, if missing
make up
Reload hub after first start (or after Gateway nginx changes):
make proxy-reload
Ports
| Surface | Host | Container |
|---|---|---|
| Edge nginx | 8088 | dockhand-proxy:80 |
| App | — | dockhand:3000 |
Public hostname: dockhand.arcanedemesne.com → Gateway → dockhand-proxy.
Tunnel: add DNS + Cloudflare ingress for dockhand.arcanedemesne.com → http://127.0.0.1:8080.
Do not publish 4000:3000 on the host — edge-only.
Data
./data holds Dockhand DB + encryption key. Keep it out of git (see .gitignore). Backup the encryption key; lose it and encrypted secrets are gone.
Health
No dedicated public /livez. HomeLab probes the site root (login redirect counts as online).
Makefile
| Target | Action |
|---|---|
make up |
Start stack |
make down |
Stop stack |
make proxy-reload |
Reload dockhand-proxy + gateway-proxy nginx |