Files
Homelab/compose/media-stack.yml

254 lines
6.2 KiB
YAML

# Media Stack - *arr services, Jellyfin, torrent client
services:
# ===== MEDIA MANAGEMENT =====
sonarr:
image: lscr.io/linuxserver/sonarr:latest
container_name: sonarr
profiles: ["media", "all"]
environment:
- TZ=${TZ}
- PUID=${PUID}
- PGID=${PGID}
volumes:
- ${DOCKER_CONFIG_ROOT}/Arrs/Sonarr/config:/config
- ${DATA_ROOT}:/data
- ${TORRENTS_PATH}:/downloads
ports:
- "8989:8989"
networks:
arr_network:
ipv4_address: 172.20.0.3
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8989/ping"]
interval: 30s
timeout: 10s
retries: 3
radarr:
image: lscr.io/linuxserver/radarr:latest
container_name: radarr
profiles: ["media", "all"]
environment:
- TZ=${TZ}
- PUID=${PUID}
- PGID=${PGID}
volumes:
- ${DOCKER_CONFIG_ROOT}/Arrs/Radarr/config:/config
- ${DATA_ROOT}:/data
- ${TORRENTS_PATH}:/downloads
ports:
- "7878:7878"
networks:
arr_network:
ipv4_address: 172.20.0.5
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:7878/ping"]
interval: 30s
timeout: 10s
retries: 3
lidarr:
image: lscr.io/linuxserver/lidarr:latest
container_name: lidarr
profiles: ["media", "all"]
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
volumes:
- ${DOCKER_CONFIG_ROOT}/Arrs/Lidarr/config:/config
- ${DATA_ROOT}:/data
- ${TORRENTS_PATH}:/downloads
ports:
- "8686:8686"
restart: unless-stopped
networks:
arr_network:
ipv4_address: 172.20.0.7
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8686/ping"]
interval: 30s
timeout: 10s
retries: 3
bazarr:
image: lscr.io/linuxserver/bazarr:latest
container_name: bazarr
profiles: ["media", "all"]
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
volumes:
- ${DOCKER_CONFIG_ROOT}/Arrs/Bazarr/config:/config
- ${DATA_ROOT}:/data
networks:
arr_network:
ipv4_address: 172.20.0.6
ports:
- "6767:6767"
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:6767/ping"]
interval: 30s
timeout: 10s
retries: 3
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
profiles: ["media", "all"]
environment:
- TZ=${TZ}
- PUID=${PUID}
- PGID=${PGID}
volumes:
- ${DOCKER_CONFIG_ROOT}/Arrs/Prowlarr/config:/config
ports:
- "9696:9696"
networks:
arr_network:
ipv4_address: 172.20.0.4
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9696/ping"]
interval: 30s
timeout: 10s
retries: 3
flaresolverr:
image: ghcr.io/flaresolverr/flaresolverr:latest
container_name: flaresolverr
profiles: ["media", "all"]
environment:
- TZ=${TZ}
ports:
- "8191:8191"
networks:
arr_network:
ipv4_address: 172.20.0.8
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8191/health"]
interval: 30s
timeout: 10s
retries: 3
# ===== MEDIA STREAMING =====
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
profiles: ["media", "all"]
ports:
- "8096:8096"
volumes:
- ${DOCKER_CONFIG_ROOT}/Arrs/Jellyfin/config:/config
- ${DOCKER_CONFIG_ROOT}/Arrs/Jellyfin/cache:/cache
- ${DATA_ROOT}:/data
- /dev/dri/renderD128:/dev/dri/renderD128
group_add:
- "104"
restart: unless-stopped
environment:
- TZ=${TZ}
- PUID=${PUID}
- PGID=${PGID}
- JELLYFIN_PublishedServerUrl=${JELLYFIN_URL}
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8096/health"]
interval: 30s
timeout: 10s
retries: 3
jellyseerr:
image: fallenbagel/jellyseerr:latest
container_name: jellyseerr
profiles: ["media", "all"]
environment:
- LOG_LEVEL=info
- TZ=${TZ}
volumes:
- ${DOCKER_CONFIG_ROOT}/Arrs/Jellyseerr/config:/app/config
- ${TORRENTS_PATH}:/downloads
ports:
- "5055:5055"
networks:
arr_network:
ipv4_address: 172.20.0.14
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:5055/api/v1/status"]
interval: 30s
timeout: 10s
retries: 3
# ===== DOWNLOAD CLIENT =====
qbittorrent:
container_name: qbittorrent
image: lscr.io/linuxserver/qbittorrent:latest
profiles: ["media", "all"]
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
- WEBUI_PORT=8080
ports:
- "7070:8080"
- "56881:6881"
- "56881:6881/udp"
volumes:
- ./qBittorrent/config:/config
- ${TORRENTS_PATH}:/downloads
networks:
arr_network:
ipv4_address: 172.20.0.2
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080"]
interval: 30s
timeout: 10s
retries: 3
# ===== MUSIC SCROBBLING =====
multi-scrobbler:
image: foxxmd/multi-scrobbler:latest
container_name: multi-scrobbler
profiles: ["media", "all"]
environment:
- TZ=${TZ}
- PUID=${PUID}
- PGID=${PGID}
- BASE_URL=${SCROBBLE_URL}
- SPOTIFY_CLIENT_ID=${SPOTIFY_CLIENT_ID}
- SPOTIFY_CLIENT_SECRET=${SPOTIFY_CLIENT_SECRET}
- SPOTIFY_REDIRECT_URI=${SPOTIFY_REDIRECT_URI}
- MALOJA_URL=${MALOJA_URL}
- MALOJA_API_KEY=${MALOJA_API_KEY}
volumes:
- "./scrobble/config:/config"
ports:
- "9078:9078"
restart: unless-stopped
depends_on:
- maloja
maloja:
image: krateng/maloja:latest
container_name: maloja
profiles: ["media", "all"]
ports:
- "42010:42010"
volumes:
- "./maloja/config:/etc/maloja"
- "./maloja/data:/var/lib/maloja"
- "./maloja/logs:/var/log/maloja"
environment:
- MALOJA_FORCE_PASSWORD=${MALOJA_FORCE_PASSWORD}
restart: unless-stopped
networks:
arr_network:
external: true