mirror of
https://github.com/domfelipe/hermes-agent-custom.git
synced 2026-08-07 06:16:39 +00:00
Update entrypoint.sh
This commit is contained in:
parent
720e3faf6e
commit
53f7ef84d2
1 changed files with 39 additions and 32 deletions
|
|
@ -1,51 +1,58 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -e
|
set -Eeuo pipefail
|
||||||
|
|
||||||
HERMES_DATA_DIR="${HERMES_DATA_DIR:-/opt/data}"
|
INTERNAL_HOST="${INTERNAL_HOST:-127.0.0.1}"
|
||||||
HERMES_CONFIG_DIR="${HERMES_DATA_DIR}/.hermes"
|
INTERNAL_PORT="${INTERNAL_PORT:-8000}"
|
||||||
SOUL_FILE="${HERMES_CONFIG_DIR}/SOUL.md"
|
PUBLIC_HOST="${PUBLIC_HOST:-0.0.0.0}"
|
||||||
|
PUBLIC_PORT="${PORT:-${PUBLIC_PORT:-8642}}"
|
||||||
|
|
||||||
mkdir -p "${HERMES_CONFIG_DIR}"
|
HERMES_HOME="${HERMES_HOME:-/opt/data/.hermes}"
|
||||||
|
SOUL_PATH="${SOUL_PATH:-$HERMES_HOME/SOUL.md}"
|
||||||
|
|
||||||
|
mkdir -p "$HERMES_HOME"
|
||||||
|
|
||||||
# Aplica override do SOUL.md se a env estiver setada
|
|
||||||
if [ -n "${HERMES_SOUL_OVERRIDE:-}" ]; then
|
if [ -n "${HERMES_SOUL_OVERRIDE:-}" ]; then
|
||||||
echo "[entrypoint] Applying HERMES_SOUL_OVERRIDE to ${SOUL_FILE}"
|
echo "[entrypoint] Applying HERMES_SOUL_OVERRIDE to $SOUL_PATH"
|
||||||
printf '%s' "${HERMES_SOUL_OVERRIDE}" > "${SOUL_FILE}"
|
printf '%s\n' "$HERMES_SOUL_OVERRIDE" > "$SOUL_PATH"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Garante permissões corretas (caso o volume tenha sido montado externamente)
|
echo "[entrypoint] Hermes interno: $INTERNAL_HOST:$INTERNAL_PORT"
|
||||||
chown -R hermes:hermes "${HERMES_DATA_DIR}" || true
|
echo "[entrypoint] Proxy público: $PUBLIC_HOST:$PUBLIC_PORT"
|
||||||
|
|
||||||
INTERNAL_HOST="127.0.0.1"
|
|
||||||
INTERNAL_PORT="8000"
|
|
||||||
PUBLIC_HOST="0.0.0.0"
|
|
||||||
PUBLIC_PORT="${PORT:-8642}"
|
|
||||||
|
|
||||||
echo "[entrypoint] Hermes interno: ${INTERNAL_HOST}:${INTERNAL_PORT}"
|
|
||||||
echo "[entrypoint] Proxy público: ${PUBLIC_HOST}:${PUBLIC_PORT}"
|
|
||||||
echo "[entrypoint] Iniciando Hermes original..."
|
echo "[entrypoint] Iniciando Hermes original..."
|
||||||
|
|
||||||
# Inicia o Hermes original em background como usuário hermes
|
hermes dashboard \
|
||||||
su -s /bin/bash hermes -c "cd /opt/hermes && hermes dashboard --host "$HERMES_INTERNAL_HOST" --port "$HERMES_INTERNAL_PORT" --no-open &&
|
--host "$INTERNAL_HOST" \
|
||||||
HERMES_PID=$!
|
--port "$INTERNAL_PORT" \
|
||||||
|
--no-open &
|
||||||
|
|
||||||
|
HERMES_PID="$!"
|
||||||
|
|
||||||
|
echo "[entrypoint] Aguardando Hermes responder em $INTERNAL_HOST:$INTERNAL_PORT..."
|
||||||
|
|
||||||
# Aguarda Hermes ficar pronto
|
|
||||||
echo "[entrypoint] Aguardando Hermes responder em ${INTERNAL_HOST}:${INTERNAL_PORT}..."
|
|
||||||
for i in $(seq 1 60); do
|
for i in $(seq 1 60); do
|
||||||
if ! kill -0 "${HERMES_PID}" 2>/dev/null; then
|
if ! kill -0 "$HERMES_PID" 2>/dev/null; then
|
||||||
echo "[entrypoint] ERRO: Hermes morreu antes de ficar pronto"
|
echo "[entrypoint] ERRO: Hermes morreu antes de ficar pronto"
|
||||||
|
wait "$HERMES_PID"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
if curl -sf "http://${INTERNAL_HOST}:${INTERNAL_PORT}/health" > /dev/null 2>&1; then
|
|
||||||
echo "[entrypoint] Hermes pronto!"
|
if curl -fsS "http://$INTERNAL_HOST:$INTERNAL_PORT" >/dev/null 2>&1; then
|
||||||
|
echo "[entrypoint] Hermes pronto"
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
|
|
||||||
sleep 1
|
sleep 1
|
||||||
done
|
done
|
||||||
|
|
||||||
# Inicia o proxy / skills_api público
|
if ! kill -0 "$HERMES_PID" 2>/dev/null; then
|
||||||
echo "[entrypoint] Iniciando skills_api em ${PUBLIC_HOST}:${PUBLIC_PORT}..."
|
echo "[entrypoint] ERRO: Hermes morreu antes de ficar pronto"
|
||||||
exec python -m skills_api \
|
wait "$HERMES_PID"
|
||||||
--host "${PUBLIC_HOST}" \
|
exit 1
|
||||||
--port "${PUBLIC_PORT}" \
|
fi
|
||||||
--upstream "http://${INTERNAL_HOST}:${INTERNAL_PORT}"
|
|
||||||
|
echo "[entrypoint] Iniciando proxy público em $PUBLIC_HOST:$PUBLIC_PORT..."
|
||||||
|
|
||||||
|
exec python /opt/hermes-custom/skills_api.py \
|
||||||
|
--host "$PUBLIC_HOST" \
|
||||||
|
--port "$PUBLIC_PORT" \
|
||||||
|
--target "http://$INTERNAL_HOST:$INTERNAL_PORT"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue