services: amule: image: ngosang/amule:latest container_name: amule ports: - "4662:4662" # ED2K TCP - "4665:4665/udp" # ED2K UDP (global search) - "4672:4672/udp" # ED2K UDP volumes: - ./data/aMule/config:/home/amule/.aMule - ./data/aMule/incoming:/incoming - ./data/aMule/temp:/temp environment: - PUID=1000 - PGID=1000 - TZ=Europe/Rome - GUI_PWD=${AMULE_PASSWORD:-admin} - WEBUI_PWD=${AMULE_PASSWORD:-admin} stop_grace_period: 30s restart: unless-stopped rtorrent: image: crazymax/rtorrent-rutorrent:latest container_name: rtorrent ports: - "127.0.0.1:8000:8000" # XML-RPC (localhost only) - "6881:6881" # BitTorrent - "6881:6881/udp" # BitTorrent DHT - "50000:50000" # Incoming connections volumes: - ./data/rTorrent/config:/data - ./data/rTorrent/downloads:/downloads environment: - PUID=1000 - PGID=1000 - TZ=Europe/Rome restart: unless-stopped qbittorrent: image: linuxserver/qbittorrent:latest container_name: qbittorrent ports: - "127.0.0.1:8080:8080" # WebUI - "6882:6882" # BitTorrent - "6882:6882/udp" # BitTorrent DHT volumes: - ./data/qBittorrent/config:/config - ./data/qBittorrent/downloads:/downloads environment: - PUID=1000 - PGID=1000 - TZ=Europe/Rome - WEBUI_PORT=8080 - TORRENTING_PORT=6882 restart: unless-stopped amutorrent: image: g0t3nks/amutorrent:latest user: "1000:1000" container_name: amutorrent depends_on: - amule - rtorrent - qbittorrent ports: - "${PORT:-4000}:${PORT:-4000}" environment: - NODE_ENV=production - PORT=${PORT:-4000} # Optional: Uncomment to pre-configure via environment variables # Web UI Authentication # - WEB_AUTH_ENABLED=true # - WEB_AUTH_PASSWORD=your_secure_password # aMule Connection - AMULE_ENABLED=true - AMULE_HOST=amule # aMule container service name - AMULE_PORT=4712 - AMULE_PASSWORD=${AMULE_PASSWORD:-admin} # Must match GUI_PWD in amule container # rTorrent Connection - RTORRENT_ENABLED=true - RTORRENT_HOST=rtorrent # rTorrent container service name - RTORRENT_PORT=8000 - RTORRENT_PATH=/RPC2 # qBittorrent Connection - QBITTORRENT_ENABLED=true - QBITTORRENT_HOST=qbittorrent # qBittorrent container service name - QBITTORRENT_PORT=8080 - QBITTORRENT_USERNAME=admin - QBITTORRENT_PASSWORD= # You have to set your password through qBittorrent WebUI: Tools > Options > Web UI > Authentication # Prowlarr Integration (requires rTorrent or qBittorrent) - PROWLARR_ENABLED=true - PROWLARR_URL=http://prowlarr:9696 # - PROWLARR_API_KEY=your_api_key # Get from Prowlarr Settings → General # Sonarr/Radarr Integration (optional) # - SONARR_URL=http://sonarr:8989 # - SONARR_API_KEY=your_api_key # - RADARR_URL=http://radarr:7878 # - RADARR_API_KEY=your_api_key volumes: - ./logs:/usr/src/app/server/logs - ./data:/usr/src/app/server/data # Event Scripting: Edit scripts/custom.sh to run your own scripts on events # - ./scripts:/usr/src/app/scripts # Download directories (optional): Required for moving/deleting files - ./data/aMule/incoming:/incoming - ./data/rTorrent/downloads:/downloads/rTorrent - ./data/qBittorrent/downloads:/downloads/qBittorrent healthcheck: test: ["CMD", "node", "-e", "require('http').get('http://localhost:' + (process.env.PORT || 4000) + '/health', r => r.statusCode === 200 ? process.exit(0) : process.exit(1)).on('error', () => process.exit(1))"] interval: 30s timeout: 5s retries: 3 restart: unless-stopped # Optional: Prowlarr for torrent search (results go to rTorrent or qBittorrent) prowlarr: image: linuxserver/prowlarr:latest container_name: prowlarr environment: - PUID=1000 - PGID=1000 - TZ=Europe/Rome volumes: - ./data/prowlarr/config:/config ports: - "9696:9696" restart: unless-stopped # Optional: GeoIP database updater # Requires free MaxMind license: https://www.maxmind.com/en/geolite-free-ip-geolocation-data geoip: image: crazymax/geoip-updater:latest container_name: geoip-updater environment: - EDITION_IDS=GeoLite2-ASN,GeoLite2-City,GeoLite2-Country - LICENSE_KEY=YOUR_LICENSE_KEY # Replace with your MaxMind license key - DOWNLOAD_PATH=/data - SCHEDULE=0 0 * * 0 # Weekly on Sunday at midnight - LOG_LEVEL=info - LOG_JSON=false volumes: - ./data/geoip:/data restart: unless-stopped