v0.2.5.
Complete release notes · 2026-08-19. Read upgrade instructions and runtime limits before deploying.
Fixed
- Fail-Closed Traefik Bootstrap: Docker network creation, Traefik image pulls, container startup and network attachment are now mandatory verified installation gates; NineDeploy no longer reports a healthy install while domain routing is unavailable.
- Idempotent Traefik Provisioning: Re-running the installer now reuses a locally verified Traefik v3 image. When no usable image exists it attempts Docker Hub exactly once, then immediately checksum-verifies the official Traefik release binary and constructs a minimal image without the conflicting Alpine layer; the installer no longer loops pulls, prunes images, restarts Docker, or edits containerd metadata.
- Missing Containerd Snapshot Root Repair: Docker 29 hosts whose overlayfs metadata remains but physical
snapshots/ directory was lost are repaired by recreating only that required root directory with strict root ownership and permissions; existing metadata and container data are never removed. - Traefik Status Detection: Container liveness now comes exclusively from Docker state and no longer flips to
stopped when optional version probing fails; both the official PATH binary and the layer-free /traefik binary are supported. - Permanent systemd Watchdog Migration: The installer now installs and verifies an explicit
Type=simple / WatchdogSec=0 runtime policy, repairing stale Type=notify installations that could SIGTERM long Docker pulls with exit code 143. - Absolute Data Directory Rendering: Relative
.env values such as NINEDEPLOY_DATA_DIR=./.data are resolved against the installation directory before being written to systemd ReadWritePaths. - Drop-in Ordering Safety: The installer-owned watchdog safety policy sorts after conventional
override.conf files and replaces the short-lived numeric-prefix migration file without deleting administrator configuration. - Removed Invalid Runtime Notify Client: Removed the dependency-free stream-socket
sd_notify implementation and its watchdog calls; installer HTTP health checks remain the authoritative readiness gate. - Installer Argument Parsing: Correctly parses both spaced and equals forms of
--version and --channel, with validation for unsupported values. - Accurate Docker Exit Diagnostics: Documentation now distinguishes SIGTERM exit 143 from the usual OOM/SIGKILL exit 137.
Source CHANGELOG.md at 6046cfe8