###########################################################################
###########################################################################
version: "3.9"
##### NETWORKS
# You may customize the network subnet (192.168.30.0/24) below as you please.
networks:
media-network:
name: media-network
driver: bridge
ipam:
config:
- subnet: $DOCKER_SUBNET
##### EXTENSION FIELDS
# Helps eliminate repetition of sections
# Common environment values
x-environment: &env
TZ: $TZ
PUID: $PUID
PGID: $PGID
# Keys common for some of the core services that we always automatically restart on failure
x-core-services: &core
networks:
- media-network
security_opt:
- no-new-privileges:true
restart: always
# Keys common for some of the dependent services/apps
x-apps: &apps
networks:
- media-network
security_opt:
- no-new-privileges:true
restart: unless-stopped
# Keys common for services that run on the VPN for networking
x-vpn: &vpn
network_mode: container:expressvpn
depends_on:
- expressvpn
security_opt:
- no-new-privileges:true
restart: unless-stopped
##### SERVICES
services:
###########################################################################
###########################################################################
##
## Docker Compose File: Deluge (LinuxServer.io)
## Function: lightweight, cross-platform BitTorrent client.
##
## Documentation: https://hub.docker.com/r/linuxserver/deluge
##
###########################################################################
###########################################################################
deluge:
<<: *vpn
image: linuxserver/deluge:latest
container_name: deluge
volumes:
- $DOCKERDIR/services/deluge/config:/config
- $DATADIR:/data
environment:
<<: *env
# ports: # open here if not using the VPN, otherwise open in VPN port configuration
# - 8112:8112
# - 6881:6881
# - 6881:6881/udp
deluge_media:
<<: *vpn
image: linuxserver/deluge:latest
container_name: deluge_media
volumes:
- $DOCKERDIR/services/deluge_media/config:/config
- $DATADIR:/data
environment:
<<: *env
# ports: # open here if not using the VPN, otherwise open in VPN port configuration
# - 8113:8113
# - 6881:6881
# - 6881:6881/udp
###########################################################################
###########################################################################
##
## Docker Compose File: ExpressVPN
## Function: VPN Client
##
## Documentation: https://hub.docker.com/r/polkaned/expressvpn
##
###########################################################################
###########################################################################
expressvpn:
image: polkaned/expressvpn
container_name: expressvpn
networks:
media-network:
ipv4_address: 192.168.30.200
restart: unless-stopped
environment:
- ACTIVATION_CODE=
- SERVER=usmi
- PREFERRED_PROTOCOL=tcp
- LIGHTWAY_CIPHER=auto
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun
stdin_open: true
tty: true
command: /bin/bash
privileged: true
ports:
- $WEBUI_PORT_DELUGE:$WEBUI_PORT_DELUGE # Deluge port for WebUI
- $DELUGE_PORT_TCP:$DELUGE_PORT_TCP # Deluge port (TCP)
- $DELUGE_PORT_UDP:$DELUGE_PORT_UDP/udp # Deluge port (UDP)
- $WEBUI_PORT_DELUGE_MEDIA:$WEBUI_PORT_DELUGE_MEDIA # Deluge_Media port for WebUI
- $DELUGE_MEDIA_PORT_TCP:$DELUGE_MEDIA_PORT_TCP # Deluge_Media port (TCP)
- $DELUGE_MEDIA_PORT_UDP:$DELUGE_MEDIA_PORT_UDP/udp # Deluge_Media port (UDP)
- $FLARESOLVERR_PORT:$FLARESOLVERR_PORT # Flaresolverr
###########################################################################
###########################################################################
##
## Docker Compose File: Firefox
## Function: Browser
##
## Documentation:
##
###########################################################################
###########################################################################
firefox:
image: linuxserver/firefox:latest
container_name: firefox
# security_opt:
# - seccomp:unconfined #optional
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
# - FIREFOX_CLI=https://www.linuxserver.io/ #optional
volumes:
- $DOCKERDIR/services/firefox/config:/config
ports:
- 3000:3000
- 3001:3001
shm_size: "1gb"
restart: unless-stopped
###########################################################################
###########################################################################
##
## Docker Compose File: Flaresolverr (Flaresolverr)
## Function: Cloudflare Proxy Server
##
## Documentation: https://github.com/FlareSolverr/FlareSolverr
##
###########################################################################
###########################################################################
flaresolverr:
<<: *apps
image: ghcr.io/flaresolverr/flaresolverr:latest
container_name: flaresolverr
restart: unless-stopped
network_mode: "service:expressvpn"
# ports:
# - "$FLARESOLVERR_PORT:8191" # Configured in Gluetun VPN container
environment:
- LOG_LEVEL=info
- LOG_HTML=false
- CAPTCHA_SOLVER=none
- TZ=$TZ
###########################################################################
###########################################################################
##
## Docker Compose File: Heimdall (LinuxServer.io)
## Function: Organise links to web sites and web applications (Application Dashboard)
##
## Documentation: https://docs.linuxserver.io/images/docker-heimdall
## https://docs.linuxserver.io/general/swag#using-heimdall-as-the-home-page-at-domain-root
##
###########################################################################
###########################################################################
heimdall:
<<: *core
image: lscr.io/linuxserver/heimdall:latest
container_name: heimdall
ports:
- $HEIMDALL_PORT:80 # 80 to 82 already taken by other services
volumes:
- $DOCKERDIR/services/heimdall:/config
environment:
<<: *env
###########################################################################
###########################################################################
##
## Docker Compose File: Lidarr (LinuxServer.io)
## Function: Music Library Manager
##
## Documentation: https://docs.linuxserver.io/images/docker-lidarr
##
###########################################################################
###########################################################################
lidarr:
<<: *apps
image: lscr.io/linuxserver/lidarr:latest
container_name: lidarr
ports:
- "$WEBUI_PORT_LIDARR:8686"
volumes:
- $DOCKERDIR/services/lidarr:/config
- $DATADIR:/data
- "/etc/localtime:/etc/localtime:ro"
environment:
<<: *env
########################################################################
########################################################################
##
## Docker Compose File: Plex Media Server
## Function: Server Media (Movies, TV, Mustic) to all your devices
##
## Documentation: https://hub.docker.com/r/plexinc/pms-docker
##
########################################################################
########################################################################
plex:
image: plexinc/pms-docker:public
container_name: plex
<<: *apps
environment:
- TZ=$TZ
- PUID=$PUID
- PGID=$PGID
- HOSTNAME=dockervm-plex
- PLEX_CLAIM=
- 'ADVERTISE_IP: http://192.168.11.30:32400/'
ports:
- "32400:32400/tcp"
- "3005:3005/tcp"
- "8324:8324/tcp"
- "32469:32469/tcp"
# - "1900:1900/udp" # Conflicts with xTeVe and Synology default ports
- "32410:32410/udp"
- "32412:32412/udp"
- "32413:32413/udp"
- "32414:32414/udp"
volumes:
- $DOCKERDIR/services/plex:/config
- $DATADIR/media:/media
devices:
- dev/dri/:/dev/dri/
########################################################################
########################################################################
##
## Docker Compose File: Portainer (Portainer.io)
## Function: Alternate GUI Manager for Docker
##
## Documentation: https://docs.portainer.io/start/install/server/docker
##
########################################################################
########################################################################
portainer:
<<: *core
image: portainer/portainer-ce:latest
container_name: portainer
command: -H unix:///var/run/docker.sock
ports:
- "$WEBUI_PORT_PORTAINER:9000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- $DOCKERDIR/services/portainer/data:/data # Change to local directory if you want to save/transfer config locally.
environment:
- TZ=$TZ
###########################################################################
###########################################################################
##
## Docker Compose File: Prowlarr (LinuxServer.io)
## Function: Indexer and Search Manager
##
## Documentation: https://docs.linuxserver.io/images/docker-prowlarr
##
###########################################################################
###########################################################################
prowlarr:
<<: *apps
image: ghcr.io/linuxserver/prowlarr:develop
container_name: prowlarr
ports:
- "$WEBUI_PORT_PROWLARR:9696"
volumes:
- $DOCKERDIR/services/prowlarr:/config
- "/etc/localtime:/etc/localtime:ro"
environment:
<<: *env
###########################################################################
###########################################################################
##
## Docker Compose File: Radarr (LinuxServer.io)
## Function: Movie Library Manager
##
## Documentation: https://docs.linuxserver.io/images/docker-radarr
##
###########################################################################
###########################################################################
radarr:
<<: *apps
image: lscr.io/linuxserver/radarr:nightly
container_name: radarr
ports:
- "$WEBUI_PORT_RADARR:7878"
volumes:
- $DOCKERDIR/services/radarr:/config
- $DATADIR:/data
- "/etc/localtime:/etc/localtime:ro"
environment:
<<: *env
###########################################################################
###########################################################################
##
## Docker Compose File: Sonarr (LinuxServer.io)
## Function: Series Library Manager (TV Shows)
##
## Documentation: https://docs.linuxserver.io/images/docker-sonarr
##
###########################################################################
###########################################################################
sonarr:
<<: *apps
image: lscr.io/linuxserver/sonarr
container_name: sonarr
ports:
- "$WEBUI_PORT_SONARR:8989"
volumes:
- $DOCKERDIR/services/sonarr:/config
- $DATADIR:/data
- "/etc/localtime:/etc/localtime:ro"
environment:
<<: *env
# Sonarr (Anime)- TV Shows management
sonarr_anime:
<<: *apps
image: lscr.io/linuxserver/sonarr
container_name: sonarr_anime
ports:
- "$WEBUI_PORT_SONARR_ANIME:8990"
volumes:
- $DOCKERDIR/services/sonarr_anime:/config
- $DATADIR:/data
- "/etc/localtime:/etc/localtime:ro"
environment:
<<: *env
###########################################################################
###########################################################################
##
## Docker Compose File: Tautulli (LinuxServer.io)
## Function: Monitoring, analytics & notifications for Plex Media Server
##
## Documentation: https://hub.docker.com/r/linuxserver/tautulli
##
###########################################################################
###########################################################################
tautulli:
<<: *apps
image: linuxserver/tautulli:latest
container_name: tautulli
ports:
- "8181:8181"
volumes:
- $DOCKERDIR/services/tautulli/config:/config
- $DOCKERDIR/services/plex/Library/Application Support/Plex Media Server/Logs:/logs:ro # For tautulli Plex log viewer
##### MAINTENANCE
###########################################################################
###########################################################################
##
## Docker Compose File: WatchTower
## Function: Automatic Docker Container Updates
##
## Documentation: https://containrrr.dev/watchtower/
##
###########################################################################
###########################################################################
watchtower:
<<: *core
image: containrrr/watchtower
container_name: watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
TZ: $TZ
WATCHTOWER_CLEANUP: "true"
WATCHTOWER_REMOVE_VOLUMES: "true"
WATCHTOWER_INCLUDE_STOPPED: "true"
WATCHTOWER_NO_STARTUP_MESSAGE: "false"
WATCHTOWER_SCHEDULE: "0 30 12 * * *" # Everyday at 12:30
# DOCKER_HOST: tcp://socket-proxy:2375 # Use this if you have Socket Proxy enabled.
DOCKER_API_VERSION: "1.40"