diff --git a/docker-compose.yml b/docker-compose.yml index 3428ba4a..7784a852 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,57 +1,36 @@ -# Hermes WebUI — single-container Docker Compose -# -# QUICK START (most users): -# 1. (Optional) Copy .env.docker.example to .env and edit values -# 2. docker compose up -d -# 3. Open http://localhost:8787 -# -# This is the simplest setup: one WebUI container that runs the agent in-process. -# The WebUI auto-detects host UID/GID from the mounted .hermes volume. -# -# For multi-container setups (separate agent + webui or agent+webui+dashboard), -# see docker-compose.two-container.yml or docker-compose.three-container.yml. - services: hermes-webui: - build: . - ports: - # select only one; use 127.0.0.1 version to expose to localhost only - - "127.0.0.1:8787:8787" -# - "8787:8787" - volumes: - # Mount your Hermes home directory into the container. - # The default (${HOME}/.hermes) works on both macOS (/Users//.hermes) - # and Linux (/home//.hermes) — no change needed for standard installs. - # Only set HERMES_HOME explicitly if your .hermes lives somewhere non-standard. - # macOS note: set UID and GID below to match your user ID (run `id -u` and `id -g`). - - ${HERMES_HOME:-${HOME}/.hermes}:/home/hermeswebui/.hermes - # Your workspace directory shown on first launch (adapt if yours is different, the container will use the mounted /workspace) - - ${HERMES_WORKSPACE:-${HOME}/workspace}:/workspace + build: + context: . + dockerfile: Dockerfile + image: hermes-webui:0.51.92-frameable environment: - # Set to your host user ID: run `id -u` and `id -g` to find them. - # On macOS, UIDs start at 501 (not 1000), so set UID and GID in a .env file: - # echo "UID=$(id -u)" >> .env - # echo "GID=$(id -g)" >> .env - # Without this, the container may not be able to read your mounted files. - - WANTED_UID=${UID:-1000} - - WANTED_GID=${GID:-1000} - # Required: bind address and port + - SERVICE_URL_HERMESWEBUI_8787 - HERMES_WEBUI_HOST=0.0.0.0 - HERMES_WEBUI_PORT=8787 - # Where to store sessions, workspaces, and other state (default: ~/.hermes/webui) - HERMES_WEBUI_STATE_DIR=/home/hermeswebui/.hermes/webui - # Default workspace directory shown on first launch -# - HERMES_WEBUI_DEFAULT_WORKSPACE=/workspace - # Optional: set a password for remote access - # - HERMES_WEBUI_PASSWORD=your-secret-password - # - # Bind-mount permission handling (fixes #1389, #1399): - # When you mount an EXISTING ~/.hermes directory (the common case), - # the WebUI's startup credential-permission fixer can clash with - # your host file modes (e.g. 0640 group-readable .env files). - # Set HERMES_SKIP_CHMOD=1 to bypass the fixer entirely, OR set - # HERMES_HOME_MODE=0640 to allow group bits while still stripping - # world-readable. Both are documented in api/startup.py. - # - HERMES_SKIP_CHMOD=1 - # - HERMES_HOME_MODE=0640 - restart: unless-stopped + - WANTED_UID=1000 + - WANTED_GID=1000 + - 'HERMES_WEBUI_PASSWORD=${SERVICE_PASSWORD_HERMESWEBUI}' + - 'OPENROUTER_API_KEY=${OPENROUTER_API_KEY}' + - 'ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}' + - 'OPENAI_API_KEY=${OPENAI_API_KEY}' + - 'GOOGLE_API_KEY=${GOOGLE_API_KEY}' + volumes: + - 'hermes-home:/home/hermeswebui/.hermes' + - 'hermes-agent-src:/home/hermeswebui/.hermes/hermes-agent:ro' + - 'hermes-workspace:/workspace' + healthcheck: + test: + - CMD + - curl + - '-f' + - 'http://127.0.0.1:8787/health' + interval: 30s + timeout: 5s + retries: 3 + +volumes: + hermes-home: + hermes-agent-src: + hermes-workspace: \ No newline at end of file