Skip to content

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