From 44e1c1c50e5eaaace88203cc39c129f5e7417240 Mon Sep 17 00:00:00 2001 From: Mikei386 <44135113+Mikei386@users.noreply.github.com> Date: Fri, 4 Sep 2026 23:41:47 +0200 Subject: [PATCH] Fix Hermes cron delivery to Docker profiles --- docs/RECOVERY.md | 25 +++++++++++++++++++++++ platform/hermes/025-cron-profile-root-fix | 17 +++++++++++++++ 2 files changed, 42 insertions(+) create mode 100755 platform/hermes/025-cron-profile-root-fix diff --git a/docs/RECOVERY.md b/docs/RECOVERY.md index e8e2897..4dea825 100644 --- a/docs/RECOVERY.md +++ b/docs/RECOVERY.md @@ -59,6 +59,31 @@ Container-Images stammen aus den dokumentierten Registries beziehungsweise den eigenen Gitea-Repositories. Damit besteht die Wiederherstellung aus Appdata-Restore plus Neuerstellung über die jeweilige Template-XML. +### Hermes Cron/Bot-Chat auf Unraid + +Der offizielle Hermes-Build `0.21.0` mit Upstream-Stand `4b30b917` entfernt im +Cron-Zustellprozess fälschlich `HERMES_HOME`. Bei einem Docker-Datenverzeichnis +unter `/opt/data` findet `deliver=bot-chat:` dadurch vorhandene Profile +nicht. Bis zur Übernahme des Upstream-Fixes bindet die Unraid-Vorlage dieses +idempotente Startskript ein: + +- Host: `/mnt/nvme-storage/appdata/Hermes-Agent/patches/025-cron-profile-root-fix` +- Container: `/etc/cont-init.d/025-cron-profile-root-fix` (read-only) +- Quelle: `platform/hermes/025-cron-profile-root-fix` + +Das Skript entfernt nur die bekannte fehlerhafte Zeile. Ist sie in einem neuen +Image nicht mehr vorhanden, bleibt der Workaround automatisch wirkungslos. Es +stellt außerdem `/usr/local/bin/hermes` wieder her, weil der offizielle +Container den vom eigenen Doctor erwarteten CLI-Link derzeit nicht anlegt. + +Nach einem Restore die Datei mit Modus `0755` ins Appdata kopieren, den Mount in +der DockerMan-Vorlage kontrollieren und den Container neu erstellen. Prüfung: + +```bash +docker logs Hermes-Agent 2>&1 | grep cron-profile-root-fix +docker exec Hermes-Agent hermes cron doctor +``` + ## Kontrolle ```bash diff --git a/platform/hermes/025-cron-profile-root-fix b/platform/hermes/025-cron-profile-root-fix new file mode 100755 index 0000000..53fc24a --- /dev/null +++ b/platform/hermes/025-cron-profile-root-fix @@ -0,0 +1,17 @@ +#!/bin/sh +set -eu + +target=/opt/hermes/cron/scheduler_delivery.py +broken='env.pop("HERMES_HOME", None)' + +if [ -f "$target" ] && grep -Fq "$broken" "$target"; then + sed -i '/^[[:space:]]*env\.pop("HERMES_HOME", None)[[:space:]]*$/d' "$target" + echo "[cron-profile-root-fix] preserved HERMES_HOME for named-profile delivery" +else + echo "[cron-profile-root-fix] upstream code already fixed or layout changed; no action" +fi + +cli_dir="${HERMES_HOME:-/opt/data}/.local/bin" +mkdir -p "$cli_dir" +ln -sfn /opt/hermes/.venv/bin/hermes "$cli_dir/hermes" +ln -sfn /opt/hermes/.venv/bin/hermes /usr/local/bin/hermes