feat(docker-stack): add media stack

This commit is contained in:
2025-08-31 19:23:14 +03:00
parent 871106077a
commit c4cdde7253
2 changed files with 176 additions and 0 deletions

View File

@@ -0,0 +1,146 @@
services:
# Torrent client
qbittorrent:
image: linuxserver/qbittorrent
restart: unless-stopped
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
- UMASK=002
- WEBUI_PORT=8114
volumes:
- ${MEDIA_PATH}:/media
- ${SERVICE_DATA_ROOT_PATH}/qbittorrent/config:/config
ports:
- 8114:8114
- 23312:23312
networks:
- traefik
- sonarr
- radarr
labels:
- "traefik.enable=true"
- "traefik.http.routers.qbittorrent-service.rule=Host(`${QBITTORRENT_SERVICE_DOMAIN}`) && PathPrefix(`/api/v2`)"
- "traefik.http.routers.qbittorrent-service.service=qbittorrent-service"
- "traefik.http.services.qbittorrent-service.loadbalancer.server.port=8114"
- "traefik.http.routers.qbittorrent-service.entrypoints=websecure"
- "traefik.http.routers.qbittorrent-service.tls.certresolver=myresolver"
- "traefik.http.middlewares.qbittorrent-service-auth.basicauth.users=${QBITTORRENT_BASIC_AUTH}"
- "traefik.http.routers.qbittorrent-service.middlewares=qbittorrent-service-auth@docker"
- "traefik.docker.network=traefik"
# Tracker indexer
prowlarr:
image: linuxserver/prowlarr:latest
restart: unless-stopped
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
volumes:
- ${SERVICE_DATA_ROOT_PATH}/prowlarr/config:/config
ports:
- 9696:9696
networks:
- sonarr
- radarr
# Series manager
sonarr:
image: linuxserver/sonarr:latest
restart: unless-stopped
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
- UMASK=002
volumes:
- ${SERVICE_DATA_ROOT_PATH}/sonarr/config:/config
- ${MEDIA_PATH}:/media
ports:
- 8989:8989
depends_on:
- sonarr-db
networks:
- traefik
- sonarr
labels:
- "traefik.enable=true"
- "traefik.http.routers.sonarr-service.rule=Host(`${SONARR_SERVICE_DOMAIN}`) && PathPrefix(`/api/v3`)"
- "traefik.http.routers.sonarr-service.entrypoints=websecure"
- "traefik.http.routers.sonarr-service.tls.certresolver=myresolver"
- "traefik.http.middlewares.sonarr-service-auth.basicauth.users=${SONARR_BASIC_AUTH}"
- "traefik.http.routers.sonarr-service.middlewares=sonarr-service-auth@docker"
- "traefik.docker.network=traefik"
sonarr-db:
image: postgres:14
restart: unless-stopped
user: ${PUID}:${PGID}
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
- UMASK=002
- POSTGRES_DB=${SONARR_DB_NAME}
- POSTGRES_USER=${SONARR_DB_USER}
- POSTGRES_PASSWORD=${SONARR_DB_PASSWORD}
volumes:
- ${SERVICE_DATA_ROOT_PATH}/sonarr/database:/var/lib/postgresql/data
networks:
- sonarr
# Movies manager
radarr:
image: linuxserver/radarr:latest
restart: unless-stopped
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
- UMASK=002
volumes:
- ${SERVICE_DATA_ROOT_PATH}/radarr/config:/config
- ${MEDIA_PATH}:/media
ports:
- 7878:7878
depends_on:
- radarr-db
networks:
- traefik
- radarr
labels:
- "traefik.enable=true"
- "traefik.http.routers.radarr-service.rule=Host(`${RADARR_SERVICE_DOMAIN}`) && PathPrefix(`/api/v3`)"
- "traefik.http.routers.radarr-service.entrypoints=websecure"
- "traefik.http.routers.radarr-service.tls.certresolver=myresolver"
- "traefik.http.middlewares.radarr-service-auth.basicauth.users=${RADARR_BASIC_AUTH}"
- "traefik.http.routers.radarr-service.middlewares=radarr-service-auth@docker"
- "traefik.docker.network=traefik"
radarr-db:
image: postgres:14
restart: unless-stopped
user: ${PUID}:${PGID}
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
- UMASK=002
- POSTGRES_DB=${RADARR_DB_NAME}
- POSTGRES_USER=${RADARR_DB_USER}
- POSTGRES_PASSWORD=${RADARR_DB_PASSWORD}
volumes:
- ${SERVICE_DATA_ROOT_PATH}/radarr/database:/var/lib/postgresql/data
networks:
- radarr
networks:
radarr:
name: radarr
sonarr:
name: sonarr
traefik:
name: traefik
external: true

View File

@@ -0,0 +1,30 @@
# Paths
MEDIA_PATH=
SERVICE_DATA_ROOT_PATH=
# User/Group IDs
PUID=1027
PGID=100
TZ=Europe/Kyiv
# Service Domains
QBITTORRENT_SERVICE_DOMAIN=
SONARR_SERVICE_DOMAIN=
SONARR_DOMAIN=
RADARR_SERVICE_DOMAIN=
# Database Configuration
# Sonarr Database
SONARR_DB_USER=sonarr
SONARR_DB_NAME=sonarr-main
SONARR_DB_PASSWORD=
# Radarr Database
RADARR_DB_USER=radarr
RADARR_DB_NAME=radarr-main
RADARR_DB_PASSWORD=
# Basic Auth for API access (format: user:hashedpassword)
QBITTORRENT_BASIC_AUTH=
SONARR_BASIC_AUTH=
RADARR_BASIC_AUTH=