- collect-compose.yml: Fetches all compose files from docker_hosts - collect-env-templates.yml: Creates .env.example with secrets redacted - deploy-compose.yml: Pushes compose files to hosts (with optional restart) - diff-compose.yml: Shows differences before deploying Collected 23 compose files from 7 hosts: - replicant: 12 stacks (arr-stack, mealie, portainer, etc) - docker666: 4 stacks (unifi, gluetun, uptime, utils) - databases: 3 stacks (postgres, forgejo, utils) - download-stack: 2 stacks (download-stack, utils) - media-transcode: 1 stack (utils) - network-services: 1 stack (utils) - immich: 1 stack (utils)
294 lines
7.3 KiB
YAML
294 lines
7.3 KiB
YAML
# ~/docker/appdata/arr-stack/docker-compose.yml
|
|
# Unified *arr stack for replicant
|
|
# Migrated from alien (192.168.1.252)
|
|
|
|
services:
|
|
# ============================================
|
|
# INDEXER MANAGEMENT
|
|
# ============================================
|
|
prowlarr:
|
|
image: lscr.io/linuxserver/prowlarr:latest
|
|
container_name: prowlarr
|
|
restart: unless-stopped
|
|
environment:
|
|
- PUID=${PUID}
|
|
- PGID=${PGID}
|
|
- TZ=${TZ}
|
|
volumes:
|
|
- ./prowlarr:/config
|
|
ports:
|
|
- "9696:9696"
|
|
networks:
|
|
- proxy
|
|
- media
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: '1'
|
|
memory: 512M
|
|
reservations:
|
|
memory: 128M
|
|
labels:
|
|
- "homepage.group=Media"
|
|
- "homepage.name=Prowlarr"
|
|
- "homepage.icon=prowlarr.png"
|
|
- "homepage.href=http://${HOST_IP}:9696"
|
|
- "homepage.description=Indexer manager"
|
|
|
|
# ============================================
|
|
# TV / MOVIES / MUSIC / BOOKS
|
|
# ============================================
|
|
sonarr:
|
|
image: ghcr.io/linuxserver/sonarr:latest
|
|
container_name: sonarr
|
|
restart: unless-stopped
|
|
environment:
|
|
- PUID=${PUID}
|
|
- PGID=${PGID}
|
|
- TZ=${TZ}
|
|
volumes:
|
|
- ./sonarr:/config
|
|
- /volume1/Media:/media
|
|
- /volume1/archive:/archive
|
|
- /volume1/Downloads/nzbget:/downloads
|
|
- /volume1/Downloads/rutorrent/incoming:/incoming
|
|
ports:
|
|
- "8989:8989"
|
|
networks:
|
|
- proxy
|
|
- media
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: '2'
|
|
memory: 1G
|
|
reservations:
|
|
memory: 256M
|
|
labels:
|
|
- "homepage.group=Media"
|
|
- "homepage.name=Sonarr"
|
|
- "homepage.icon=sonarr.png"
|
|
- "homepage.href=https://sonarr.3ddbrewery.com"
|
|
- "homepage.description=TV Shows"
|
|
- "homepage.widget.type=sonarr"
|
|
- "homepage.widget.url=http://${HOST_IP}:8989"
|
|
- "homepage.widget.key=9d182041bb1245c782b14356e42d3219"
|
|
- "homepage.widget.enableQueue=true"
|
|
|
|
radarr:
|
|
image: ghcr.io/linuxserver/radarr:latest
|
|
container_name: radarr
|
|
restart: unless-stopped
|
|
environment:
|
|
- PUID=${PUID}
|
|
- PGID=${PGID}
|
|
- TZ=${TZ}
|
|
volumes:
|
|
- ./radarr:/config
|
|
- /volume1/Media:/media
|
|
- /volume1/archive:/archive
|
|
- /volume1/Downloads/nzbget:/downloads
|
|
- /volume1/Downloads/rutorrent/incoming:/incoming
|
|
ports:
|
|
- "7878:7878"
|
|
networks:
|
|
- proxy
|
|
- media
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: '2'
|
|
memory: 1G
|
|
reservations:
|
|
memory: 256M
|
|
labels:
|
|
- "homepage.group=Media"
|
|
- "homepage.name=Radarr"
|
|
- "homepage.icon=radarr.png"
|
|
- "homepage.href=https://radarr.3ddbrewery.com"
|
|
- "homepage.description=Movies"
|
|
- "homepage.widget.type=radarr"
|
|
- "homepage.widget.url=http://${HOST_IP}:7878"
|
|
- "homepage.widget.key=9fd393a7b39b44b4b60eece5317f9d5b"
|
|
- "homepage.widget.enableQueue=true"
|
|
|
|
lidarr:
|
|
image: lscr.io/linuxserver/lidarr:latest
|
|
container_name: lidarr
|
|
restart: unless-stopped
|
|
environment:
|
|
- PUID=${PUID}
|
|
- PGID=${PGID}
|
|
- TZ=${TZ}
|
|
volumes:
|
|
- ./lidarr:/config
|
|
- /volume1/Media:/media
|
|
- /volume1/archive:/archive
|
|
- /volume1/Downloads/nzbget:/downloads
|
|
- /volume1/Downloads/rutorrent:/torrent
|
|
- /volume1/Downloads/slskd:/slskd_downloads
|
|
ports:
|
|
- "8686:8686"
|
|
networks:
|
|
- proxy
|
|
- media
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: '2'
|
|
memory: 1G
|
|
reservations:
|
|
memory: 256M
|
|
labels:
|
|
- "homepage.group=Media"
|
|
- "homepage.name=Lidarr"
|
|
- "homepage.icon=lidarr.png"
|
|
- "homepage.href=http://${HOST_IP}:8686"
|
|
- "homepage.description=Music"
|
|
|
|
# readarr:
|
|
# image: lscr.io/linuxserver/readarr:latest
|
|
# container_name: readarr
|
|
# restart: unless-stopped
|
|
# environment:
|
|
# - PUID=${PUID}
|
|
# - PGID=${PGID}
|
|
# - TZ=${TZ}
|
|
# volumes:
|
|
# - ./readarr:/config
|
|
# - /volume1/Media:/media
|
|
# - /volume1/archive:/archive
|
|
# - /volume1/Downloads/nzbget:/downloads
|
|
# ports:
|
|
# - "8787:8787"
|
|
# networks:
|
|
# - proxy
|
|
# - media
|
|
# deploy:
|
|
# resources:
|
|
# limits:
|
|
# cpus: '1'
|
|
# memory: 1G
|
|
# reservations:
|
|
# memory: 256M
|
|
# labels:
|
|
# - "homepage.group=Media"
|
|
# - "homepage.name=Readarr"
|
|
# - "homepage.icon=readarr.png"
|
|
# - "homepage.href=https://readarr.3ddbrewery.com"
|
|
# - "homepage.description=Books"
|
|
# - "homepage.widget.type=readarr"
|
|
# - "homepage.widget.url=http://${HOST_IP}:8787"
|
|
# - "homepage.widget.key=76a1180d9a6940b58922efb32dc6dc6d"
|
|
# - "homepage.widget.enableQueue=true"
|
|
|
|
# ============================================
|
|
# SUBTITLES
|
|
# ============================================
|
|
bazarr:
|
|
image: lscr.io/linuxserver/bazarr:latest
|
|
container_name: bazarr
|
|
restart: unless-stopped
|
|
environment:
|
|
- PUID=${PUID}
|
|
- PGID=${PGID}
|
|
- TZ=${TZ}
|
|
volumes:
|
|
- ./bazarr:/config
|
|
- /volume1/Media:/media
|
|
- /volume1/archive:/archive
|
|
ports:
|
|
- "6767:6767"
|
|
networks:
|
|
- proxy
|
|
- media
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: '1'
|
|
memory: 512M
|
|
reservations:
|
|
memory: 128M
|
|
labels:
|
|
- "homepage.group=Media"
|
|
- "homepage.name=Bazarr"
|
|
- "homepage.icon=bazarr.png"
|
|
- "homepage.href=http://${HOST_IP}:6767"
|
|
- "homepage.description=Subtitles"
|
|
|
|
# ============================================
|
|
# PROFILE SYNC
|
|
# ============================================
|
|
profilarr:
|
|
image: santiagosayshey/profilarr:latest
|
|
container_name: profilarr
|
|
restart: unless-stopped
|
|
environment:
|
|
- TZ=${TZ}
|
|
volumes:
|
|
- ./profilarr:/config
|
|
ports:
|
|
- "6868:6868"
|
|
networks:
|
|
- proxy
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: '0.5'
|
|
memory: 256M
|
|
reservations:
|
|
memory: 64M
|
|
labels:
|
|
- "homepage.group=Media"
|
|
- "homepage.name=Profilarr"
|
|
- "homepage.icon=profilarr.png"
|
|
- "homepage.href=http://${HOST_IP}:6868"
|
|
- "homepage.description=Profile sync"
|
|
|
|
# ============================================
|
|
# SOULSEEK CLIENT (for Lidarr)
|
|
# ============================================
|
|
slskd:
|
|
image: slskd/slskd:latest
|
|
container_name: slskd
|
|
restart: unless-stopped
|
|
environment:
|
|
- PUID=${PUID}
|
|
- PGID=${PGID}
|
|
- TZ=${TZ}
|
|
- SLSKD_REMOTE_CONFIGURATION=true
|
|
volumes:
|
|
- ./slskd:/app
|
|
- /volume1/Media:/media
|
|
- /volume1/archive:/archive
|
|
- /volume1/Downloads/nzbget:/nzb-downloads
|
|
- /volume1/Downloads/rutorrent:/torrent
|
|
- /volume1/Downloads/slskd:/downloads
|
|
ports:
|
|
- "5030:5030"
|
|
- "5031:5031"
|
|
- "50300:50300"
|
|
networks:
|
|
- proxy
|
|
- download
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: '1'
|
|
memory: 512M
|
|
reservations:
|
|
memory: 128M
|
|
labels:
|
|
- "homepage.group=Downloads"
|
|
- "homepage.name=slskd"
|
|
- "homepage.icon=slskd.png"
|
|
- "homepage.href=http://${HOST_IP}:5030"
|
|
- "homepage.description=Soulseek"
|
|
|
|
networks:
|
|
proxy:
|
|
external: true
|
|
media:
|
|
external: true
|
|
download:
|
|
external: true
|