From fd65d06ba18feb5ef362ddfd7127dd756a9afa5b Mon Sep 17 00:00:00 2001 From: Randall Hand Date: Wed, 25 Feb 2026 12:22:11 -0500 Subject: [PATCH 1/3] fix: deploy upgrade watchdog to legacy path for older sidecar configs (#1888) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Users with older docker-compose.upgrade.yml still reference the old script path (command: /data/scripts/upgrade-watchdog.sh) and old COMPOSE_PROJECT_DIR=/data/compose. Since auto-upgrade only updates the container image — not compose files on the host — these users never got the fix from PR #1977. - Entrypoint now also deploys upgrade-watchdog.sh to /data/scripts/ for backward compatibility with older sidecar configurations - Watchdog script adds /data/compose as a fallback compose directory Co-Authored-By: Claude Opus 4.6 --- docker/docker-entrypoint.sh | 10 ++++++++++ scripts/upgrade-watchdog.sh | 8 ++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/docker/docker-entrypoint.sh b/docker/docker-entrypoint.sh index f79d934e..8277123c 100755 --- a/docker/docker-entrypoint.sh +++ b/docker/docker-entrypoint.sh @@ -107,6 +107,16 @@ if [ -d "$SCRIPTS_SOURCE_DIR" ]; then chmod +x "$INTERNAL_SCRIPTS_DIR/upgrade-watchdog.sh" echo "✓ Upgrade watchdog script deployed" + # Backward compatibility: also deploy to /data/scripts/ for older sidecar configs + # that still reference the old path (command: /data/scripts/upgrade-watchdog.sh) + # Only deploy if /data/scripts exists or can be created (skip if bind-mounted with other content) + LEGACY_SCRIPTS_DIR="/data/scripts" + if mkdir -p "$LEGACY_SCRIPTS_DIR" 2>/dev/null; then + cp "$SCRIPTS_SOURCE_DIR/upgrade-watchdog.sh" "$LEGACY_SCRIPTS_DIR/upgrade-watchdog.sh" + chmod +x "$LEGACY_SCRIPTS_DIR/upgrade-watchdog.sh" + echo "✓ Upgrade watchdog script also deployed to $LEGACY_SCRIPTS_DIR (backward compat)" + fi + # Audit log the deployment if [ -w "$(dirname "$AUDIT_LOG")" ]; then echo "{\"timestamp\":\"$(date -u +"%Y-%m-%dT%H:%M:%SZ")\",\"event\":\"upgrade_script_deployed\",\"script_hash\":\"$SCRIPT_HASH\",\"version\":\"${npm_package_version:-unknown}\",\"user\":\"system\"}" >> "$AUDIT_LOG" 2>/dev/null || true diff --git a/scripts/upgrade-watchdog.sh b/scripts/upgrade-watchdog.sh index 2b78326d..196d076c 100755 --- a/scripts/upgrade-watchdog.sh +++ b/scripts/upgrade-watchdog.sh @@ -166,17 +166,21 @@ pull_image() { recreate_container() { log "Recreating container: $CONTAINER_NAME" - # Resolve compose directory - try configured path, then standard mount point + # Resolve compose directory - try configured path, then known mount points + # Older sidecar configs used /data/compose, current uses /compose local compose_dir="" if [ -d "$COMPOSE_PROJECT_DIR" ] && [ -f "$COMPOSE_PROJECT_DIR/docker-compose.yml" ]; then compose_dir="$COMPOSE_PROJECT_DIR" elif [ -d "/compose" ] && [ -f "/compose/docker-compose.yml" ]; then log_warn "COMPOSE_PROJECT_DIR=$COMPOSE_PROJECT_DIR not found, falling back to /compose" compose_dir="/compose" + elif [ -d "/data/compose" ] && [ -f "/data/compose/docker-compose.yml" ]; then + log_warn "Falling back to legacy path /data/compose" + compose_dir="/data/compose" fi if [ -z "$compose_dir" ]; then - log_error "No docker-compose.yml found at $COMPOSE_PROJECT_DIR or /compose" + log_error "No docker-compose.yml found at $COMPOSE_PROJECT_DIR, /compose, or /data/compose" log_error "The upgrade sidecar requires Docker Compose files to recreate containers safely." log_error "Mount your compose directory to /compose in the sidecar container." return 1 From 7d5add681bfb0a20696999e49e444a3c5aefa0c5 Mon Sep 17 00:00:00 2001 From: Randall Hand Date: Wed, 25 Feb 2026 12:28:00 -0500 Subject: [PATCH 2/3] chore: add deprecation warnings for legacy sidecar paths (#1888) Log warnings at startup when the watchdog script is running from the legacy /data/scripts/ path, and when falling back to /data/compose for the compose directory. Warns users to update their docker-compose.upgrade.yml. Co-Authored-By: Claude Opus 4.6 --- scripts/upgrade-watchdog.sh | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/scripts/upgrade-watchdog.sh b/scripts/upgrade-watchdog.sh index 196d076c..674dc19d 100755 --- a/scripts/upgrade-watchdog.sh +++ b/scripts/upgrade-watchdog.sh @@ -175,7 +175,7 @@ recreate_container() { log_warn "COMPOSE_PROJECT_DIR=$COMPOSE_PROJECT_DIR not found, falling back to /compose" compose_dir="/compose" elif [ -d "/data/compose" ] && [ -f "/data/compose/docker-compose.yml" ]; then - log_warn "Falling back to legacy path /data/compose" + log_warn "Falling back to legacy path /data/compose - please update COMPOSE_PROJECT_DIR to /compose" compose_dir="/data/compose" fi @@ -490,6 +490,19 @@ main() { log "Compose project: $COMPOSE_PROJECT_DIR" log "==================================================" + # Warn if running from the legacy script path + SCRIPT_PATH="$(readlink -f "$0" 2>/dev/null || echo "$0")" + case "$SCRIPT_PATH" in + /data/scripts/*) + log_warn "==================================================" + log_warn "Running from legacy path: $SCRIPT_PATH" + log_warn "Please update your docker-compose.upgrade.yml to use:" + log_warn " command: /data/.meshmonitor-internal/upgrade-watchdog.sh" + log_warn "See: https://github.com/Yeraze/meshmonitor/blob/main/docker-compose.upgrade.yml" + log_warn "==================================================" + ;; + esac + # Initialize status write_status "ready" From 2b307fc6faecafbbe083ffb839a567b04e6c776f Mon Sep 17 00:00:00 2001 From: Randall Hand Date: Wed, 25 Feb 2026 12:30:35 -0500 Subject: [PATCH 3/3] docs: fix outdated script path in auto-upgrade docs (#1888) Update the info box to reference /data/.meshmonitor-internal/ instead of the old /data/scripts/ path. Co-Authored-By: Claude Opus 4.6 --- docs/configuration/auto-upgrade.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration/auto-upgrade.md b/docs/configuration/auto-upgrade.md index 7801ee23..bd84c36c 100644 --- a/docs/configuration/auto-upgrade.md +++ b/docs/configuration/auto-upgrade.md @@ -48,7 +48,7 @@ The auto-upgrade feature uses a **watchdog sidecar** container that: ### Docker Compose Setup ::: info -The upgrade watchdog script is automatically deployed to `/data/scripts/` by the MeshMonitor container on startup. No manual script download is required. +The upgrade watchdog script is automatically deployed to `/data/.meshmonitor-internal/` by the MeshMonitor container on startup. No manual script download is required. ::: 1. **Enable the watchdog sidecar** by using the upgrade overlay: