github amayer1983/docksentry v2.0.0
v2.0.0 — one instance, many machines

5 hours ago

The version number catching up with what shipped. Everything here already works in a 1.x release — 2.0 is the line drawn under it, once the last thing I could verify myself was verified.

Multi-host

One instance, many machines.

environment:
  - DOCKER_HOSTS=pve1:tcp://pve1:2375, nas:ssh://root@nas

The box Docksentry runs on is always managed and is not listed. Per-host state, per-host checks, per-host monitoring, a host column in the Web UI and an @host token in the bots. An unreachable host is reported and skipped rather than taking the run down. Self-update stays local — Docksentry updates the instance it runs in, not the ones on your other boxes.

Everything is a front end

The Web UI, an interactive Telegram bot, an interactive Discord bot with 27 slash commands, /metrics, and a read-only JSON API behind named tokens. All of them drive the same update engine behind the same single lock, so no two can disagree about what happened.

Notifications go well past Telegram now: Discord, ntfy, Gotify, Matrix, generic webhooks, SMTP, and Apprise — which covers about a hundred services without a line of our code.

It watches, not just updates

Unhealthy, recovered, exited, crash-restart and OOM. The exit code comes from the runtime's live event stream rather than from inspect, which reports 0 for a container the restart policy has already brought back. The memory and CPU picture is captured 0.08 s after the death instead of up to a minute later, and it names the neighbour that squeezed the container out — not just the container that died.

An audit trail keeps who did what, through which front end, across restarts. Recorded at one seam per front end rather than per endpoint, so the next endpoint cannot be added without it. Secrets are redacted centrally and never reach the file.

The rest of it

  • A Web UI worth using on a phone — container cards below 700px, emoji actions with a legend, and a layout measured at every width from 1024 to 4K, on every page, every release.
  • Registries it can actually reach — pull-through mirrors, plain-HTTP hosts you name, private CAs via SSL_CERT_FILE, Link-header tag pagination, Basic-auth registries. Credentials go to the registry they belong to and no other; a substring match used to hand eu.gcr.io's secret to gcr.io.
  • Safety rails — per-container update policies, major-version confirmation, update windows, protected containers, MIN_IMAGE_AGE_DAYS so you are not the first to pull a compromised image, and a rollback that will not promote a stale backup over a healthy container.
  • ssh:// endpoints actually work. The image had no ssh binary, so every SSH host failed with exec: "ssh": executable file not found while the README said it worked. Found by driving the transport for the first time instead of asserting its argv.
  • A note on the first start after an update. docker pull + up -d used to be silent. Now the first boot under a new version tells you what changed, from the same changelog, with a link to the release. Silent on a fresh install, where "updated" would be untrue.

What is verified, and what is not

Multi-host now runs over real tcp:// and ssh:// endpoints rather than the local socket wearing an -H flag — measured against a docker:dind over loopback and a real sshd with the socket mounted, both driving the whole chain. Two runtimes, Docker and Podman, are exercised on every change. 76 verification procedures, 1779 named checks, written up in VERIFICATION.md.

What has not happened is anyone but me running multi-host. @LeeNX has offered to test it and expects to get to it in a couple of weeks. If you run Docksentry across several machines, #7 is the place to say how it went — including if it goes badly.

Upgrading is the usual docker pull ghcr.io/amayer1983/docksentry:latest, or nothing at all with auto-selfupdate on. No configuration changes are required; DOCKER_HOSTS is opt-in and leaving it unset behaves exactly like a single-host install.

Don't miss a new docksentry release

NewReleases is sending notifications on new releases.