Docker - VPN Media Stack without Downloaders
services:
###########################################################################
## Docker Compose File: TransmissionProwlarr (haugene)LinuxServer.io)
## Function: TorrentIndexer Downloadand ClientSearch Manager
## Documentation: https://github.com/haugene/docs.linuxserver.io/images/docker-transmission-openvpnprowlarr
###########################################################################
transmission:prowlarr:
image: haugene/transmission-openvpnlscr.io/linuxserver/prowlarr:latest
container_name: transmission-openvpn
cap_add:
- NET_ADMIN # Required for VPN functionality if using haugene/transmission-openvpnprowlarr
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{:?err} # Your local network range
- PUID=${PUID:?err}PUID} # User ID
- PGID=${PGID:?err}PGID} # Group ID
- TZ=${TZ:?err}TZ} # TimeZone
- UMASK=${UMASK:?err}UMASK} # File Umask
- DEBUG=true
- TRANSMISSION_SCRAPE_PAUSED_TORRENTS_ENABLED=false
- TRANSMISSION_UMASK=002
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:/dataARGS=
logging:
driver: json-file
options:
max-file: ${DOCKERLOGGING_MAXFILE:?err}DOCKERLOGGING_MAXFILE} # Max number of log files
max-size: ${DOCKERLOGGING_MAXSIZE:?err}DOCKERLOGGING_MAXSIZE} # Max file size
ports:
- 9091:90919696:9696 # TransmissionProwlarr Webweb UIinterface port
volumes:
- 51413:51413${DOCKERFOLDER}/prowlarr/config:/config:rw # TransmissionHost Peerpath Portfor (adjustProwlarr ifconfiguration
using port forwarding)depends_on:
- 51413:51413/udp # Transmission Peer Port (adjust if using port forwarding)flaresolverr
restart: unless-stopped
###########################################################################
## Docker Compose File: qBittorrentFlaresolverr (LinuxServer.io)Flaresolverr)
## Function: TorrentCloudflare DownloadProxy ClientServer
## Documentation: https://docs.linuxserver.io/images/docker-qbittorrentgithub.com/FlareSolverr/FlareSolverr
###########################################################################
# qbittorrent:
#flaresolverr:
image: linuxserver/qbittorrent:flaresolverr/flaresolverr:latest
#
container_name: qbittorrent
#flaresolverr
# network_mode: service:transmission
# qBittorrent MUST always use a VPN / Secure Internet connection
# environment:
#- LOG_LEVEL=info
- CAPTCHA_SOLVER=none
- PUID=1031${PUID} # Optional: Adjust for your userUser ID
#
- PGID=100${PGID} # Optional: Adjust for your groupGroup ID
- TZ=${TZ} # TimeZone
- UMASK=002${UMASK} # -File TZ=America/Montreal
# # - DOCKER_MODS=ghcr.io/gilbn/theme.park:qbittorrent
# # - TP_THEME=${TP_THEME:?err:?err}
# volumes:
# - /volume1/docker/qbittorrent/config:/config
# - /volume1/data:/data
#Umask
logging:
#
driver: json-file
# options:
#
max-file: "10"${DOCKERLOGGING_MAXFILE} # Max number of log files
# max-size: "200k"${DOCKERLOGGING_MAXSIZE} # Max file size
#ports:
ports:- 8191:8191 # -FlareSolverr 6881:6881web # Torrentinterface port
(TCP)
#volumes:
- 6881:6881/udp # Torrent port (UDP)
# - 8280:8080 # Web UI port
# depends_on:
# - transmission
#${DOCKERFOLDER}/flaresolverr/config:/config
restart: unless-stopped
###########################################################################
## Docker Compose File: SABnzbdRadarr (LinuxServer.io)
## Function: UsenetMovie DownloadLibrary ClientManager
## Documentation: https://docs.linuxserver.io/images/docker-sabnzbdradarr
###########################################################################
# sabnzbd:
#radarr:
image: lscr.io/linuxserver/sabnzbd:radarr:latest
#
container_name: sabnzbdradarr
# network_mode: service:transmission
# SABnzbd MUST always use a VPN / Secure Internet connection
# environment:
#
- PUID=${PUID:?err}PUID} # User ID
# - PGID=${PGID:?err}PGID} # Group ID
# - TZ=${TZ:?err}TZ} # TimeZone
#
- UMASK=${UMASK:?err}UMASK} # 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}DOCKERLOGGING_MAXFILE} # Max number of log files
# max-size: ${DOCKERLOGGING_MAXSIZE:?err}DOCKERLOGGING_MAXSIZE} # Max file size
ports:
- 7878:7878 # Radarr web interface port
volumes:
- /etc/localtime:/etc/localtime:ro
- ${DOCKERFOLDER}/radarr/config:/config # Radarr configuration files
- ${MEDIAFOLDER}:/data
depends_on:
- prowlarr
restart: unless-stopped
###########################################################################
## Docker Compose File: Sonarr (LinuxServer.io)
## Function: Series Library Manager (TV Shows)
## Documentation: https://docs.linuxserver.io/images/docker-sonarr
###########################################################################
sonarr:
image: lscr.io/linuxserver/sonarr:latest
container_name: sonarr
# network_mode: service:transmission
environment:
- PUID=${PUID} # User ID
- PGID=${PGID} # Group ID
- TZ=${TZ} # TimeZone
- UMASK=${UMASK} # File Umask
logging:
driver: json-file
options:
max-file: ${DOCKERLOGGING_MAXFILE} # Max number of log files
max-size: ${DOCKERLOGGING_MAXSIZE} # Max file size
ports:
- 8989:8989 # Sonarr web interface port
volumes:
- 8080:8080/etc/localtime:/etc/localtime:ro
- ${DOCKERFOLDER}/sonarr/config:/config # Replace with your desired config path
- ${MEDIAFOLDER}:/data
depends_on:
- prowlarr
restart: unless-stopped
###########################################################################
## Docker Compose File: Bazarr (LinuxServer.io)
## Function: Download subtitles for Radarr and Sonarr
## Documentation: https://docs.linuxserver.io/images/docker-bazarr
###########################################################################
bazarr:
image: ghcr.io/hotio/bazarr:nightly
container_name: bazarr
# network_mode: service:transmission
environment:
- PUID=${PUID} # User ID
- PGID=${PGID} # Group ID
- TZ=${TZ} # TimeZone
- UMASK=${UMASK} # File Umask
logging:
driver: json-file
options:
max-file: ${DOCKERLOGGING_MAXFILE}
max-size: ${DOCKERLOGGING_MAXSIZE}
ports:
- 6767:6767 # Bazarr web interface port
volumes:
- /etc/localtime:/etc/localtime:ro
- ${DOCKERFOLDER}/bazarr:/config
- ${MEDIAFOLDER}/media:/data/media
depends_on:
- prowlarr
restart: unless-stopped
###########################################################################
## Docker Compose File: Lidarr (LinuxServer.io)
## Function: Music Library Manager
## Documentation: https://docs.linuxserver.io/images/docker-lidarr
###########################################################################
lidarr:
image: lscr.io/linuxserver/lidarr:latest
container_name: lidarr
# network_mode: service:transmission
environment:
- PUID=${PUID} # User ID
- PGID=${PGID} # Group ID
- TZ=${TZ} # TimeZone
- UMASK=${UMASK} # File Umask
logging:
driver: json-file
options:
max-file: ${DOCKERLOGGING_MAXFILE}
max-size: ${DOCKERLOGGING_MAXSIZE}
ports:
- 8686:8686 # Lidarr web interface port
volumes:
- ${DOCKERFOLDER}/lidarr/config:/config # Replace with your config path
- ${MEDIAFOLDER}:/data
depends_on:
- prowlarr
restart: unless-stopped
###########################################################################
## Docker Compose File: Lazylibrarian (LinuxServer.io)
## Function: Book Library Manager
## Documentation: https://docs.linuxserver.io/images/docker-lazylibrarian/
###########################################################################
lazylibrarian:
image: lscr.io/linuxserver/lazylibrarian:latest
container_name: lazylibrarian
# network_mode: service:transmission
environment:
- PUID=${PUID} # User ID
- PGID=${PGID} # Group ID
- TZ=${TZ} # TimeZone
- UMASK=${UMASK} # File Umask
logging:
driver: json-file
options:
max-file: ${DOCKERLOGGING_MAXFILE}
max-size: ${DOCKERLOGGING_MAXSIZE}
ports:
- 5299:5299 # LazyLibrarian web interface port
volumes:
- ${DOCKERFOLDER}/lazylibrarian/config:/config # Path to store configuration files
- ${MEDIAFOLDER}:/data
depends_on:
- prowlarr
restart: unless-stopped
###########################################################################
## Docker Compose File: Mylar3 (LinuxServer.io)
## Function: Comic Manager
## Documentation: https://docs.linuxserver.io/images/docker-mylar3/
###########################################################################
mylar3:
image: linuxserver/mylar3
container_name: mylar3
# network_mode: service:transmission
environment:
- PUID=${PUID} # User ID
- PGID=${PGID} # Group ID
- TZ=${TZ} # TimeZone
- UMASK=${UMASK} # File Umask
- COMICVIN_BASEURL=#optional
logging:
driver: json-file
options:
max-file: ${DOCKERLOGGING_MAXFILE}
max-size: ${DOCKERLOGGING_MAXSIZE}
ports:
- 8090:8090 # Mylar3 web interface port
volumes:
- ${DOCKERFOLDER}/mylar3/config:/config # Mylar3 configuration files
- ${MEDIAFOLDER}:/data
depends_on:
- prowlarr
restart: unless-stopped
###########################################################################
## Docker Compose File: Mylar3 (LinuxServer.io)
## Function: Comic Manager
## Documentation: https://github.com/thespad/docker-whisparr/pkgs/container/whisparr
###########################################################################
whisparr:
image: ghcr.io/thespad/whisparr:latest
container_name: whisparr
# network_mode: service:transmission
environment:
- PUID=${PUID} # User ID
- PGID=${PGID} # Group ID
- TZ=${TZ} # TimeZone
- UMASK=${UMASK} # File Umask
logging:
driver: json-file
options:
max-file: ${DOCKERLOGGING_MAXFILE}
max-size: ${DOCKERLOGGING_MAXSIZE}
ports:
- 6969:6969 # Whisparr web interface port
volumes:
- ${DOCKERFOLDER}/whisparr/config:/config # Whisparr configuration files
- ${MEDIAFOLDER}:/data
depends_on:
- prowlarr
restart: unless-stopped
plex:
image: ghcr.io/hotio/plex
container_name: plex
# network_mode: service:transmission
environment:
- PUID=${PUID} # User ID
- PGID=${PGID} # Group ID
- TZ=${TZ} # TimeZone
- UMASK=${UMASK} # File Umask
- PLEX_CLAIM_TOKEN=${PLEX_CLAIM_TOKEN}
- PLEX_ADVERTISE_URL=${PLEX_ADVERTISE_URL}
- PLEX_NO_AUTH_NETWORKS=
- PLEX_BETA_INSTALL=${PLEX_BETA_INSTALL}
- NVIDIA_VISIBLE_DEVICES=all # Tells the NVIDIA Container Toolkit to expose all available NVIDIA GPUs to the container
- NVIDIA_DRIVER_CAPABILITIES=all
logging:
driver: json-file
options:
max-file: ${DOCKERLOGGING_MAXFILE}
max-size: ${DOCKERLOGGING_MAXSIZE}
ports:
- 32400:32400
#- 8324:8324/tcp
#- 32469:32469/tcp
#- 1900:1900/udp
#- 32410:32410/udp
#- 32412:32412/udp
#- 32413:32413/udp
#- 32414:32414/udp
volumes:
- /etc/localtime:/etc/localtime:ro
- ${DOCKERFOLDER}/plex:/config:rw
- ${MEDIAFOLDER}/media:/data/media:rw
devices: # optional: hardware transcoding (only with Plex Pass) uncomment this line.
- /dev/dri:/dev/dri # optional: hardware transcoding (only with Plex Pass) uncomment this line.
#- /dev/dvb:/dev/dvb # Uncomment this device for typical USB TV Tuner cards
tmpfs: # optional: enable transcoding in RAM. uncomment this line.
- /transcode # optional: enable transcoding in RAM. uncomment this line.
#runtime: nvidia # Crucial for NVIDIA GPU access
restart: unless-stopped
###########################################################################
## Docker Compose File: Jellyfin (LinuxServer.io)
## Function: Media Server
## Documentation: https://jellyfin.org/docs/general/administration/installing#docker
## https://jellyfin.org/docs/general/administration/hardware-acceleration/
###########################################################################
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
# network_mode: service:transmission
environment:
- PUID=${PUID} # User ID
- PGID=${PGID} # Group ID
- TZ=${TZ} # TimeZone
- UMASK=${UMASK} # File Umask
- COMICVIN_BASEURL=#optional
- NVIDIA_VISIBLE_DEVICES=all # Tells the NVIDIA Container Toolkit to expose all available NVIDIA GPUs to the container
- NVIDIA_DRIVER_CAPABILITIES=all
- ROC_ENABLE_PRE_VEGA=1 # Hardware Acceleration
logging:
driver: json-file
options:
max-file: ${DOCKERLOGGING_MAXFILE}
max-size: ${DOCKERLOGGING_MAXSIZE}
healthcheck:
test: timeout 10s bash -c ':> /dev/tcp/127.0.0.1/8096' || exit 1
interval: 10s
timeout: 5s
retries: 3
start_period: 90s
volumes:
- ${DOCKERFOLDER}/jellyfin/config:/config # Path to your config directory
- ${DOCKERFOLDER}/jellyfin/cache:/cache # Path to your cache directory
- ${MEDIAFOLDER}/media:/data/media:rw
- /mnt/photo:/media/photo:rw # Path to your photos, :ro for read-only :rw for read-write
ports:
- 8096:8096 # Web UI
port- 8920:8920 # HTTPS (optional)
- 9090:90907359:7359/udp # Optional:DLNA SSLdiscovery
port- if configured1900:1900/udp # depends_on:DLNA advertising
#runtime: nvidia # Crucial for NVIDIA GPU access
restart: unless-stopped
###########################################################################
## Docker Compose File: Jellyseerr (fallenbagel)
## Function: Media Request Manager
## Documentation: https://hub.docker.com/r/fallenbagel/jellyseerr
###########################################################################
jellyseerr:
image: fallenbagel/jellyseerr:latest
container_name: jellyseerr
# network_mode: service:transmission
environment:
- transmissionPUID=${PUID} # User ID
- PGID=${PGID} # Group ID
- TZ=${TZ} # TimeZone
- UMASK=${UMASK} # File Umask
- LOG_LEVEL=debug
logging:
driver: json-file
options:
max-file: ${DOCKERLOGGING_MAXFILE}
max-size: ${DOCKERLOGGING_MAXSIZE}
ports:
- 5055:5055
volumes:
- ${DOCKERFOLDER}/jelleyseer/config:/app/config # Change to your desired config path
restart: unless-stopped
###########################################################################
## Docker Compose File: Unpackerr (Hotio.Dev)
## Function: Archive Media Extraction
## Documentation: https://github.com/davidnewhall/unpackerr
## https://github.com/davidnewhall/unpackerr/blob/master/examples/docker-compose.yml
###########################################################################
unpackerr:
image: golift/unpackerr:latest
container_name: unpackerr
network_mode: none
environment:
- PUID=${PUID} # User ID
- PGID=${PGID} # Group ID
- TZ=${TZ} # TimeZone
- UMASK=${UMASK} # File Umask
# Documentation on all Environment Variables can be found at:
# https://github.com/davidnewhall/unpackerr#docker-env-variables
- UN_DEBUG=false
- UN_LOG_FILE=
- UN_LOG_FILES=10
- UN_LOG_FILE_MB=10
- UN_INTERVAL=2m
- UN_START_DELAY=1m
- UN_RETRY_DELAY=5m
- UN_MAX_RETRIES=3
- UN_PARALLEL=1
- UN_FILE_MODE=0664
- UN_DIR_MODE=0775
# Sonarr Config - Copy API Key from: http://sonarr:8989/general/settings
- UN_SONARR_0_URL=http://sonarr:8989
- UN_SONARR_0_API_KEY=${SONARR_API_KEY}
- UN_SONARR_0_PATHS_0=/data/torrents/anime
- UN_SONARR_0_PATHS_1=/data/torrents/series
- UN_SONARR_0_PROTOCOLS=torrent
- UN_SONARR_0_TIMEOUT=10s
- UN_SONARR_0_DELETE_ORIG=false
- UN_SONARR_0_DELETE_DELAY=5m
# Radarr Config - Copy API Key from: http://radarr:7878/general/settings
- UN_RADARR_0_URL=http://radarr:7878
- UN_RADARR_0_API_KEY=${RADARR_API_KEY}
- UN_RADARR_0_PATHS_0=/data/torrents/movies
- UN_RADARR_0_PROTOCOLS=torrent
- UN_RADARR_0_TIMEOUT=10s
- UN_RADARR_0_DELETE_ORIG=false
- UN_RADARR_0_DELETE_DELAY=5m
# Lidarr Config - Copy API Key from: http://lidarr:8686/general/settings
- UN_LIDARR_0_URL=http://lidarr:8686
- UN_LIDARR_0_API_KEY=${LIDARR_API_KEY}
- UN_LIDARR_0_PATHS_0=/data/torrents/music
- UN_LIDARR_0_PROTOCOLS=torrent
- UN_LIDARR_0_TIMEOUT=10s
- UN_LIDARR_0_DELETE_ORIG=false
- UN_LIDARR_0_DELETE_DELAY=
volumes:
- ${DOCKERFOLDER}/unpackerr:/config
- ${MEDIAFOLDER}:/data
security_opt:
- no-new-privileges:true
restart: unless-stopped
# CreateUncomment vlanthe onlines Synologybelow #sudoto dockeruse networkNvidia createGPUs for Hardware Transcoding
# deploy:
# resources:
# reservations:
# devices:
# -d macvlandriver: --subnet=192.168.253.0/24nvidia
--gateway=192.168.253.# count: 1
--ip-range=192.168.253.36/30# --aux-addresscapabilities: 'host=192.168.253.39'[gpu]
-o#networks:
parent=eth3# media-networkmedia_network:
#sudo# ip link add media-network link eth3 type macvlan modedriver: 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