version: '3.8' networks: traefik-public: external: true volumes: openwebui_data: services: openwebui: image: ghcr.io/open-webui/open-webui:main volumes: - openwebui_data:/app/backend/data networks: - traefik-public healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080/health"] interval: 30s timeout: 10s retries: 3 start_period: 60s deploy: placement: constraints: - node.labels.heavy == true resources: limits: memory: 4G cpus: '4.0' reservations: memory: 2G cpus: '1.0' restart_policy: condition: on-failure delay: 5s max_attempts: 3 update_config: parallelism: 1 delay: 10s failure_action: rollback labels: - "traefik.enable=true" - "traefik.http.routers.openwebui.rule=Host(`ai.sterl.xyz`)" - "traefik.http.routers.openwebui.entrypoints=websecure" - "traefik.http.routers.openwebui.tls.certresolver=cfresolver" - "traefik.http.services.openwebui.loadbalancer.server.port=8080" - "traefik.swarm.network=traefik-public" - "tsdproxy.enable=true" - "tsdproxy.name=openwebui" logging: driver: "json-file" options: max-size: "10m" max-file: "3"