Quickstart
Get freshdock watching a container in about a minute. No config file required —
freshdock is driven by container labels and environment variables; a freshdock.toml
is only needed later if you want notifications.
1. Install
Pick one (full options in the README):
cargo install freshdock # from crates.io
# or
docker pull ghcr.io/turbootzz/freshdock:latest # container image
2. See what freshdock would do (read-only)
Label a container to opt it in, then run check — it never changes anything:
services:
web:
image: nginx:1.27
labels:
- "freshdock.enable=true" # opt in; mode defaults to watch
freshdock check
You’ll get a table of opted-in containers and whether each has an update available. (See the CLI reference for what the status cells mean.)
3. Run the daemon
freshdock is opt-in and defaults enabled containers to watch (notice updates,
never restart). Start the scheduler:
docker run -d \
--name freshdock \
--restart unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
ghcr.io/turbootzz/freshdock:latest run
This is the minimal-watch.yml example. A
read-only socket is enough for watch.
4. Let it actually update something
Switch a container to an updating mode and give the daemon a writable socket:
labels:
- "freshdock.enable=true"
- "freshdock.mode=nightly" # check at 04:00 daily; recreate if newer
- "freshdock.notify=true" # if you've configured a notifier
Updates are health-gated with automatic rollback — a broken new image is reverted, not left running.
Next steps
- Configuration reference — every label, setting, and env var.
- Scheduling — modes and cron syntax.
- Notifications — webhook, Discord, Telegram, SMTP.
- Registry authentication — private images.
- Deployment — systemd, socket permissions, compatibility.
- Troubleshooting — something not behaving? Start here.
- Coming from Watchtower?