Skip to content

v1.0.0

Choose a tag to compare

@BattermanZ BattermanZ released this 02 Jun 09:43
d9d0da8

DocktorNet v1.0.0

First stable release. DocktorNet is a Docker/Podman label-driven reconciler: it reads docktornet.* container labels across your machines and continuously reconciles external state in Nginx Proxy Manager, Cloudflare DNS, and Gatus.

Architecture

  • Agent — lists containers from Docker and Podman sockets, filters to docktornet.* labels, builds a snapshot, and pushes it to the server with bounded exponential backoff. A single agent can serve both Docker and Podman via group_add.
  • Server — bearer-token-authenticated ingest API (POST /api/v1/snapshot), SQLite persistence (WAL + migrations), and a reconciliation engine that drives the integrations.
  • Core — shared types and the typed docktornet.* label parser.

Reconciliation engine

  • Derives intended services from container labels and tracks external resources in the database.
  • Diff and full-resync paths serialized through a shared mutex; periodic full verify-and-repair resync loop.
  • Idempotent writes: skips NPM proxy-host updates, Gatus files, and CF records that are already in sync.
  • Adopts pre-existing NPM proxy hosts on create conflict instead of failing.
  • Guards against NPM overload from bulk snapshot reconciles.

Integrations

Nginx Proxy Manager

  • Reconciles proxy hosts (create/update/get-by-id), preserving base paths and cert case matching.
  • block_exploits, websockets, and HSTS subdomains enabled by default.
  • Per-machine forward host reporting; forward host configurable via DOCKTORNET_NPM_FORWARD_HOST.

Cloudflare DNS

  • Reconciles DNS records (create/update/get-by-id) with delete-envelope parsing.

Gatus

  • Writes and lifecycles managed endpoint files with disambiguated, clean names.
  • Optional name label, host-group default, and custom alert provider.
  • Emits Telegram alerts and honors group overrides.

Operations

  • /healthz endpoint and graceful SIGTERM shutdown.
  • Rootless distroless Docker images for agent and server (built via cargo-chef).
  • Compose files, deployment guide, v1 cutover runbook, and external-state backup script.
  • Quieter logging: reduced heartbeat noise, added missing reconcile-action logs.
  • Warns when a machine ID appears from multiple source IPs.

Documentation

  • Full container-label reference grouped by module, label examples, and a compose snippet.
  • Annotated .env.example with required/optional fields and defaults.
  • v1 design spec and implementation plans.

This is the initial release — 96 commits since project inception.