Files
truenas-stacks/ai/docker-compose.yaml
2026-05-10 09:52:48 -05:00

157 lines
4.1 KiB
YAML

networks:
ai-net:
driver: bridge
ai-services:
name: ai-services
ix-databases_shared-databases:
external: true
pangolin:
external: true
services:
ollama:
container_name: ollama
image: ollama/ollama:latest
restart: unless-stopped
networks:
- ai-net
- ai-services
ports:
- "11434:11434"
environment:
TZ: ${TZ}
NVIDIA_VISIBLE_DEVICES: all
NVIDIA_DRIVER_CAPABILITIES: compute,utility
volumes:
- /mnt/docker-ssd/docker/appdata/ollama:/root/.ollama
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
openwebui:
container_name: openwebui
image: ghcr.io/open-webui/open-webui:main
restart: unless-stopped
networks:
- ai-net
- ai-services
- ix-databases_shared-databases
- pangolin
ports:
- "8282:8080"
environment:
TZ: ${TZ}
OLLAMA_BASE_URL: http://ollama:11434
WEBUI_SECRET_KEY: ${OPENWEBUI_SECRET_KEY}
DATABASE_URL: postgresql://openwebui:${OPENWEBUI_DB_PASS}@shared-postgres:5432/openwebui
ENABLE_SIGNUP: "true"
ENABLE_LOGIN_FORM: "true"
VECTOR_DB: qdrant
QDRANT_URI: http://qdrant:6333
RAG_RERANKING_MODEL: "reranker"
RAG_RERANKING_MODEL_AUTO_UPDATE: "false"
RAG_OPENAI_API_BASE_URL: "http://litellm:4000"
RAG_OPENAI_API_KEY: ${LITELLM_MASTER_KEY}
volumes:
- /mnt/docker-ssd/docker/appdata/openwebui:/app/backend/data
depends_on:
- ollama
healthcheck:
test: ["CMD-SHELL", "curl -sf http://127.0.0.1:8080/ || exit 1"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
qdrant:
container_name: qdrant
image: qdrant/qdrant:v1.17.0
restart: unless-stopped
networks:
- ai-net
- ai-services
ports:
- "6333:6333"
- "6334:6334"
environment:
TZ: ${TZ}
QDRANT__SERVICE__GRPC_PORT: 6334
QDRANT__STORAGE__STORAGE_PATH: /qdrant/storage
QDRANT__STORAGE__SNAPSHOTS_PATH: /qdrant/snapshots
volumes:
- /mnt/docker-ssd/docker/appdata/qdrant/storage:/qdrant/storage
- /mnt/docker-ssd/docker/appdata/qdrant/snapshots:/qdrant/snapshots
litellm:
container_name: litellm
image: ghcr.io/berriai/litellm:main-latest
restart: unless-stopped
networks:
- ai-net
- ai-services
ports:
- "4000:4000"
environment:
TZ: ${TZ}
LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY}
volumes:
- /mnt/docker-ssd/docker/compose/ai/litellm/config.yaml:/app/config.yaml:ro
- /mnt/docker-ssd/docker/appdata/litellm:/app/data
command: ["--config", "/app/config.yaml", "--port", "4000"]
extra_hosts:
- "host.docker.internal:host-gateway"
whisper:
container_name: whisper
image: fedirz/faster-whisper-server:latest-cuda
restart: unless-stopped
networks:
- ai-net
- ai-services
ports:
- "8786:8000"
environment:
TZ: ${TZ}
WHISPER__MODEL: ${WHISPER_MODEL}
WHISPER__DEVICE: cuda
WHISPER__COMPUTE_TYPE: float16
volumes:
- /mnt/docker-ssd/docker/appdata/whisper:/root/.cache/huggingface
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
openclaw:
container_name: openclaw
image: ghcr.io/openclaw/openclaw:latest
restart: unless-stopped
networks:
- ai-net
- ai-services
- pangolin
ports:
- "18789:18789"
environment:
TZ: ${TZ}
OPENCLAW_GATEWAY_TOKEN: ${OPENCLAW_GATEWAY_TOKEN}
OPENCLAW_DISABLE_BONJOUR: "1"
volumes:
- /mnt/docker-ssd/docker/appdata/openclaw/config:/home/node/.openclaw
- /mnt/docker-ssd/docker/appdata/openclaw/workspace:/home/node/.openclaw/workspace
extra_hosts:
- "host.docker.internal:host-gateway"
healthcheck:
test: ["CMD-SHELL", "curl -sf http://127.0.0.1:18789/healthz || exit 1"]
interval: 30s
timeout: 10s
retries: 3
start_period: 90s