Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
5.1 KiB
Open WebUI Deployment Design
Date: 2026-03-11 Node: hf-pdocker-01 (192.168.86.192) Public URL: https://open.hobbs.farm Internal URL: http://192.168.86.192:3010
Overview
Deploy Open WebUI as a standalone Compose service on hf-pdocker-01, connected to Ollama (local GPU machine) and Anthropic Claude API. Publicly accessible via Traefik at open.hobbs.farm.
Architecture
Internet -> Traefik (hf-pdocker-01:443) -> http://192.168.86.192:3010 -> open-webui:8080
|
+-> Ollama (192.168.86.196:11434) [llava:13b + future models]
+-> Anthropic API (cloud) [Claude models]
Service Definition
- Image:
ghcr.io/open-webui/open-webui:main - Container name:
open-webui - Internal port: 8080 (container default)
- Host port: 3010
- Memory:
mem_limit: 1G,memswap_limit: 1G - Restart:
unless-stopped - Watchtower:
com.centurylinklabs.watchtower.enable=false(manual upgrades) - Timezone:
TZ=America/Chicago
Compose Location
- Repo:
compose/hf-pdocker-01/openwebui/docker-compose.yml - Deploy target:
/mnt/docker-data/compose/hf-pdocker-01/openwebui/ .envfile alongside compose for secrets (ANTHROPIC_API_KEY, WEBUI_SECRET_KEY)
Persistent Storage
- Data volume:
/mnt/docker-data/configs/openwebui/->/app/backend/datain container - Stores: user accounts, chat history, settings, uploaded files
- Open WebUI uses SQLite internally. Single-writer scenario on NFS is acceptable. If locking issues arise, fall back to local storage (like Guacamole's MySQL pattern at
/var/lib/). - Container runs as root by default; NFS write permissions should work without
user: "1024:100"but will be verified during deploy.
Environment Variables
OLLAMA_BASE_URL=http://192.168.86.196:11434— native Ollama connectionANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}— from .env, enables native Anthropic provider (Open WebUI v0.5+ has built-in Anthropic support)WEBUI_SECRET_KEY=${WEBUI_SECRET_KEY}— from .env, generated viaopenssl rand -hex 32TZ=America/Chicago
Healthcheck
healthcheck:
test: ["CMD-SHELL", "curl -sf http://localhost:8080/health || exit 1"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
Logging
logging:
driver: "json-file"
options:
max-size: "50m"
max-file: "3"
Traefik Configuration
Traefik on hf-pdocker-01 uses file-based dynamic config (no Docker provider/labels). A new dynamic config file is needed:
- Repo path:
stacks/traefik/dynamic/openwebui.yml - Deploy target:
/mnt/docker-data/traefik/dynamic/openwebui.yml(auto-picked up by Traefik's file watcher)
http:
routers:
openwebui:
rule: "Host(`open.hobbs.farm`)"
entryPoints:
- websecure
service: openwebui
tls:
certResolver: letsencrypt
openwebui-http:
rule: "Host(`open.hobbs.farm`)"
entryPoints:
- web
middlewares:
- openwebui-https-redirect
service: openwebui
middlewares:
openwebui-https-redirect:
redirectScheme:
scheme: https
permanent: true
services:
openwebui:
loadBalancer:
servers:
- url: "http://192.168.86.192:3010"
Network
- Default bridge network (single-container service, no custom network needed)
- Traefik routes to
http://192.168.86.192:3010via file-based config (no overlay network required)
Authentication
- Built-in Open WebUI auth (email/password)
- First user to register becomes admin
- Admin disables open registration after initial setup
Monitoring
- Internal probe:
http://192.168.86.192:3010added to Prometheushttp-pdocker01blackbox job - External probe:
https://open.hobbs.farmadded to Prometheushttp-externalblackbox job
LLM Backend Details
Ollama (Native)
Open WebUI has first-class Ollama support. Setting OLLAMA_BASE_URL makes all Ollama models available in the model selector. Currently llava:13b is loaded; any future models pulled to Ollama will auto-appear.
Anthropic Claude (Native)
Open WebUI v0.5+ has built-in Anthropic provider support. Setting the ANTHROPIC_API_KEY environment variable enables Claude models in the model selector. No proxy or OpenAI-compatibility layer needed. The existing API key (same one used by frigate-notify and AI agents) goes in the .env file.
Post-Deploy Checklist
- Verify container health and web UI loads at
http://192.168.86.192:3010 - Verify Traefik routes
https://open.hobbs.farmcorrectly - Register first admin user
- Disable open registration in admin settings
- Verify Ollama models appear in model selector
- Verify Claude models appear in model selector
- Add Prometheus blackbox probes (internal + external)
- Hot-reload Prometheus:
curl -X POST http://192.168.86.192:9095/-/reload - Update CLAUDE.md service lists
- Update MEMORY.md
- Update wiki via documentation-keeper agent
- Store WEBUI_SECRET_KEY in Vaultwarden