clustered-fucks/compose-files/replicant/arr-stack/docker-compose.yml
Maddox ecac3c8949 Add compose file management infrastructure
- 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)
2026-01-23 19:11:23 +00:00

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