Docker Compose ollama + openwebui + flowise + fooocus + netdata + traefik

Stack

services:

  traefik:
    container_name: traefik
    restart: always
    image: traefik:2.11
    volumes:
      - "./traefik/traefik.toml:/etc/traefik/traefik.toml"
      - "./traefik/acme.json:/etc/traefik/acme.json"
      - "./traefik/config:/etc/traefik/config"
      - "./tls:/etc/traefik/tls"
      - "./log/traefik:/var/log/traefik"
      - "/var/run/docker.sock:/var/run/docker.sock"
    labels:
      - "traefik.enable=true"
      - "traefik.http.services.traefik.loadbalancer.server.port=8080"
      - "traefik.http.services.traefik.loadbalancer.server.scheme=http"
      - "traefik.http.routers.traefikweb.rule=Host(`traefik.avatar.example.com`)"
      - "traefik.http.routers.traefikweb.entryPoints=http"
      - "traefik.http.routers.traefikweb.middlewares=https_redirect@file"
      - "traefik.http.routers.traefikweb.priority=10"
      - "traefik.http.routers.traefikwebtls.rule=Host(`traefik.avatar.example.com`)"
      - "traefik.http.routers.traefikwebtls.entryPoints=https"
      - "traefik.http.routers.traefikwebtls.middlewares=ci_auth@file"
      - "traefik.http.routers.traefikwebtls.tls=true"
      - "traefik.http.routers.traefikwebtls.tls.certresolver=le"
      - "traefik.http.routers.traefikwebtls.tls.domains[0].main=traefik.avatar.example.com"
      - "traefik.http.routers.traefikwebtls.priority=10"
      - "traefik.http.routers.traefikwebtls.service=traefik"
    environment:
      - "DNSMADEEASY_API_KEY=xxx"
      - "DNSMADEEASY_API_SECRET=xxx"
    networks:
      chnet:
        ipv4_address: 10.8.0.100

  netdata:
    container_name: netdata
    hostname: "netdata.avatar.example.com"
    restart: always
    image: netdata/netdata
    labels:
      - "traefik.enable=true"
      - "traefik.http.services.netdata.loadbalancer.server.port=19999"
      - "traefik.http.services.netdata.loadbalancer.server.scheme=http"
      - "traefik.http.routers.netdataweb.rule=Host(`netdata.avatar.example.com`)"
      - "traefik.http.routers.netdataweb.entryPoints=http"
      - "traefik.http.routers.netdataweb.middlewares=https_redirect@file"
      - "traefik.http.routers.netdataweb.priority=10"
      - "traefik.http.routers.netdatawebtls.rule=Host(`netdata.avatar.example.com`)"
      - "traefik.http.routers.netdatawebtls.entryPoints=https"
      - "traefik.http.routers.netdatawebtls.middlewares=ci_auth@file"
      - "traefik.http.routers.netdatawebtls.tls=true"
      - "traefik.http.routers.netdatawebtls.tls.certresolver=le"
      - "traefik.http.routers.netdatawebtls.tls.domains[0].main=netdata.avatar.example.com"
      - "traefik.http.routers.netdatawebtls.priority=10"
      - "traefik.http.routers.netdatawebtls.service=netdata"
    cap_add:
      - SYS_PTRACE
    security_opt:
      - apparmor:unconfined
    volumes:
      - "/proc:/host/proc:ro"
      - "/sys:/host/sys:ro"
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
    networks:
      chnet:
        ipv4_address: 10.8.0.200

  ollama:
    image: "ollama/ollama:latest"
    container_name: "${CI_CONTAINER_PREFIX:-cindustries}_ollama"
    hostname: "ollama.example.com"
    restart: unless-stopped
    volumes:
      - "./ollama:/root/.ollama"
    labels:
      - "traefik.enable=true"
      - "traefik.http.services.ollama-cindustries.loadbalancer.server.port=11434"
      - "traefik.http.services.ollama-cindustries.loadbalancer.server.scheme=http"
      - "traefik.http.routers.ollama-cindustries.rule=Host(`ollama.example.com`)"
      - "traefik.http.routers.ollama-cindustries.entryPoints=http"
      - "traefik.http.routers.ollama-cindustries.middlewares=https_redirect@file"
      - "traefik.http.routers.ollama-cindustries.priority=10"
      - "traefik.http.routers.ollama-cindustries-tls.rule=Host(`ollama.example.com`)"
      - "traefik.http.routers.ollama-cindustries-tls.entryPoints=https"
      - "traefik.http.routers.ollama-cindustries-tls.middlewares=ollama-auth"
      - "traefik.http.routers.ollama-cindustries-tls.tls=true"
      - "traefik.http.routers.ollama-cindustries-tls.priority=10"
      - "traefik.http.routers.ollama-cindustries-tls.tls.certresolver=le"
      - "traefik.http.routers.ollama-cindustries-tls.tls.domains[0].main=ollama.example.com"
      - "traefik.http.middlewares.ollama-auth.basicauth.users=xxxxx:xxxxx"
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              device_ids: ['all']
              capabilities: [gpu]
    networks:
      chnet:
        ipv4_address: 10.8.0.240

  openwebui:
    image: "ghcr.io/open-webui/open-webui:main"
    container_name: "${CI_CONTAINER_PREFIX:-cindustries}_openwebui"
    hostname: "openwebui.example.com"
    restart: unless-stopped
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
    volumes:
      - "./openwebui:/app/backend/data"
    labels:
      - "traefik.enable=true"
      - "traefik.http.services.openwebui-cindustries.loadbalancer.server.port=8080"
      - "traefik.http.services.openwebui-cindustries.loadbalancer.server.scheme=http"
      - "traefik.http.routers.openwebui-cindustries.rule=Host(`openwebui.example.com`)"
      - "traefik.http.routers.openwebui-cindustries.entryPoints=http"
      - "traefik.http.routers.openwebui-cindustries.middlewares=https_redirect@file"
      - "traefik.http.routers.openwebui-cindustries.priority=10"
      - "traefik.http.routers.openwebui-cindustries-tls.rule=Host(`openwebui.example.com`)"
      - "traefik.http.routers.openwebui-cindustries-tls.entryPoints=https"
      - "traefik.http.routers.openwebui-cindustries-tls.tls=true"
      - "traefik.http.routers.openwebui-cindustries-tls.priority=10"
      - "traefik.http.routers.openwebui-cindustries-tls.tls.certresolver=le"
      - "traefik.http.routers.openwebui-cindustries-tls.tls.domains[0].main=openwebui.example.com"
    networks:
      chnet:
        ipv4_address: 10.8.0.241

  flowise:
    image: "flowiseai/flowise"
    container_name: "${CI_CONTAINER_PREFIX:-cindustries}_flowise"
    hostname: "flowise.example.com"
    restart: unless-stopped
    command: /bin/sh -c "sleep 3; flowise start"
    environment:
      - DATABASE_PATH=/root/.flowise
      - APIKEY_PATH=/root/.flowise
      - SECRETKEY_PATH=/root/.flowise
      - LOG_PATH=/root/.flowise/logs
      - BLOB_STORAGE_PATH=/root/.flowise/storage
      - FLOWISE_USERNAME=xxxxxx
      - FLOWISE_PASSWORD=xxxxxx
    volumes:
      - "./flowise:/root/.flowise"
    labels:
      - "traefik.enable=true"
      - "traefik.http.services.flowise-cindustries.loadbalancer.server.port=3000"
      - "traefik.http.services.flowise-cindustries.loadbalancer.server.scheme=http"
      - "traefik.http.routers.flowise-cindustries.rule=Host(`flowise.example.com`)"
      - "traefik.http.routers.flowise-cindustries.entryPoints=http"
      - "traefik.http.routers.flowise-cindustries.middlewares=https_redirect@file"
      - "traefik.http.routers.flowise-cindustries.priority=10"
      - "traefik.http.routers.flowise-cindustries-tls.rule=Host(`flowise.example.com`)"
      - "traefik.http.routers.flowise-cindustries-tls.entryPoints=https"
      - "traefik.http.routers.flowise-cindustries-tls.tls=true"
      - "traefik.http.routers.flowise-cindustries-tls.priority=10"
      - "traefik.http.routers.flowise-cindustries-tls.tls.certresolver=le"
      - "traefik.http.routers.flowise-cindustries-tls.tls.domains[0].main=flowise.example.com"
    networks:
      chnet:
        ipv4_address: 10.8.0.242

  fooocus:
    image: ghcr.io/lllyasviel/fooocus
    container_name: "${CI_CONTAINER_PREFIX:-cindustries}_fooocus"
    hostname: "fooocus.example.com"
    restart: unless-stopped
    labels:
      - "traefik.enable=true"
      - "traefik.http.services.fooocus-cindustries.loadbalancer.server.port=7865"
      - "traefik.http.services.fooocus-cindustries.loadbalancer.server.scheme=http"
      - "traefik.http.routers.fooocus-cindustries.rule=Host(`fooocus.example.com`)"
      - "traefik.http.routers.fooocus-cindustries.entryPoints=http"
      - "traefik.http.routers.fooocus-cindustries.middlewares=https_redirect@file"
      - "traefik.http.routers.fooocus-cindustries.priority=10"
      - "traefik.http.routers.fooocus-cindustries-tls.rule=Host(`fooocus.example.com`)"
      - "traefik.http.routers.fooocus-cindustries-tls.entryPoints=https"
      - "traefik.http.routers.fooocus-cindustries-tls.middlewares=ci_auth@file"
      - "traefik.http.routers.fooocus-cindustries-tls.tls=true"
      - "traefik.http.routers.fooocus-cindustries-tls.priority=10"
      - "traefik.http.routers.fooocus-cindustries-tls.tls.certresolver=le"
      - "traefik.http.routers.fooocus-cindustries-tls.tls.domains[0].main=fooocus.example.com"
    environment:
      - CMDARGS=--listen    # Arguments for launch.py.
      - DATADIR=/content/data   # Directory which stores models, outputs dir
      - config_path=/content/data/config.txt
      - config_example_path=/content/data/config_modification_tutorial.txt
      - path_checkpoints=/content/data/models/checkpoints/
      - path_loras=/content/data/models/loras/
      - path_embeddings=/content/data/models/embeddings/
      - path_vae_approx=/content/data/models/vae_approx/
      - path_upscale_models=/content/data/models/upscale_models/
      - path_inpaint=/content/data/models/inpaint/
      - path_controlnet=/content/data/models/controlnet/
      - path_clip_vision=/content/data/models/clip_vision/
      - path_fooocus_expansion=/content/data/models/prompt_expansion/fooocus_expansion/
      - path_outputs=/content/app/outputs/    # Warning: If it is not located under '/content/app', you can't see history log!
    volumes:
      - ./fooocus:/content/data
      #- ./models:/import/models   # Once you import files, you don't need to mount again.
      #- ./outputs:/import/outputs  # Once you import files, you don't need to mount again.
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              device_ids: ['all']
              capabilities: [compute, utility]
    networks:
      chnet:
        ipv4_address: 10.8.0.243

networks:
  chnet:
    driver: bridge
    ipam:
      driver: default
      config:
      - subnet: 10.8.0.0/24
2 Likes