Deployment guides
CapScope is one Go binary plus a Dockerfile and a compose file, so anything that can run a Docker image can run it. Every guide below covers the same five things: a password, a persistent /data volume, Docker socket access, HTTPS in front of port 8080, and exactly one replica.
generic host · docker run CapRover
captain-definition included Coolify
Dockerfile resource Dokploy
compose service · Swarm Dokku
git push deployments Portainer & others
stacks · Podman · Swarm
Common to all platforms
The image ships everything a PaaS expects: a plain Dockerfile, EXPOSE 8080, a VOLUME /data, a built-in HEALTHCHECK and an unauthenticated GET /healthz endpoint. Whatever the platform, these six rules always apply:
- Set
AUTH_PASSto a long random password — the server refuses to start without it (unless you explicitly setALLOW_NO_AUTH=truefor a private test). - Persist
/dataon a volume. The SQLite database — logs, metrics, snapshots, alert state — lives there and dies on redeploy without it. - Give CapScope Docker API access: mount
/var/run/docker.sock, or (safer, no socket in CapScope) pointDOCKER_HOSTat a read-only socket proxy. - Exactly one replica. Each instance writes the same SQLite file — two writers corrupt the database.
- HTTPS in front. The app listens on
8080; Basic auth credentials travel in clear text on plain HTTP. - Kubernetes is not supported. CapScope talks to the Docker Engine API, not the kubelet — run it as a Docker container on a Docker node.
openssl rand -base64 24
The image is built from the repo's multi-stage Dockerfile (Go 1.24 to a static scratch binary), so any platform that can build or pull a Docker image works. The first build downloads Go modules — the host needs outbound internet during the build.
Pick your platform
| Platform | Guide | What it needs on top |
|---|---|---|
| Docker Compose | Docker Compose guide | the compose file from the repo, or a plain docker run |
| CapRover | CapRover guide | nothing — captain-definition is in the repo |
| Coolify | Coolify guide | Dockerfile resource + socket proxy volume |
| Dokploy | Dokploy guide | compose service, Swarm single-node caveat |
| Dokku | Dokku guide | git push + storage:mount overrides |
| Portainer / plain Docker | Portainer & others | paste the compose stack |
| Podman | Portainer & others — Podman | same image; mount the Podman API socket instead of docker.sock |
Verify after any deployment
Health check answers
GET /healthz returns 200 — the path is auth-free by design, so platforms can probe it without secrets.
Sidebar fills up
Log in with Basic auth; the app list appears within about 10 seconds of the first deploy.
Live tail streams
Open any container — the SSE stream flows. If it is silent, your reverse proxy is buffering; see the troubleshooting table in each guide.
History survives a redeploy
Restart or redeploy CapScope, then search a known log string again. If the data is still there, /data is persisted correctly.
New to CapScope? Read the documentation intro first, then come back and pick a platform.