Repository navigation
Releases: Arelius-D/NeXdocMan
Release list
Release v3.2: Dynamic Retry Logging & Log Cleanup
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_commandto support custom error severities using theRUN_COMMAND_ERR_LEVELenvironment 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
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 objectstderr 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)
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-imagesand-u/--update-imagesnow accept an optional trailing argument to filter operations (e.g.,nexdocman -k caddyornexdocman -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
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.logis renamed tonexdocman_cron.logto match standard naming. - Config-driven Log Paths: Added
LOG_FILEandCRON_LOG_FILEparameters tonexdocman.cfgto make all log locations customizable. - Log Migration: Upgrading to v2.9 automatically migrates old
/var/log/NeXdocMan/cron.logentries tonexdocman_cron.log.bakto 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_commandto 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
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
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.cfgfile 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
.cfgfile incorporating the new structure, features, and comments of the latest release, while perfectly preserving your previous settings (like log levels and cleanup toggles).
- During deployment, the script now intelligently reads your existing
- Enhanced Uninstaller:
- The
uninstall_utilitylogic has been hardened. Running-rnow strictly guarantees that all associated NeXdocMan cron jobs (both auto-cleanup and auto-image-updater) are successfully stripped from your crontab.
- The
Bug Fixes:
- Resolved an issue where deploying an update would fail to expose new feature variables to users who already had a
.cfgfile.
Hot-Swap feature
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_UPDATEtonexdocman.cfg. When enabled, NeXdocMan will silently check for image updates in the background based on your definedIMAGE_UPDATE_CRONschedule. - Automatically pulls updates and seamlessly hot-swaps active Compose containers without any user interaction required.
- Added
- 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.
- The
Documentation:
- The
README.mdhas been updated with a new configuration section detailing theENABLE_AUTO_IMAGE_UPDATEvariables.
Self-Maintaining Core
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
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-depsin 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.
- Compose Services: Automatically executes
- 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
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.