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}
|
image: ${HERMES_IMAGE:-nousresearch/hermes-agent@sha256:143bdb9086bb2db645346179f11091e621ef6b7f4f9e5049ae7454bfeb3a0495}
|
||||||
container_name: mike-ai-hermes
|
container_name: mike-ai-hermes
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
command: [gateway, run]
|
command: [/usr/local/bin/start-hermes-managed]
|
||||||
env_file:
|
env_file:
|
||||||
- /data/hermes/.env
|
- /data/hermes/.env
|
||||||
volumes:
|
volumes:
|
||||||
- /data/hermes:/opt/data
|
- /data/hermes:/opt/data
|
||||||
- /data/hermes/workspace:/workspace
|
- /data/hermes/workspace:/workspace
|
||||||
|
- ./platform/hermes/start-hermes-managed.sh:/usr/local/bin/start-hermes-managed:ro
|
||||||
environment:
|
environment:
|
||||||
HERMES_HOME: /opt/data
|
HERMES_HOME: /opt/data
|
||||||
dns: ["${AI_DNS:-1.1.1.1}"]
|
dns: ["${AI_DNS:-1.1.1.1}"]
|
||||||
|
|||||||
@@ -96,6 +96,8 @@ Der Router übernimmt:
|
|||||||
Assistant, ARR, Navidrome und ein gemeinsamer MUA-Unraid-Zugang
|
Assistant, ARR, Navidrome und ein gemeinsamer MUA-Unraid-Zugang
|
||||||
- kein Docker-Socket, kein Host-Root-Mount und keine Veröffentlichung auf der
|
- kein Docker-Socket, kein Host-Root-Mount und keine Veröffentlichung auf der
|
||||||
Universitätsadresse
|
Universitätsadresse
|
||||||
|
- Start verweigert, wenn die verwaltete Konfiguration nicht lesbar ist oder
|
||||||
|
nicht ausdrücklich `custom` und den lokalen Router als Provider nennt
|
||||||
|
|
||||||
## Vision
|
## 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.
|
`/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
|
Hermes' lokales Terminal sieht nur `/data/hermes/workspace` im Container. Für
|
||||||
Athena und Unraid verwendet es die dokumentierten Operator-/MUA-MCPs.
|
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
|
Der SSH-Fallback lauscht ausschließlich auf der IPv4-Adresse von `wg0` im
|
||||||
WireGuard-Gateway-Container. Er wird nicht als Docker-Port auf dem
|
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)"
|
"$HERMES_DATA_DIR/config.yaml.before-managed-update-$(date +%Y%m%d-%H%M%S)"
|
||||||
fi
|
fi
|
||||||
install -m 0600 "$STACK_DIR/platform/hermes/config.yaml" "$HERMES_DATA_DIR/config.yaml"
|
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"
|
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