Docker - VPN Media Stack for Downloaders on Synology
services:
###########################################################################
## Docker Compose File: Transmission (haugene)
## Function: Torrent Download Client
## Documentation: https://github.com/haugene/docker-transmission-openvpn
###########################################################################
transmission:
image: haugene/transmission-openvpn
container_name: transmission-openvpn
cap_add:
- NET_ADMIN # Required for VPN functionality if using haugene/transmission-openvpn
environment:
- CREATE_TUN_DEVICE=true
- OPENVPN_PROVIDER=custom
- OPENVPN_CONFIG=hr-15.protonvpn.udp # Replace with your .ovpn filename
- OPENVPN_USERNAME=${OPENVPN_USERNAME:?err}
- OPENVPN_PASSWORD=${OPENVPN_PASSWORD:?err}
- OPENVPN_OPTS=--inactive 3600 --ping 10 --ping-exit 60
- WEBPROXY_ENABLED=false
- LOCAL_NETWORK=$LAN_NETWORK{:{LAN_NETWORK:?err} # Your local network range
- PUID=${PUID:?err} # User ID
- PGID=${PGID:?err} # Group ID
- TZ=${TZ:?err} # TimeZone
- UMASK=${UMASK:?err} # File Umask
- DEBUG=true
- TRANSMISSION_SCRAPE_PAUSED_TORRENTS_ENABLED=false
- TRANSMISSION_UMASK=002${UMASK:?err}
volumes:
- ${DOCKERFOLDER:?err}/transmission-openvpn/ovpn_files/:/etc/openvpn/custom
- ${DOCKERFOLDER:?err}/transmission-openvpn/config/:/config
#- /volume1/Video/MOVIES:/data/movies
#- /volume1/Video/MOVIES_TV:/data/movies_tv
#- /volume1/Music:/data/music
#- /volume1/Books:/data/books
#- /volume1/Comics:/data/comics
#- /volume1/Video/XXX:/data/xxx
#- /volume1/Media/downloads:/data # Shared downloads directory for persistence and sharing with *arr services
- ${MEDIAFOLDER:?err}/torrents:/data
- ${MEDIAFOLDER:?err}/media:/media
logging:
driver: json-file
options:
max-file: ${DOCKERLOGGING_MAXFILE:?err} # Max number of log files
max-size: ${DOCKERLOGGING_MAXSIZE:?err} # Max file size
ports:
- 9091:9091 # Transmission Web UI
- 51413:51413 # Transmission Peer Port (adjust if using port forwarding)
- 51413:51413/udp # Transmission Peer Port (adjust if using port forwarding)
restart: unless-stopped
###########################################################################
## Docker Compose File: qBittorrent (LinuxServer.io)
## Function: Torrent Download Client
## Documentation: https://docs.linuxserver.io/images/docker-qbittorrent
###########################################################################
# qbittorrent:
# image: linuxserver/qbittorrent:latest
# container_name: qbittorrent
# # network_mode: service:transmission # qBittorrent MUST always use a VPN / Secure Internet connection
# environment:
# - PUID=1031 # Optional: Adjust for your user ID
# - PGID=100 # Optional: Adjust for your group ID
# - UMASK=002
# - TZ=America/Montreal
# - WEBUI_PORT=8180
# # - DOCKER_MODS=ghcr.io/gilbn/theme.park:qbittorrent
# # - TP_THEME=${TP_THEME:?err:?err}
# volumes:
# - ${DOCKERFOLDER:?err}/volume1/docker/qbittorrent/config:/config
# - /volume1/data:${MEDIAFOLDER:?err}:/data
# logging:
# driver: json-file
# options:
# max-file: "10" # Max number of log files
# max-size: "200k" # Max file size
# ports:
# - 6881:6881 # Torrent port (TCP)
# - 6881:6881/udp # Torrent port (UDP)
# - 8280:8180:8080 # Web UI port
# depends_on:
# - transmission
# restart: unless-stopped
###########################################################################
## Docker Compose File: SABnzbd (LinuxServer.io)
## Function: Usenet Download Client
## Documentation: https://docs.linuxserver.io/images/docker-sabnzbd
###########################################################################
# sabnzbd:
# image: lscr.io/linuxserver/sabnzbd:latest
# container_name: sabnzbd
# network_mode: service:transmission # SABnzbd MUST always use a VPN / Secure Internet connection
# environment:
# - PUID=${PUID:?err} # User ID
# - PGID=${PGID:?err} # Group ID
# - TZ=${TZ:?err} # TimeZone
# - UMASK=${UMASK:?err} # File Umask
# - DOCKER_MODS=ghcr.io/gilbn/theme.park:sabnzbd
# - TP_THEME=organizr # Refer to Theme Park for more info / options: https://docs.theme-park.dev/theme-options/aquamarine/
# volumes:
# - ${DOCKERFOLDER:?err}/sabnzbd/config:/config
# - ${MEDIAFOLDER:?err}:/data
# logging:
# driver: json-file
# options:
# max-file: ${DOCKERLOGGING_MAXFILE:?err} # Max number of log files
# max-size: ${DOCKERLOGGING_MAXSIZE:?err} # Max file size
# ports:
# - 8080:8080 # Sabnzbd Web UI port
# - 9090:9090 # Optional:Sabnzbd SSLWeb portUI if configuredHTTPS
# depends_on:
# - transmission
# restart: unless-stopped
# Create vlan on Synology
#sudo docker network create -d macvlan --subnet=192.168.253.0/24 --gateway=192.168.253.1 --ip-range=192.168.253.36/30 --aux-address 'host=192.168.253.39' -o parent=eth3 media-network
#sudo ip link add media-network link eth3 type macvlan mode bridge
#sudo ip addr add 192.168.253.39/32 dev media-network
#sudo ip link set media-network up
#sudo ip route add 192.168.253.36/30 dev media-network