hermes-webui / space-entrypoint.sh
Acrabohan's picture
Run initial Hermes backup sooner
2f37df2
Raw
History Blame Contribute Delete
2.81 kB
#!/usr/bin/env bash
set -euo pipefail
if [[ -z "${HERMES_WEBUI_PASSWORD:-}" ]]; then
echo "WARNING: HERMES_WEBUI_PASSWORD is not set. Set it as a Space secret before public use."
fi
if [[ -n "${HERMES_WEBUI_USER_PASSWORD:-}" ]]; then
echo "Configuring password-based sudo for hermeswebui."
printf 'hermeswebui:%s\n' "${HERMES_WEBUI_USER_PASSWORD}" | chpasswd
printf 'hermeswebui ALL=(ALL) ALL\n' > /etc/sudoers.d/hermeswebui
chmod 0440 /etc/sudoers.d/hermeswebui
unset HERMES_WEBUI_USER_PASSWORD
fi
mkdir -p /data/.hermes
if [[ -e /home/hermeswebui/.hermes && ! -L /home/hermeswebui/.hermes ]]; then
cp -a /home/hermeswebui/.hermes/. /data/.hermes/ 2>/dev/null || true
rm -rf /home/hermeswebui/.hermes
fi
if [[ ! -L /home/hermeswebui/.hermes ]]; then
ln -s /data/.hermes /home/hermeswebui/.hermes
fi
if [[ "${HERMES_RESTORE_ON_START:-1}" != "0" && -n "${HERMES_BACKUP_REPO:-}" && -n "${HF_BACKUP_TOKEN:-}" ]]; then
echo "Restoring Hermes state from private backup dataset if local state is empty."
env \
HF_BACKUP_TOKEN="${HF_BACKUP_TOKEN}" \
HERMES_BACKUP_REPO="${HERMES_BACKUP_REPO}" \
HERMES_BACKUP_DIR="${HERMES_HOME:-/home/hermeswebui/.hermes}" \
HERMES_FORCE_RESTORE="${HERMES_FORCE_RESTORE:-0}" \
HERMES_BACKUP_FILENAME="${HERMES_BACKUP_FILENAME:-hermes-state.tar.gz}" \
/usr/local/bin/hermes-state-backup restore || echo "WARNING: Hermes state restore failed; continuing with local state."
fi
mkdir -p "${HERMES_HOME:-/home/hermeswebui/.hermes}" \
"${HERMES_WEBUI_STATE_DIR:-/home/hermeswebui/.hermes/webui-mvp}" \
"${HERMES_WEBUI_DEFAULT_WORKSPACE:-/workspace}"
chown -R hermeswebui:hermeswebui \
/data/.hermes \
"${HERMES_HOME:-/home/hermeswebui/.hermes}" \
"${HERMES_WEBUI_STATE_DIR:-/home/hermeswebui/.hermes/webui-mvp}" \
"${HERMES_WEBUI_DEFAULT_WORKSPACE:-/workspace}" \
/opt/hermes || true
chown -h hermeswebui:hermeswebui /home/hermeswebui/.hermes || true
if [[ "${HERMES_BACKUP_DISABLE_LOOP:-0}" != "1" && -n "${HERMES_BACKUP_REPO:-}" && -n "${HF_BACKUP_TOKEN:-}" ]]; then
echo "Starting Hermes state backup loop."
env \
HF_BACKUP_TOKEN="${HF_BACKUP_TOKEN}" \
HERMES_BACKUP_REPO="${HERMES_BACKUP_REPO}" \
HERMES_BACKUP_DIR="${HERMES_HOME:-/home/hermeswebui/.hermes}" \
HERMES_BACKUP_INTERVAL_SECONDS="${HERMES_BACKUP_INTERVAL_SECONDS:-1800}" \
HERMES_BACKUP_INITIAL_DELAY_SECONDS="${HERMES_BACKUP_INITIAL_DELAY_SECONDS:-300}" \
HERMES_BACKUP_FILENAME="${HERMES_BACKUP_FILENAME:-hermes-state.tar.gz}" \
/usr/local/bin/hermes-backup-loop &
fi
unset HF_BACKUP_TOKEN HERMES_BACKUP_REPO HERMES_FORCE_RESTORE HERMES_RESTORE_ON_START
unset HERMES_BACKUP_INTERVAL_SECONDS HERMES_BACKUP_INITIAL_DELAY_SECONDS
unset HERMES_BACKUP_FILENAME HERMES_BACKUP_DISABLE_LOOP
exec /hermeswebui_init.bash