configs: tailscale_serve: content: | { "TCP": { "443": { "HTTPS": true } }, "Web": { "$${TS_CERT_DOMAIN}:443": { "Handlers": { "/": { "Proxy": "http://gluetun:8080" } } } }, "AllowFunnel": { "$${TS_CERT_DOMAIN}:443": false } } services: qbittorrent-server: image: linuxserver/qbittorrent:latest container_name: qbittorrent-server environment: ... - WEBUI_PORT=8080 volumes: ... network_mode: service:gluetun # run on the vpn network depends_on: gluetun: condition: service_healthy restart: unless-stopped gluetun: image: qmcgaw/gluetun cap_add: - NET_ADMIN devices: - /dev/net/tun:/dev/net/tun ports: - 8080:8080 environment: ... networks: - internal_net qbittorrent-tailscale: image: tailscale/tailscale:latest container_name: qbittorrent-tailscale user: 1000:1000 cap_add: - NET_ADMIN - NET_RAW environment: ... - TS_SERVE_CONFIG=/stack-config/serve.json configs: - source: tailscale_serve target: /stack-config/serve.json volumes: ... restart: unless-stopped networks: - internal_net depends_on: - qbittorrent-server networks: internal_net: driver: bridge