Files
home-lab/JellyFin/docker-compose.yml
T
Shaun Collins deefb99506 Added Bazarr
2026-03-19 10:33:57 +00:00

276 lines
6.4 KiB
YAML

services:
jellyfin:
image: lscr.io/linuxserver/jellyfin:latest
container_name: jellyfin
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
volumes:
- /mnt/e/library:/config
- ${TVSHOWS}:/data/tvshows
- ${MOVIES}:/data/movies
ports:
- "8096:8096"
- "8920:8920"
- "7359:7359/udp"
- "1900:1900/udp"
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8096/health"]
start_period: 30s
timeout: 5s
interval: 30s
retries: 3
networks:
- lingen
jellyseerr:
image: ghcr.io/fallenbagel/jellyseerr:latest
init: true
container_name: jellyseerr
environment:
- LOG_LEVEL=debug
- TZ=${TZ}
- PORT=5055
ports:
- "5055:5055"
volumes:
- ./JellySeerr/config:/app/config
healthcheck:
test: wget --no-verbose --tries=1 --spider http://localhost:5055/api/v1/status || exit 1
start_period: 20s
timeout: 3s
interval: 15s
retries: 3
restart: unless-stopped
networks:
- lingen
sonarr:
image: lscr.io/linuxserver/sonarr:latest
container_name: sonarr
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
volumes:
- ./Sonarr/data:/config
- ./Sonarr/downloads:/downloads
- ${TVSHOWS}:/data/tvshows
- ${MOVIES}:/data/movies
- ${DOWNLOADS}:/data/downloads
ports:
- "8989:8989"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8989/ping"]
start_period: 30s
timeout: 5s
interval: 30s
retries: 3
restart: unless-stopped
networks:
- lingen
prowlarr:
container_name: prowlarr
image: ghcr.io/hotio/prowlarr
ports:
- "9696:9696"
environment:
- PUID=${PUID}
- PGID=${PGID}
- UMASK=002
- TZ=${TZ}
volumes:
- ./Prowlarr/config:/config
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9696"]
start_period: 30s
timeout: 5s
interval: 30s
retries: 3
networks:
- lingen
radarr:
container_name: radarr
image: ghcr.io/hotio/radarr
ports:
- "7878:7878"
environment:
- PUID=${PUID}
- PGID=${PGID}
- UMASK=002
- TZ=${TZ}
volumes:
- ./Radarr/config:/config
- ./Radarr/data:/data
- ./Radarr/downloads:/downloads
- ${TVSHOWS}:/data/tvshows
- ${MOVIES}:/data/movies
- ${DOWNLOADS}:/data/downloads
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:7878/ping"]
start_period: 30s
timeout: 5s
interval: 30s
retries: 3
networks:
- lingen
bazarr:
container_name: bazarr
image: lscr.io/linuxserver/bazarr:latest
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
volumes:
- ./Bazarr/config:/config
- ${TVSHOWS}:/data/tvshows
- ${MOVIES}:/data/movies
ports:
- "6767:6767"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:6767/health"]
start_period: 30s
timeout: 5s
interval: 30s
retries: 3
restart: unless-stopped
networks:
- lingen
flaresolverr:
image: ghcr.io/flaresolverr/flaresolverr:latest
container_name: flaresolverr
environment:
- LOG_LEVEL=${LOG_LEVEL:-info}
- LOG_HTML=${LOG_HTML:-false}
- CAPTCHA_SOLVER=${CAPTCHA_SOLVER:-none}
- TZ=${TZ}
ports:
- ${PORT:-8191}:8191
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8191"]
start_period: 30s
timeout: 5s
interval: 30s
retries: 3
restart: unless-stopped
networks:
- lingen
gluetun-webui:
image: scuzza/gluetun-webui:latest
container_name: gluetun-webui
ports:
- "127.0.0.1:3002:3000"
environment:
- GLUETUN_CONTROL_URL=http://gluetun:8000
- TRUST_PROXY=true
# - GLUETUN_API_KEY=${GLUETUN_API_KEY}
networks:
- lingen
restart: unless-stopped
read_only: true
tmpfs:
- /tmp
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
healthcheck:
test: ["CMD-SHELL", "wget -q -O- http://localhost:3000/api/health || exit 1"]
interval: 30s
timeout: 5s
start_period: 10s
retries: 3
gluetun:
image: qmcgaw/gluetun
container_name: gluetun
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun:/dev/net/tun
environment:
- VPN_SERVICE_PROVIDER=protonvpn
- VPN_TYPE=wireguard
- WIREGUARD_PRIVATE_KEY=${WIREGUARD_PRIVATE_KEY}
- SERVER_COUNTRIES=${SERVER_COUNTRIES}
- API_LOG_LEVEL=info
volumes:
- /home/shaun/Projects/JellyFin/Gluetun/auth:/gluetun/auth
ports:
- "51820:51820/udp"
- "8000:8000"
- "8080:8080" # Add qBittorrent WebUI port
- "6881:6881" # Add qBittorrent listening port
- "6881:6881/udp" # Add qBittorrent listening port UDP
healthcheck:
test: ["CMD-SHELL", "wget -q -O- http://localhost:8000/v1/vpn/status || exit 1"]
start_period: 30s
timeout: 5s
interval: 30s
retries: 3
networks:
- lingen
restart: unless-stopped
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
container_name: qbittorrent
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
- WEBUI_PORT=8080
volumes:
- ./Radarr/config:/config
- ${TVSHOWS}:/data/tvshows
- ${MOVIES}:/data/movies
- ${DOWNLOADS}:/data/downloads
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080"]
start_period: 30s
timeout: 5s
interval: 30s
retries: 3
restart: unless-stopped
network_mode: "container:gluetun"
depends_on:
gluetun:
condition: service_healthy
lidarr:
container_name: lidarr
image: ghcr.io/hotio/lidarr
ports:
- "8686:8686"
environment:
- PUID=${PUID}
- PGID=${PGID}
- UMASK=002
- TZ=${TZ}
volumes:
- ./Lidarr/config:/config
- ./Lidarr/data:/data
- ./Lidarr/downloads:/downloads
- ${MUSIC}:/data/music
- ${DOWNLOADS}:/data/downloads
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8686/ping"]
start_period: 30s
timeout: 5s
interval: 30s
retries: 3
networks:
- lingen
restart: unless-stopped
networks:
lingen:
driver: bridge