name: qbittorrent services: cross-seed: image: ghcr.io/cross-seed/cross-seed:6 container_name: cross-seed volumes: - cross-seed_config:/config - /media:/media networks: - default - media command: daemon restart: unless-stopped user: 1000:1800 fertilizer: image: ghcr.io/moleculekayak/fertilizer:latest container_name: fertilizer volumes: - qbittorrent_config:/torrents:ro - /media:/media environment: - OPS_KEY=${OPS_KEY} - RED_KEY=${RED_KEY} - INJECT_TORRENTS=true - INJECTION_LINK_DIRECTORY=/media/downloads/fertilizer/linked-data - QBITTORRENT_URL=http://fern:${QBITTORRENT_PASS}@qbittorrent_gluetun:8080 networks: default: ipv4_address: 172.16.7.4 command: fertilizer -o /media/downloads/fertilizer/torrent-files -i /torrents/qBittorrent/BT_backup --server user: 1000:1800 qbittorrent: image: lscr.io/linuxserver/qbittorrent:latest container_name: qbittorrent depends_on: qbittorrent_gluetun: condition: service_healthy volumes: - qbittorrent_config:/config - /media:/media environment: - WEBUI_PORT=8080 - PUID=1000 - PGID=1800 - TZ=Australia/Perth network_mode: service:qbittorrent_gluetun restart: unless-stopped healthcheck: test: [ "CMD-SHELL", "curl -sf https://api.ipify.org || exit 1" ] interval: 30s timeout: 10s retries: 3 qbittorrent_gluetun: image: qmcgaw/gluetun container_name: qbittorrent_gluetun volumes: - qbittorrent_gluetun_auth:/gluetun/auth environment: - VPN_SERVICE_PROVIDER=protonvpn - VPN_TYPE=wireguard - VPN_PORT_FORWARDING=on - GLUETUN_HTTP_CONTROL_SERVER_ENABLE=on - SERVER_COUNTRIES=Australia - WIREGUARD_ADDRESSES=10.2.0.2/32 - WIREGUARD_PRIVATE_KEY=${WIREGUARD_PRIVATE_KEY} - BLOCK_MALICIOUS=off networks: - default - proxy - media restart: unless-stopped labels: caddy: qbittorrent.ferngarden.net caddy.import: internal caddy.reverse_proxy: "{{upstreams 8080}}" cap_add: - NET_ADMIN devices: - /dev/net/tun:/dev/net/tun qbittorrent_qsticky: image: ghcr.io/monstermuffin/qsticky:latest container_name: qbittorrent_qsticky environment: - QBITTORRENT_HOST=qbittorrent_gluetun - QBITTORRENT_HTTPS=false - QBITTORRENT_PORT=8080 - QBITTORRENT_USER=fern - QBITTORRENT_PASS=${QBITTORRENT_PASS} - GLUETUN_HOST=qbittorrent_gluetun - GLUETUN_AUTH_TYPE=apikey - GLUETUN_APIKEY=${GLUETUN_APIKEY} - LOG_LEVEL=INFO networks: - default restart: unless-stopped healthcheck: test: [ "CMD", "python3", "-c", "import json; exit(0 if json.load(open('/app/health/status.json'))['healthy'] else 1)" ] interval: 30s timeout: 10s retries: 3 qbittorrent_mamapi: image: elforkhead/mamapi:latest container_name: qbittorrent_mamapi volumes: - /mnt/docker/qbittorrent_mamapi/data:/data network_mode: service:qbittorrent_gluetun environment: TZ: Australia/Perth MAM_ID: ${MAM_ID} WRITE_CURRENT_MAMID: True networks: default: ipam: driver: default config: - subnet: 172.16.7.0/24 proxy: external: true media: external: true volumes: qbittorrent_config: name: qbittorrent_config qbittorrent_gluetun_auth: name: qbittorrent_gluetun_auth cross-seed_config: name: cross-seed_config