Files
compose-files/tools/compose.yaml
T
Arnout van Westen 0eb590f455 feat(dnsweaver): traefik router labels on all HTTP UIs; exclude list trimmed to DBs/agents
All HTTP-served containers (web UIs + metrics APIs) now carry explicit
router-rule labels so dnsweaver manages their arnoutvw.nl rewrites end
to end (no more relying on traefik defaultRule). krusader fixed to
noVNC 8080-ish label -> 6080. EXCLUDE_DOMAINS reduced to databases,
workers and agents (postgres14/mariadb/redis/postgresql17/komodo-mongo/
bookorbit-db/immich_postgres/immich_ml/dawarich_*db-redis-sidekiq/
influxdb/newt*/komodo-periphery/dockersocket/subsyncarr/wordpress-blues).
2026-10-05 09:10:52 +02:00

326 lines
8.6 KiB
YAML

version: "3.6"
services:
CloudCommander:
container_name: "CloudCommander"
entrypoint:
- "/usr/src/cloudcmd/bin/cloudcmd.js"
environment:
- "TZ=Europe/Berlin"
- "cloudcmd_terminal=true"
- "cloudcmd_terminal_path=gritty"
- "cloudcmd_open=false"
image: "coderaiser/cloudcmd:19.21.1"
labels:
- traefik.enable=true
- traefik.http.routers.cloudcommander.rule=Host(`cloudcommander.arnoutvw.nl`)
- traefik.http.services.cloudcommander.loadbalancer.server.port=8000
ipc: "private"
logging:
driver: "json-file"
options:
max-file: "1"
max-size: "50m"
network_mode: "bridge"
ports:
- "8765:8000/tcp"
restart: "unless-stopped"
user: "99:100"
volumes:
- "/mnt/user/appdata/cloudcmd:/root"
- "/mnt:/UNRAID"
working_dir: "/"
FileFlows:
container_name: "FileFlows"
devices:
- "/dev/dri:/dev/dri"
entrypoint:
- "/app/docker-entrypoint.sh"
environment:
- "PUID=99"
- "PGID=100"
- "TZ=Europe/Berlin"
- "NVIDIA_VISIBLE_DEVICES=all"
- "NVIDIA_DRIVER_CAPABILITIES=compute,video,utility"
- "CA_TS_FALLBACK_DIR=/app/Data"
- "DOTNET_CLI_TELEMETRY_OPTOUT=true"
image: "revenz/fileflows:26.09"
labels:
- traefik.enable=true
- traefik.http.routers.fileflows.rule=Host(`fileflows.arnoutvw.nl`)
- traefik.http.services.fileflows.loadbalancer.server.port=5000
ipc: "private"
logging:
driver: "json-file"
options:
max-file: "1"
max-size: "50m"
network_mode: "bridge"
ports:
- "8581:5000/tcp"
restart: "unless-stopped"
volumes:
- "/mnt/cache/temp/fileflows:/temp"
- "/mnt/user/appdata/fileflows/data:/app/Data"
- "/mnt/user/appdata/fileflows/logs:/app/Logs"
- "/mnt/user:/media"
working_dir: "/app"
QDirStat:
container_name: "QDirStat"
environment:
- "USER_ID=99"
- "GROUP_ID=100"
- "UMASK=000"
- "X11VNC_EXTRA_OPTS="
- "TZ=Europe/Berlin"
- "APP_NICENESS="
- "DISPLAY_WIDTH=1920"
- "DISPLAY_HEIGHT=1080"
- "SECURE_CONNECTION=0"
- "SECURE_CONNECTION_VNC_METHOD=SSL"
- "SECURE_CONNECTION_CERTS_CHECK_INTERVAL=60"
- "WEB_LOCALHOST_ONLY=0"
- "VNC_LOCALHOST_ONLY=0"
- "WEB_LISTENING_PORT=5800"
- "VNC_LISTENING_PORT=5900"
- "VNC_PASSWORD="
- "ENABLE_CJK_FONT=0"
- "WEB_AUDIO=0"
- "WEB_AUTHENTICATION=0"
- "SUP_GROUP_IDS="
- "KEEP_APP_RUNNING=0"
image: "jlesage/qdirstat:v26.09.1"
labels:
- traefik.enable=true
- traefik.http.routers.qdirstat.rule=Host(`qdirstat.arnoutvw.nl`)
- traefik.http.services.qdirstat.loadbalancer.server.port=5800
ipc: "private"
logging:
driver: "json-file"
options:
max-file: "1"
max-size: "50m"
network_mode: "bridge"
ports:
- "7815:5800/tcp"
- "7915:5900/tcp"
restart: "unless-stopped"
volumes:
- "/mnt/user/appdata/QDirStat:/config"
- "/mnt/user:/storage"
- "/mnt:/unraid"
working_dir: "/tmp"
StirlingPDF:
container_name: "StirlingPDF"
entrypoint:
- "tini"
- "--"
- "/scripts/init.sh"
environment:
- "DOCKER_ENABLE_SECURITY=false"
- "SYSTEM_ROOT_URI_PATH=/"
- "SYSTEM_GOOGLEVISIBILITY=false"
- "SYSTEM_DEFAULT_LOCALE=nl_NL"
- "METRICS_ENABLED=true"
- "SYSTEM_CONNECTIONTIMEOUTMINUTES=3000000"
- "CA_TS_FALLBACK_DIR=/usr/share/tesseract-ocr/5/tessdata"
- "TESS_BASE_PATH=/usr/share/tesseract-ocr/5/tessdata"
- "TZ=Europe/Berlin"
- "PUID=1000"
- "PGID=1000"
- "UMASK=022"
- "STIRLING_TEMPFILES_DIRECTORY=/tmp/stirling-pdf"
- "TMPDIR=/tmp/stirling-pdf"
- "TEMP=/tmp/stirling-pdf"
- "TMP=/tmp/stirling-pdf"
image: "frooodle/s-pdf:3.0.2"
ipc: "private"
logging:
driver: "json-file"
options:
max-file: "1"
max-size: "50m"
network_mode: "bridge"
ports:
- "8876:8080/tcp"
restart: "unless-stopped"
volumes:
- "/mnt/cache/appdata/Stirling-PDF/OCR:/usr/share/tesseract-ocr/5/tessdata"
- "/mnt/cache/appdata/Stirling-PDF/configs:/configs"
- "/mnt/cache/appdata/Stirling-PDF/customFiles:/customFiles"
working_dir: "/app"
binhex-krusader:
container_name: "binhex-krusader"
command:
- "/bin/bash"
- "/usr/bin/init.sh"
entrypoint:
- "/usr/bin/dumb-init"
- "--"
environment:
- "PGID=100"
- "HTTPS_CERT_PATH="
- "HEALTHCHECK_COMMAND="
- "ENABLE_STARTUP_SCRIPTS=no"
- "HEALTHCHECK_ACTION="
- "UMASK=000"
- "TZ=Europe/Berlin"
- "VNC_PASSWORD="
- "WEBPAGE_TITLE=Krusader"
- "WEBUI_PORT=6080"
- "PUID=99"
- "TEMP_FOLDER=/config/home/.config/krusader/tmp"
- "HOME=/home/nobody"
- "TERM=xterm"
- "LANG=en_GB.UTF-8"
image: "ghcr.io/binhex/arch-krusader:2.9.0-2-01"
labels:
- traefik.enable=true
- traefik.http.routers.binhex-krusader.rule=Host(`binhex-krusader.arnoutvw.nl`)
- traefik.http.services.binhex-krusader.loadbalancer.server.port=6080
ipc: "private"
logging:
driver: "json-file"
options:
max-file: "1"
max-size: "50m"
network_mode: "bridge"
ports:
- "5900:5900/tcp"
- "6080:6080/tcp"
privileged: true
restart: "always"
security_opt:
- "label=disable"
volumes:
- "/mnt/cache/appdata/binhex-krusader:/config"
- "/mnt/user:/media"
working_dir: "/"
dockersocket:
container_name: "dockersocket"
entrypoint:
- "docker-entrypoint.sh"
command:
- "haproxy"
- "-f"
- "/tmp/haproxy.cfg"
environment:
- "POST=0"
- "TZ=Europe/Berlin"
- "CONTAINERS=1"
- "ALLOW_RESTARTS=0"
- "ALLOW_STOP=0"
- "ALLOW_START=0"
- "AUTH=0"
- "EVENTS=1"
- "EXEC=0"
- "INFO=0"
- "LOG_LEVEL=info"
- "PING=1"
- "SECRETS=0"
- "SOCKET_PATH=/var/run/docker.sock"
- "VERSION=1"
image: "ghcr.io/tecnativa/docker-socket-proxy:v0.5.0"
ipc: "private"
logging:
driver: "json-file"
options:
max-file: "1"
max-size: "50m"
network_mode: "bridge"
restart: "unless-stopped"
user: "root"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
working_dir: "/var/lib/haproxy"
duplicati:
container_name: "duplicati"
entrypoint:
- "/init"
environment:
- "PUID=99"
- "PGID=100"
- "TZ=Europe/Berlin"
- "TMPDIR=/run/duplicati-temp"
- "DUPLICATI__REQUIRE_DB_ENCRYPTION_KEY=true"
- "DUPLICATI__SERVER_DATAFOLDER=/config"
- "DUPLICATI__WEBSERVICE_PORT=8200"
- "DUPLICATI__WEBSERVICE_INTERFACE=any"
- "DUPLICATI__WEBSERVICE_ALLOWED_HOSTNAMES=*"
image: "linuxserver/duplicati:v2.4.0.0_stable_2026-09-03-ls310"
labels:
- traefik.enable=true
- traefik.http.routers.duplicati.rule=Host(`duplicati.arnoutvw.nl`)
- traefik.http.services.duplicati.loadbalancer.server.port=8200
ipc: "private"
logging:
driver: "json-file"
options:
max-file: "1"
max-size: "50m"
network_mode: "bridge"
ports:
- "8200:8200/tcp"
restart: "unless-stopped"
volumes:
- "/mnt/cache/duplicatitmp:/tmp"
- "/mnt/user/Backups:/backups"
- "/mnt/user/Backups:/source"
- "/mnt/user/appdata/duplicati:/config"
- "/mnt/user:/unraid"
working_dir: "/"
chrome:
container_name: "chrome"
entrypoint:
- "/init"
environment:
- "PUID=99"
- "PGID=100"
- "UMASK=022"
- "TZ=Europe/Berlin"
- "CHROME_CLI=https://www.linuxserver.io/"
- "TITLE=Chrome"
- "START_DOCKER=true"
- "DISPLAY=:1"
- "PULSE_RUNTIME_PATH=/defaults"
- "SELKIES_ENCODER=x264enc,jpeg"
- "SELKIES_ENABLE_BASIC_AUTH=false"
- "SELKIES_ALLOWED_ORIGINS=*"
- "SELKIES_VIDEO_STREAMING_MODE=false"
- "NO_GAMEPAD=true"
- "PIXELFLUX_WAYLAND=true"
- "DISABLE_DRI3=false"
- "DISABLE_ZINK=false"
image: "lscr.io/linuxserver/chrome:154.0.8037.97-1-ls127"
labels:
- traefik.enable=true
- traefik.http.routers.chrome.rule=Host(`chrome.arnoutvw.nl`)
- traefik.http.services.chrome.loadbalancer.server.port=3000
ipc: "private"
logging:
driver: "json-file"
options:
max-file: "1"
max-size: "50m"
network_mode: "bridge"
ports:
- "3033:3000/tcp"
- "3034:3001/tcp"
restart: "unless-stopped"
volumes:
- "/mnt/cache/appdata/chrome:/config"
working_dir: "/"