Fail closed when Hermes local config is unreadable
This commit is contained in:
+2
-1
@@ -788,12 +788,13 @@ services:
|
||||
image: ${HERMES_IMAGE:-nousresearch/hermes-agent@sha256:143bdb9086bb2db645346179f11091e621ef6b7f4f9e5049ae7454bfeb3a0495}
|
||||
container_name: mike-ai-hermes
|
||||
restart: unless-stopped
|
||||
command: [gateway, run]
|
||||
command: [/usr/local/bin/start-hermes-managed]
|
||||
env_file:
|
||||
- /data/hermes/.env
|
||||
volumes:
|
||||
- /data/hermes:/opt/data
|
||||
- /data/hermes/workspace:/workspace
|
||||
- ./platform/hermes/start-hermes-managed.sh:/usr/local/bin/start-hermes-managed:ro
|
||||
environment:
|
||||
HERMES_HOME: /opt/data
|
||||
dns: ["${AI_DNS:-1.1.1.1}"]
|
||||
|
||||
@@ -96,6 +96,8 @@ Der Router übernimmt:
|
||||
Assistant, ARR, Navidrome und ein gemeinsamer MUA-Unraid-Zugang
|
||||
- kein Docker-Socket, kein Host-Root-Mount und keine Veröffentlichung auf der
|
||||
Universitätsadresse
|
||||
- Start verweigert, wenn die verwaltete Konfiguration nicht lesbar ist oder
|
||||
nicht ausdrücklich `custom` und den lokalen Router als Provider nennt
|
||||
|
||||
## Vision
|
||||
|
||||
|
||||
@@ -90,6 +90,10 @@ Der Schlüssel der Agent-API liegt entsprechend unter
|
||||
`/etc/mike-ai/hermes-api-key`. Beide Werte gehören weder in Git noch in Chats.
|
||||
Hermes' lokales Terminal sieht nur `/data/hermes/workspace` im Container. Für
|
||||
Athena und Unraid verwendet es die dokumentierten Operator-/MUA-MCPs.
|
||||
Ein Startwächter beendet den Container absichtlich, falls diese verwaltete
|
||||
Konfiguration nicht lesbar ist oder auf einen anderen Provider als den lokalen
|
||||
Router zeigt. Dadurch darf ein Rechtefehler nicht auf Hermes' Cloud-Standard
|
||||
zurückfallen.
|
||||
|
||||
Der SSH-Fallback lauscht ausschließlich auf der IPv4-Adresse von `wg0` im
|
||||
WireGuard-Gateway-Container. Er wird nicht als Docker-Port auf dem
|
||||
|
||||
@@ -55,4 +55,5 @@ if [[ -s $HERMES_DATA_DIR/config.yaml ]] && \
|
||||
"$HERMES_DATA_DIR/config.yaml.before-managed-update-$(date +%Y%m%d-%H%M%S)"
|
||||
fi
|
||||
install -m 0600 "$STACK_DIR/platform/hermes/config.yaml" "$HERMES_DATA_DIR/config.yaml"
|
||||
chown -R 10000:10000 "$HERMES_DATA_DIR"
|
||||
printf 'HERMES_CONFIG_OK %s\n' "$HERMES_DATA_DIR"
|
||||
|
||||
Executable
+19
@@ -0,0 +1,19 @@
|
||||
#!/usr/bin/env sh
|
||||
set -eu
|
||||
|
||||
config=/opt/data/config.yaml
|
||||
if [ ! -r "$config" ]; then
|
||||
echo "HERMES_START_REFUSED: managed config is not readable" >&2
|
||||
exit 78
|
||||
fi
|
||||
grep -Eq '^[[:space:]]+provider:[[:space:]]+["'\'']?custom["'\'']?[[:space:]]*$' "$config" || {
|
||||
echo "HERMES_START_REFUSED: provider is not custom" >&2
|
||||
exit 78
|
||||
}
|
||||
grep -Eq '^[[:space:]]+base_url:[[:space:]]+["'\'']?http://router:8081/v1["'\'']?[[:space:]]*$' "$config" || {
|
||||
echo "HERMES_START_REFUSED: local router URL is missing" >&2
|
||||
exit 78
|
||||
}
|
||||
|
||||
exec hermes gateway run
|
||||
|
||||
Reference in New Issue
Block a user