From bdae014bff8bfcd1d6fa78041c8af57e938c6000 Mon Sep 17 00:00:00 2001 From: Micha Date: Fri, 29 May 2026 20:04:24 +0200 Subject: [PATCH] Harden renovate runner: env-file, add-host, explicit DNS Drei Issues beim Erstlauf gefunden und gefixt: 1. EAI_AGAIN: Renovate-Container konnte git.kaleschke.info nicht aufloesen. Analog zu Komodos extra_hosts mappen wir den Hostname per --add-host auf 192.168.178.58 (LAN-IP des Unraid-Hosts). Zusaetzlich --dns 1.1.1.1/8.8.8.8 fuer externe Image-Registries. 2. Token-Leak in ps und docker inspect: -e RENOVATE_TOKEN=... macht den Wert in Process-Listing sichtbar. Stattdessen --env-file mit einem 0600 tempfile unter $RENOVATE_STATE_DIR/.env, das nach dem Lauf via shred bzw. rm geloescht wird. 3. Doppelter rc=$? Block plus return innerhalb einer {}-Subshell waren Tot-Code; aufgeraeumt. Co-Authored-By: Claude Opus 4.7 --- ops/renovate/run-renovate.sh | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/ops/renovate/run-renovate.sh b/ops/renovate/run-renovate.sh index dd03815..da13132 100644 --- a/ops/renovate/run-renovate.sh +++ b/ops/renovate/run-renovate.sh @@ -21,6 +21,11 @@ RENOVATE_TOKEN_FILE="${RENOVATE_TOKEN_FILE:-/mnt/user/appdata/secrets/renovate_t RENOVATE_LOG_DIR="${RENOVATE_LOG_DIR:-/mnt/user/services/renovate/logs}" RENOVATE_STATE_DIR="${RENOVATE_STATE_DIR:-/mnt/user/services/renovate/state}" RENOVATE_CONFIG_FILE="${RENOVATE_CONFIG_FILE:-/mnt/user/services/homelab-infra/renovate.json}" +# Gitea sitzt hinter Traefik unter git.kaleschke.info; der WAN-Pfad geht +# ueber Public-IP -> FRITZBox. Vom Docker-Container aus loest der Standard- +# Resolver den Host moeglicherweise nicht auf (siehe `extra_hosts` im Komodo- +# Compose). Wir mappen direkt auf die LAN-IP des Unraid-Hosts. +GITEA_HOST_LAN_IP="${GITEA_HOST_LAN_IP:-192.168.178.58}" if [ ! -r "$RENOVATE_TOKEN_FILE" ]; then echo "Renovate token file missing or unreadable: $RENOVATE_TOKEN_FILE" >&2 @@ -48,18 +53,32 @@ LATEST_SYMLINK="$RENOVATE_LOG_DIR/latest.log" echo "[renovate] log: $LOG_FILE" echo + # Token wird ueber --env-file uebergeben, damit der Wert weder in + # `ps`-Ausgabe noch im docker inspect -Snapshot landet. Das Env-File + # liegt unter $RENOVATE_STATE_DIR/.env und wird mit 0600 angelegt. + ENV_FILE="$RENOVATE_STATE_DIR/.env" + umask 077 + cat > "$ENV_FILE" <&1 - rc=$? + shred -u "$ENV_FILE" 2>/dev/null || rm -f "$ENV_FILE" + echo echo "[renovate] finished rc=$rc" exit $rc