Skip to content

DocktorNet v1.1.0

Latest

Choose a tag to compare

@BattermanZ BattermanZ released this 19 Jul 15:23
7730a1d

DocktorNet v1.1.0 adds multi-domain Nginx Proxy Manager support and substantially strengthens reconciliation safety across Docker/Podman agents, NPM, Cloudflare DNS, and Gatus.

Highlights

  • Route several comma-separated public domains through one NPM proxy host.
  • Remove NPM proxy hosts and Cloudflare DNS records safely after a service disappears, while preserving them through the restart grace period.
  • Persist pending external-resource removals so cleanup survives restarts and temporary API failures.
  • Sequence reconciliation per machine so stale background work cannot resurrect removed resources.

Reliability and recovery

  • Skip authoritative snapshot pushes when any configured container source fails or times out.
  • Enumerate Docker/Podman sources concurrently and reject duplicate container names rather than silently merging them.
  • Restore external-resource mappings when services return during the grace period.
  • Recreate NPM and Cloudflare resources deleted out of band.
  • Add Cloudflare request timeouts and shared Retry-After backoff.
  • Treat already-deleted NPM and Cloudflare resources as successful cleanup.
  • Avoid redundant Cloudflare updates and honor Gatus removal grace periods.
  • Chunk large SQLite ID lists to stay below parameter limits.

Security and validation

  • Compare bearer tokens using a constant-time primitive.
  • Hide agent inventory from unauthenticated /healthz responses.
  • Reject empty bearer secrets and sub-second polling intervals.
  • Reject non-canonical label indices and unsafe SSL configurations without a matching certificate.
  • Warn when the server is bound to a non-loopback plaintext address.

Upgrade notes

  • Database migrations 0004_pending_npm_removals.sql and 0005_pending_cf_removals.sql run automatically at startup.
  • NPM proxy hosts and Cloudflare records are now deleted after the removal grace period when their service remains absent.
  • Anonymous /healthz callers receive liveness information only; include the bearer token to retrieve agent inventory.
  • DOCKTORNET_SECRET must be non-empty and DOCKTORNET_POLL_INTERVAL must be at least one second.
  • All DocktorNet Cargo packages now report version 1.1.0.

Validation

  • cargo fmt --all -- --check
  • cargo clippy --workspace --all-targets -- -D warnings
  • cargo test --workspace — 188 passed, 0 failed

Full changelog: v1.0.0...v1.1.0