Quick Start (Demo)¶
The all-in-one (AIO) image is the fastest way to run WDIAG. It bundles Postgres, Redis, the app, background workers, and a reverse proxy into a single container.
Ephemeral (data wiped on container removal)¶
Open https://localhost. Accept the self-signed certificate warning (expected for localhost).
With persistence (data survives container removal)¶
docker run -p 80:80 -p 443:443 \
-v wdiag-data:/var/lib/postgresql/data \
-e PERSIST_DATA=true \
ghcr.io/justin-cagle/wdiag-aio:latest
The volume wdiag-data stores Postgres data. On subsequent starts with this volume, the data is preserved and the bootstrap credentials are not regenerated.
Custom domain (LAN use)¶
To access over your local network at a hostname (e.g., budget.home.lan):
docker run -p 80:80 -p 443:443 \
-v wdiag-data:/var/lib/postgresql/data \
-e PERSIST_DATA=true \
-e DOMAIN_NAME=budget.home.lan \
ghcr.io/justin-cagle/wdiag-aio:latest
Note: Caddy will use a local CA for non-public hostnames. You may need to install the CA certificate in your browser to avoid the warning.
What's inside the AIO image¶
The AIO image runs all services under supervisord:
| Process | What it does |
|---|---|
| Postgres | Database (internal port 5432) |
| Redis | Job queue and cache (internal port 6379) |
| Caddy | Reverse proxy and TLS termination (ports 80, 443) |
| uvicorn | FastAPI application (internal port 8000) |
| arq-fast | Fast background worker pool |
| arq-slow | Slow background worker pool (nightly jobs, syncs) |
Default credentials¶
Printed in container logs on first start. Shown on the login page. Change them immediately in Settings → Profile.
To change the password: log in → click your name → Settings → Profile → Change Password.
AIO limitations¶
The AIO image is suitable for personal use and evaluation. It is not recommended for production multi-user deployments because:
- All services share one process space — no isolation between components
- No horizontal scaling
- The encryption key is auto-generated and stored in the container volume (if not provided via
-e MASTER_KEY=...)
For a production deployment with multiple users or higher availability requirements, use the docker-compose stack.