docker/media-stack/media-stack.yml

200 lines
5.5 KiB
YAML

services:
gluetun:
image: qmcgaw/gluetun
container_name: gluetun
cap_add:
- NET_ADMIN
ports:
- 3000:3000 # chromium
- 9091:9091 # transmission
- 8191:8191 # flaresolverr
- 7878:7878 # radarr
- 8989:8989 # sonarr
environment:
- VPN_SERVICE_PROVIDER=custom
- VPN_TYPE=wireguard
- VPN_PORT_FORWARDING=on
- VPN_PORT_FORWARDING_PROVIDER=protonvpn
devices:
- /dev/net/tun:/dev/net/tun
env_file:
- .env
restart: unless-stopped
networks:
- proxy
transmission:
# image: linuxserver/transmission:version-3.00-r8
image: linuxserver/transmission:version-4.0.5-r3
container_name: transmission
environment:
- PUID=1001
- PGID=1001
- TZ=America/New_York
volumes:
- ./transmission-config:/config
- ./transmission-watch:/watch
- /media/downloads:/media/downloads
# /downloads/movies in transmission webUI settings
# need to adjust port updater script based on paths
network_mode: service:gluetun
depends_on:
gluetun:
condition: service_healthy
restart: unless-stopped
chromium:
image: linuxserver/chromium
container_name: chromium
security_opt:
- seccomp:unconfined #optional
environment:
- PUID=1001
- PGID=1001
- TZ=America/New_York
volumes:
- ./chromium-config:/config
network_mode: service:gluetun
depends_on:
gluetun:
condition: service_healthy
shm_size: "1gb"
restart: unless-stopped
prowlarr:
image: linuxserver/prowlarr:latest
container_name: prowlarr
environment:
- PUID=1001
- PGID=1001
- TZ=America/New_York
volumes:
- ./prowlarr-config:/config
labels:
- "traefik.enable=true"
- "traefik.http.routers.prowlarr.entrypoints=websecure"
- "traefik.http.routers.prowlarr.rule=Host(`prowlarr.meftimes.com`)"
- "traefik.http.routers.prowlarr.middlewares=authelia@docker"
- "traefik.http.services.prowlarr.loadbalancer.server.port=9696"
network_mode: service:gluetun
depends_on:
gluetun:
condition: service_healthy
restart: unless-stopped
radarr:
image: linuxserver/radarr:latest
container_name: radarr
environment:
- PUID=1001
- PGID=1001
- TZ=America/New_York
volumes:
- ./radarr-config:/config
- /media:/media #optional
# - /media/transmission/downloads/complete:/downloads #optional
labels:
- "traefik.enable=true"
- "traefik.http.routers.radarr.entrypoints=websecure"
- "traefik.http.routers.radarr.rule=Host(`radarr.meftimes.com`)"
- "traefik.http.routers.radarr.middlewares=authelia@docker"
- "traefik.http.services.radarr.loadbalancer.server.port=7878"
network_mode: service:gluetun
depends_on:
gluetun:
condition: service_healthy
restart: unless-stopped
sonarr:
image: linuxserver/sonarr:latest
container_name: sonarr
environment:
- PUID=1001
- PGID=1001
- TZ=America/New_York
volumes:
- ./sonarr-config:/config
- /media:/media #optional
labels:
- "traefik.enable=true"
- "traefik.http.routers.sonarr.entrypoints=websecure"
- "traefik.http.routers.sonarr.rule=Host(`sonarr.meftimes.com`)"
- "traefik.http.routers.sonarr.middlewares=authelia@docker"
- "traefik.http.services.sonarr.loadbalancer.server.port=8989"
network_mode: service:gluetun
depends_on:
gluetun:
condition: service_healthy
restart: unless-stopped
flaresolverr:
image: flaresolverr/flaresolverr:latest
container_name: flaresolverr
environment:
- LOG_LEVEL=${LOG_LEVEL:-info}
- LOG_HTML=${LOG_HTML:-false}
- CAPTCHA_SOLVER=${CAPTCHA_SOLVER:-none}
- TZ=Europe/London
network_mode: service:gluetun
depends_on:
gluetun:
condition: service_healthy
restart: unless-stopped
jellyfin:
image: linuxserver/jellyfin:latest
container_name: jellyfin
environment:
- PUID=1001
- PGID=1001
- TZ=America/New_York
volumes:
- ./jellyfin-config:/config
- /media/jellyfin:/media/jellyfin
# - /media/transmission/downloads/tvshows:/data/tvshows
# - /media/transmission/downloads/movies:/data/movies
labels:
- "traefik.enable=true"
- "traefik.http.routers.jellyfin.entrypoints=websecure"
- "traefik.http.routers.jellyfin.rule=Host(`jellyfin.meftimes.com`)"
# - "traefik.http.routers.jellyfin.middlewares=authelia@docker"
- "traefik.http.services.jellyfin.loadbalancer.server.port=8096"
restart: unless-stopped
networks:
- proxy
jellyseerr:
image: fallenbagel/jellyseerr:latest
container_name: jellyseerr
environment:
- PUID=1001
- PGID=1001
- TZ=America/New_York
- LOG_LEVEL=debug
volumes:
- ./jellyseerr-config:/app/config
labels:
- "traefik.enable=true"
- "traefik.http.routers.jellyseerr.entrypoints=websecure"
- "traefik.http.routers.jellyseerr.rule=Host(`jellyseerr.meftimes.com`)"
- "traefik.http.services.jellyseerr.loadbalancer.server.port=5055"
network_mode: service:gluetun
depends_on:
gluetun:
condition: service_healthy
restart: unless-stopped
networks:
proxy:
external: true
# media
# ├── downloads
# │ ├── movies
# │ ├── music
# │ └── tv
# └── jellyfin
# ├── movies
# ├── music
# └── tv