networks: default: name: traefik_default external: true services: ollama: container_name: ollama restart: unless-stopped image: ollama/ollama:latest labels: # Watchtower - "com.centurylinklabs.watchtower.enable=true" # Traefik # - "traefik.enable=true" # - "traefik.http.routers.ollama.rule=Host(`ollama.${DOMAIN}`)" # - "traefik.http.routers.ollama.entrypoints=websecure" # - "traefik.http.routers.ollama.tls.certresolver=myresolver" # - "traefik.http.routers.ollama.tls=true" # - "traefik.http.services.ollama.loadbalancer.server.port=11434" # Basic auth # - "traefik.http.middlewares.test-auth.basicauth.users=${OLLAMA_USER}:${OLLAMA_PASSWORD_HASH}" networks: - default volumes: - "./ollama/ollama:/root/.ollama" ollama-webui: image: ghcr.io/open-webui/open-webui:main container_name: ollama-webui volumes: - ./ollama/ollama-webui:/app/backend/data depends_on: - ollama environment: - OLLAMA_BASE_URLS=http://ollama:11434 - ENV=prod - WEBUI_AUTH=True - ENABLE_LOGIN_FORM=True - WEBUI_NAME=${WEBUI_NAME} - WEBUI_URL=https://chat.${DOMAIN} - WEBUI_SECRET_KEY=${SECRET} extra_hosts: - host.docker.internal:host-gateway restart: unless-stopped networks: - default labels: - "traefik.enable=true" - "traefik.http.routers.chat.rule=Host(`chat.${DOMAIN}`)" - "traefik.http.routers.chat.entrypoints=websecure" - "traefik.http.routers.chat.tls.certresolver=myresolver" - "traefik.http.services.chat.loadbalancer.server.port=8080"