Skip to content

Instantly share code, notes, and snippets.

@Getty
Created May 29, 2024 15:10
Show Gist options
  • Save Getty/48c7e7c4a4769d218f7e9e5362d99850 to your computer and use it in GitHub Desktop.
Save Getty/48c7e7c4a4769d218f7e9e5362d99850 to your computer and use it in GitHub Desktop.
ollama + openwebui + flowise + fooocus + netdata + traefik
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment