Skip to content

Releases: Arelius-D/NeXdocMan

Release v3.2: Dynamic Retry Logging & Log Cleanup

Choose a tag to compare

@Arelius-D Arelius-D released this 29 Jun 13:32

Release v3.2: Dynamic Retry Logging & Log Cleanup

This release resolves false-positive error logging during transient container registry pull retries. Failed pull attempts that are successfully retried are now logged with a warning severity instead of polluting logs with critical exit code dumps.

Enhancements:

  • Dynamic Command Retry Logging: Configured run_command to support custom error severities using the RUN_COMMAND_ERR_LEVEL environment variable.
  • Cleaned Retries: Docker pull failures on transient attempts (e.g., rate limits or registry timeouts) are now flagged as [WARNING] in log files rather than [ERROR], preserving the high-priority [ERROR] logging only if the final attempt fails.

Release v3.1: Stale Recreations Fix & Pull Retry Logic

Choose a tag to compare

@Arelius-D Arelius-D released this 24 Jun 21:43

This release fixes critical issues with container recreations when updating images, suppresses background docker daemon inspect errors from leaking into cron logs, and adds exponential backoff retry logic for registry pulls to handle network glitches.

Bug Fixes:

  • Stale Container Recreations: Solved issues where old container IDs became stale after earlier compose service restarts, leading to empty warnings ([WARNING] is a standalone container). Containers are now mapped and pre-cached securely during the scan phase before the update runs.
  • Docker Inspect Error Suppression: Cleaned up the background recreation logs, ensuring failures to inspect deleted/stale container IDs do not leak raw error: no such object stderr dumps to the cron log.
  • Deduplicated Service Restarts: Added tracking of already recreated Compose services to prevent redundant container updates when multiple containers share the same compose configuration.

Enhancements:

  • Registry Pull Retry Logic: Added robust retry support for pulling Docker images. If a pull command fails (e.g., timeout or network registry glitch), NeXdocMan will attempt to pull the image up to 3 times with exponential backoff (5 seconds and 10 seconds delay), logging warning attempts to the primary log file /var/log/NeXdocMan/nexdocman.log.

Release v3.0: Targeted Image & Container Updates (Surgical Control)

Choose a tag to compare

@Arelius-D Arelius-D released this 06 Jun 20:46

This release introduces surgical control for image audits and container updates, allowing administrators to target specific containers, images, or compose services via CLI arguments or an interactive TUI sub-menu.

Key Enhancements:

  • Targeted Updates & Audits (CLI): Flags -k / --check-images and -u / --update-images now accept an optional trailing argument to filter operations (e.g., nexdocman -k caddy or nexdocman -u qbittorrent).
  • Targeted Updates (TUI): Option 4 (Check Local Images for Available Updates) now opens an interactive sub-menu where users can execute a global sweep or input a target name manually.
  • Pre-filtering Optimization: Before querying remote registry manifests, NeXdocMan pre-filters local resources. If a target is specified, images that do not match the target name and have no active containers matching the target name are skipped immediately, eliminating redundant network API calls and saving bandwidth.
  • Surgical Container Recreations: When targeting a specific container or service, NeXdocMan only hot-swaps matching compose services. Other running containers using the same base image remain completely unaffected.
  • Improved Option Help: Integrated targeted parameter usage documentation directly into the utility help menu (nexdocman -h).

Release v2.9: Auto-Update Blocklist & Log Alignment

Choose a tag to compare

@Arelius-D Arelius-D released this 04 Jun 19:19

This release introduces a container/image auto-update blocklist, aligns logging formatting consistency, renames the legacy cron log file, and introduces configuration-driven log paths.

Key Enhancements:

  • Auto-Update Blocklist (EXCLUDE_CONTAINERS): Added the ability to exclude specific containers or images from automated updates using a comma-separated list of exact names or glob patterns (e.g. db_*, node:*). This is commented out by default in the configuration file.
  • Smart Image Pull Skipping: If all containers running a specific image are on the blocklist, NeXdocMan will skip pulling that image entirely to conserve system bandwidth.
  • Renamed Cron Log: Legacy cron.log is renamed to nexdocman_cron.log to match standard naming.
  • Config-driven Log Paths: Added LOG_FILE and CRON_LOG_FILE parameters to nexdocman.cfg to make all log locations customizable.
  • Log Migration: Upgrading to v2.9 automatically migrates old /var/log/NeXdocMan/cron.log entries to nexdocman_cron.log.bak to preserve your history.
  • Command Output Formatting: Captured the output of container recreation tasks (docker compose up -d) to ensure log entries consistently have timestamps and prefixes.
  • Failed Command Logging: Enhanced run_command to print stdout/stderr of failed commands at [ERROR] log level for easier auditing.
  • Log Pruning: Extended chronological log pruning to apply to both operational and cron log files.

Unified Status Dashboard & Bug Fixes

Choose a tag to compare

@Arelius-D Arelius-D released this 20 May 21:29

New: Unified Status Dashboard (-s / --status)

A new display_status module has been added. Running nexdocman -s (or TUI option 3) now delivers a single formatted report covering running containers, exited/paused containers, dangling images, unused volumes, and orphaned custom networks (bridge, host, and none are excluded).

Fix: Compose Hot-Swap Now Reads Correct Config File

When recreating Compose-managed containers after an image update, NeXdocMan now correctly reads the com.docker.compose.project.config_files label and passes -f <compose_file> to docker compose up. Previously the recreate step always assumed the default docker-compose.yml path, silently failing on non-standard setups.

Fix: log_message Output No Longer Swallowed

In v2.7, log output was suppressed when not running in an interactive terminal. This caused silent failures during cron execution. The guard has been removed — tee now always mirrors output to the log file correctly.

Fix: Version Comparison Logic in --manage

Docker version string parsing was fragile and always reported "no changes detected" after an update. The version string is now cleaned before comparison.

Fix: RepoDigests Panic on Locally-Built Images

docker inspect would crash on images with an empty RepoDigests slice. Now uses a safe length guard before indexing.

Fix: TUI Read Crash Guard

read choice and read -n 1 -s now use || exit 0 to gracefully handle EOF instead of looping or hanging.

TUI Menu Renumbered

Option 3 is now Display Docker & Resource Status. All subsequent options renumbered accordingly (max is now 8).

Intelligent Configuration Migration System

Choose a tag to compare

@Arelius-D Arelius-D released this 12 May 12:01

Version 2.7 introduces a robust, state-aware configuration management engine. You can now safely upgrade NeXdocMan without ever losing your existing .cfg settings.

New Features:

  • State-Aware Migration Engine:
    • During deployment, the script now intelligently reads your existing nexdocman.cfg file and maps your custom settings directly into the memory of the new version.
    • It securely backs up your old configuration to nexdocman.cfg.bak.
    • It generates a fresh .cfg file incorporating the new structure, features, and comments of the latest release, while perfectly preserving your previous settings (like log levels and cleanup toggles).
  • Enhanced Uninstaller:
    • The uninstall_utility logic has been hardened. Running -r now strictly guarantees that all associated NeXdocMan cron jobs (both auto-cleanup and auto-image-updater) are successfully stripped from your crontab.

Bug Fixes:

  • Resolved an issue where deploying an update would fail to expose new feature variables to users who already had a .cfg file.

Hot-Swap feature

Choose a tag to compare

@Arelius-D Arelius-D released this 12 May 11:47

Building on the Hot-Swap feature introduced in v2.4, NeXdocMan can now fully automate the checking, pulling, and recreation of your Docker containers via system crontab.

New Features:

  • Automated Image Updater:
    • Added ENABLE_AUTO_IMAGE_UPDATE to nexdocman.cfg. When enabled, NeXdocMan will silently check for image updates in the background based on your defined IMAGE_UPDATE_CRON schedule.
    • Automatically pulls updates and seamlessly hot-swaps active Compose containers without any user interaction required.
  • Intelligent Schedule Management:
    • The -C (or TUI Option 5) command now dynamically syncs both your cleanup and update schedules to the system crontab.
    • 100% Safe: Uses robust strict-matching logic to add, modify, or remove its cron jobs without ever risking duplication or affecting any of your other existing crontab entries.

Documentation:

  • The README.md has been updated with a new configuration section detailing the ENABLE_AUTO_IMAGE_UPDATE variables.

Self-Maintaining Core

Choose a tag to compare

@Arelius-D Arelius-D released this 26 Apr 18:06

Managing the manager is now a thing of the past. Version 2.5 introduces a native self-update module that allows NeXdocMan to update itself directly from GitHub.

New Features:

  • Self-Update Module (-U / --update-utility):
    • Polls the GitHub API to detect new releases.
    • Automates the download, extraction, and re-deployment of the latest version.
    • One-click update path from both the CLI and the TUI.
  • TUI Enhancement: New menu option "7" for utility maintenance.
  • Version v2.5 Branding: Refreshed help menus and interactive prompts.

Technical Notes:

The update process uses the existing --deploy logic to ensure a clean global installation at /usr/local/bin/nexdocman.

v2.4 - Intelligent Container Recreation

Choose a tag to compare

@Arelius-D Arelius-D released this 26 Apr 17:55

The "Hot-Swap" Update

This release introduces intelligent container recreation to ensure that image updates are actually applied to your running infrastructure.

New Features:

  • Automatic Container Mapping: NeXdocMan now scans for running containers linked to images marked for updates.
  • Intelligent Recreation:
    • Compose Services: Automatically executes docker compose up -d --no-deps in the correct working directory to swap in new images without losing configuration or volume data.
    • Standalone Detection: Provides clear warnings for non-Compose containers that require manual recreation.
  • Enhanced Versioning: Refined CLI and TUI output for version v2.4.

Documentation:

The README has been updated with a new section on Hot-Swap Updates and refreshed installation paths.

v2.3: Image Audit Optimization & Branding Standardization

Choose a tag to compare

@Arelius-D Arelius-D released this 19 Apr 00:16

Release v2.3

This update optimizes the Docker image auditing process and standardizes the project's system footprint.

Key Changes:

  • Image Auditing: Reverted to buildx-based digest verification for improved performance.
  • Mapping Intelligence: Implemented detection for missing local RepoDigest mappings.
  • Standardization: Updated all system path references and documentation to match the NeXdocMan capitalization.
  • Dependency Management: Removed the jq requirement to maintain a lean installation.
  • Deployment: Version synced to v2.3 across the utility, documentation, and distribution archive.