-
-
Save Sigri44/582f825f80b1f60a44eac8d342a7790b to your computer and use it in GitHub Desktop.
docker homelab media stack
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# My homelab-media-docker-stack | |
# | |
# Services | |
# Nginx-Proxy - Proxy server | |
# Organizr - Dashboard | |
# Plex - Media player | |
# Tautulli - Plex statistics | |
# Ombi - Allows users to request shows/movies to add to Plex/Sonarr/Radarr | |
# Sonarr - Searches for TV shows to download | |
# Radarr - Searches for movies to download | |
# Lidarr - Searches for music to download | |
# Jackett - Allows Sonarr/Radarr to search torrent trackers | |
# Deluge - Torrent downloader (uses nginx container as frontend proxy) | |
# Flaresolverr - Bypass Cloudflare protection | |
# VPN - VPN client to route torrent (deluge) traffic through | |
version: "3.4" | |
services: | |
vpn: | |
container_name: vpn | |
image: dperson/openvpn-client:latest | |
cap_add: | |
- net_admin # required to modify network interfaces | |
restart: unless-stopped | |
volumes: | |
- /dev/net:/dev/net:z # tun device | |
- ${ROOT}/config/vpn:/vpn # OpenVPN configuration | |
security_opt: | |
- label:disable | |
ports: | |
- 8112:8112 # port for deluge web UI to be reachable from local network | |
command: '-f "" -r 192.168.1.0/24' # enable firewall and route local network traffic | |
deluge: | |
container_name: deluge | |
image: linuxserver/deluge:latest | |
restart: unless-stopped | |
network_mode: service:vpn # run on the vpn network | |
environment: | |
- PUID=${PUID} # default user id, defined in .env | |
- PGID=${PGID} # default group id, defined in .env | |
- TZ=${TZ} # timezone, defined in .env | |
volumes: | |
- ${ROOT}/downloads:/downloads # downloads folder | |
- ${ROOT}/config/deluge:/config # config files | |
jackett: | |
container_name: jackett | |
image: linuxserver/jackett:latest | |
restart: unless-stopped | |
network_mode: host | |
environment: | |
- PUID=${PUID} # default user id, defined in .env | |
- PGID=${PGID} # default group id, defined in .env | |
- TZ=${TZ} # timezone, defined in .env | |
volumes: | |
- /etc/localtime:/etc/localtime:ro | |
- ${ROOT}/downloads/torrent-blackhole:/downloads # place where to put .torrent files for manual download | |
- ${ROOT}/config/jackett:/config # config files | |
sonarr: | |
container_name: sonarr | |
image: linuxserver/sonarr:latest | |
restart: unless-stopped | |
network_mode: host | |
environment: | |
- PUID=${PUID} # default user id, defined in .env | |
- PGID=${PGID} # default group id, defined in .env | |
- TZ=${TZ} # timezone, defined in .env | |
volumes: | |
- /etc/localtime:/etc/localtime:ro | |
- ${ROOT}/config/sonarr:/config # config files | |
- ${ROOT}/complete/tv:/tv # tv shows folder | |
- ${ROOT}/downloads:/downloads # download folder | |
radarr: | |
container_name: radarr | |
image: linuxserver/radarr:latest | |
restart: unless-stopped | |
network_mode: host | |
environment: | |
- PUID=${PUID} # default user id, defined in .env | |
- PGID=${PGID} # default group id, defined in .env | |
- TZ=${TZ} # timezone, defined in .env | |
volumes: | |
- /etc/localtime:/etc/localtime:ro | |
- ${ROOT}/config/radarr:/config # config files | |
- ${ROOT}/complete/movies:/movies # movies folder | |
- ${ROOT}/downloads:/downloads # download folder | |
lidarr: | |
container_name: lidarr | |
image: linuxserver/lidarr:latest | |
restart: unless-stopped | |
network_mode: host | |
environment: | |
- PUID=${PUID} # default user id, defined in .env | |
- PGID=${PGID} # default group id, defined in .env | |
- TZ=${TZ} # timezone, defined in .env | |
volumes: | |
- /etc/localtime:/etc/localtime:ro | |
- ${ROOT}/config/lidarr:/config # config files | |
- ${ROOT}/complete/music:/music # movies folder | |
- ${ROOT}/downloads:/downloads # download folder | |
plex-server: | |
container_name: plex-server | |
image: plexinc/pms-docker:latest | |
restart: unless-stopped | |
environment: | |
- TZ=${TZ} # timezone, defined in .env | |
network_mode: host | |
volumes: | |
- ${ROOT}/config/plex/db:/config # plex database | |
- ${ROOT}/config/plex/transcode:/transcode # temp transcoded files | |
- ${ROOT}/complete:/data # media library | |
tautulli: | |
image: tautulli/tautulli:latest | |
container_name: tautulli | |
restart: unless-stopped | |
network_mode: host | |
depends_on: | |
- plex-server | |
volumes: | |
- ${ROOT}/config/tautulli/config:/config | |
- ${ROOT}/config/plex/db/Library/Application\ Support/Plex\ Media\ Server/Logs:/logs:ro | |
environment: | |
- PUID=${PUID} | |
- PGID=${PGID} | |
- TZ=${TZ} | |
bazarr: | |
container_name: bazarr | |
image: linuxserver/bazarr | |
restart: unless-stopped | |
network_mode: host | |
environment: | |
- PUID=${PUID} # default user id, defined in .env | |
- PGID=${PGID} # default group id, defined in .env | |
- TZ=${TZ} # timezone, defined in .env | |
- UMASK_SET=022 #optional | |
volumes: | |
- ${ROOT}/config/bazarr:/config # config files | |
- ${ROOT}/complete/movies:/movies # movies folder | |
- ${ROOT}/complete/tv:/tv # tv shows folder | |
flaresolverr: | |
container_name: flaresolverr | |
image: ghcr.io/flaresolverr/flaresolverr | |
restart: unless-stopped | |
network_mode: host | |
environment: | |
- PUID=${PUID} | |
- PGID=${PGID} | |
- TZ=${TZ} | |
- LOG_LEVEL=info | |
organizr: | |
container_name: organizr | |
hostname: organizr | |
image: organizr/organizr | |
restart: unless-stopped | |
ports: | |
- 9292:80 | |
volumes: | |
- ${ROOT}/config/organizr:/config | |
environment: | |
- fpm=true | |
- branch=v2-master | |
- PUID=${PUID} # default user id, defined in .env | |
- PGID=${PGID} # default group id, defined in .env | |
- TZ=${TZ} # timezone, defined in .env | |
restart: always | |
npm-app: | |
image: jc21/nginx-proxy-manager:latest | |
container_name: npm-app | |
restart: always | |
ports: | |
- 80:80 | |
- 81:81 | |
- 443:443 | |
volumes: | |
- ${ROOT}/config/npm/config.json:/app/config/production.json | |
- ${ROOT}/config/npm/data:/data | |
- ${ROOT}/config/npm/letsencrypt:/etc/letsencrypt | |
npm-db: | |
image: mariadb | |
container_name: npm-db | |
restart: always | |
environment: | |
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} | |
MYSQL_DATABASE: ${MYSQL_DATABASE} | |
MYSQL_USER: ${MYSQL_USER} | |
MYSQL_PASSWORD: ${MYSQL_PASSWORD} | |
volumes: | |
- ${ROOT}/config/npm/db/mysql:/var/lib/mysql |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment