name: open-webui services: permissions: image: alpine:3.22 user: "0:0" command: ["chown", "-R", "1000:1000", "/webui", "/ollama"] volumes: - webui-data:/webui - ollama-data:/ollama restart: "no" open-webui: image: ghcr.io/open-webui/open-webui:${OPEN_WEBUI_VERSION:-v0.12.4} user: "1000:1000" restart: unless-stopped environment: WEBUI_URL: ${OPEN_WEBUI_URL:-http://localhost:3080} WEBUI_SECRET_KEY: ${OPEN_WEBUI_SECRET:?Set a unique OPEN_WEBUI_SECRET} WEBUI_ADMIN_EMAIL: ${OPEN_WEBUI_ADMIN_EMAIL:?Set OPEN_WEBUI_ADMIN_EMAIL} WEBUI_ADMIN_PASSWORD: ${OPEN_WEBUI_ADMIN_PASSWORD:?Set a unique initial administrator password} WEBUI_ADMIN_NAME: Admin WEBUI_AUTH: "true" ENABLE_SIGNUP: "false" ENABLE_OPENAI_API: "false" ENABLE_OLLAMA_API: "true" OLLAMA_BASE_URL: http://ollama:11434 OFFLINE_MODE: "true" FORWARDED_ALLOW_IPS: ${OPEN_WEBUI_TRUSTED_PROXIES:-127.0.0.1} STATIC_DIR: /app/backend/data/static CORS_ALLOW_ORIGIN: ${OPEN_WEBUI_URL:-http://localhost:3080} HOME: /app/backend/data TZ: ${TZ:-Etc/UTC} ports: - "127.0.0.1:${OPEN_WEBUI_PORT:-3080}:8080" volumes: - webui-data:/app/backend/data depends_on: permissions: condition: service_completed_successfully ollama: condition: service_healthy healthcheck: test: ["CMD", "python", "-c", "import json,urllib.request; assert json.load(urllib.request.urlopen('http://127.0.0.1:8080/health/db',timeout=5))['status'] is True"] interval: 20s timeout: 10s retries: 15 start_period: 90s read_only: true tmpfs: - /tmp:rw,noexec,nosuid,size=256m,mode=1777 cap_drop: - ALL security_opt: - no-new-privileges:true stop_grace_period: 60s ollama: image: ollama/ollama:${OLLAMA_VERSION:-0.40.10} user: "1000:1000" restart: unless-stopped environment: HOME: /home/ollama OLLAMA_HOST: 0.0.0.0:11434 OLLAMA_MODELS: /home/ollama/.ollama/models OLLAMA_NO_CLOUD: "true" volumes: - ollama-data:/home/ollama/.ollama depends_on: permissions: condition: service_completed_successfully healthcheck: test: ["CMD", "ollama", "list"] interval: 15s timeout: 10s retries: 15 start_period: 30s read_only: true tmpfs: - /tmp:rw,noexec,nosuid,size=256m,mode=1777 cap_drop: - ALL security_opt: - no-new-privileges:true stop_grace_period: 60s volumes: webui-data: name: ${OPEN_WEBUI_DATA_VOLUME:-open-webui-data} ollama-data: name: ${OLLAMA_DATA_VOLUME:-open-webui-models}