Spaces:
Running
Running
| 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 | |