Refactor docker-compose configurations and add new services

- Reorganize Authelia configuration files
- Add new dynamic routing files for Traefik
- Update various service docker-compose files
- Remove outdated templates and scripts
This commit is contained in:
Kelin
2026-02-03 22:20:09 -05:00
parent ed17bf295a
commit e2a654b3f4
62 changed files with 1871 additions and 12061 deletions

View File

@@ -14,7 +14,7 @@ services:
- homelab-network
- traefik-network
ports:
- "8989:8989"
- '8989:8989'
volumes:
- ./sonarr/config:/config
- /mnt/media:/media
@@ -24,7 +24,7 @@ services:
- PGID=1000
- TZ=America/New_York
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8989/"]
test: ['CMD', 'curl', '-f', 'http://localhost:8989/']
interval: 30s
timeout: 10s
retries: 3
@@ -33,22 +33,22 @@ services:
# TRAEFIK CONFIGURATION
# ==========================================
# Service metadata
- 'homelab.category=media"
- 'homelab.description=TV show management and automation"
- "com.centurylinklabs.watchtower.enable=true"
- 'homelab.category=media'
- 'homelab.description=TV show management and automation'
- 'com.centurylinklabs.watchtower.enable=true'
# Traefik reverse proxy (comment/uncomment to disable/enable)
# If Traefik is on a remote server: these labels are NOT USED;
# configure external yml files in /traefik/dynamic folder instead.
- 'traefik.enable=true"
- 'traefik.docker.network=traefik-network"
- 'traefik.http.routers.sonarr.rule=Host(`sonarr.${DOMAIN}`)"
- 'traefik.http.routers.sonarr.entrypoints=websecure"
- 'traefik.http.routers.sonarr.tls.certresolver=letsencrypt"
- 'traefik.http.routers.sonarr.middlewares=authelia@docker"
- 'traefik.http.services.sonarr.loadbalancer.server.port=8989"
- "sablier.enable=true"
- "sablier.group=jasper-arr"
- "sablier.start-on-demand=true"
- 'traefik.enable=true'
- 'traefik.docker.network=traefik-network'
- 'traefik.http.routers.sonarr.rule=Host(`sonarr.${DOMAIN}`)'
- 'traefik.http.routers.sonarr.entrypoints=websecure'
- 'traefik.http.routers.sonarr.tls.certresolver=letsencrypt'
- 'traefik.http.routers.sonarr.middlewares=authelia@docker'
- 'traefik.http.services.sonarr.loadbalancer.server.port=8989'
- 'sablier.enable=true'
- 'sablier.group=jasper-arr'
- 'sablier.start-on-demand=true'
# Radarr - Movie automation
radarr:
@@ -59,7 +59,7 @@ services:
- homelab-network
- traefik-network
ports:
- "7878:7878"
- '7878:7878'
volumes:
- ./radarr/config:/config
- /mnt/media:/media
@@ -69,7 +69,7 @@ services:
- PGID=1000
- TZ=America/New_York
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:7878/"]
test: ['CMD', 'curl', '-f', 'http://localhost:7878/']
interval: 30s
timeout: 10s
retries: 3
@@ -78,22 +78,22 @@ services:
# TRAEFIK CONFIGURATION
# ==========================================
# Service metadata
- 'homelab.category=media"
- 'homelab.description=Movie management and automation"
- "com.centurylinklabs.watchtower.enable=true"
- 'homelab.category=media'
- 'homelab.description=Movie management and automation'
- 'com.centurylinklabs.watchtower.enable=true'
# Traefik reverse proxy (comment/uncomment to disable/enable)
# If Traefik is on a remote server: these labels are NOT USED;
# configure external yml files in /traefik/dynamic folder instead.
- 'traefik.enable=true"
- 'traefik.docker.network=traefik-network"
- 'traefik.http.routers.radarr.rule=Host(`radarr.${DOMAIN}`)"
- 'traefik.http.routers.radarr.entrypoints=websecure"
- 'traefik.http.routers.radarr.tls.certresolver=letsencrypt"
- 'traefik.http.routers.radarr.middlewares=authelia@docker"
- 'traefik.http.services.radarr.loadbalancer.server.port=7878"
- "sablier.enable=true"
- "sablier.group=jasper-arr"
- "sablier.start-on-demand=true"
- 'traefik.enable=true'
- 'traefik.docker.network=traefik-network'
- 'traefik.http.routers.radarr.rule=Host(`radarr.${DOMAIN}`)'
- 'traefik.http.routers.radarr.entrypoints=websecure'
- 'traefik.http.routers.radarr.tls.certresolver=letsencrypt'
- 'traefik.http.routers.radarr.middlewares=authelia@docker'
- 'traefik.http.services.radarr.loadbalancer.server.port=7878'
- 'sablier.enable=true'
- 'sablier.group=jasper-arr'
- 'sablier.start-on-demand=true'
# Prowlarr - Indexer manager
# Access at: https://prowlarr.yourdomain.duckdns.org
@@ -105,7 +105,7 @@ services:
- homelab-network
- traefik-network
ports:
- "9696:9696"
- '9696:9696'
volumes:
- ./prowlarr/config:/config
environment:
@@ -113,7 +113,7 @@ services:
- PGID=1000
- TZ=America/New_York
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9696/"]
test: ['CMD', 'curl', '-f', 'http://localhost:9696/']
interval: 30s
timeout: 10s
retries: 3
@@ -122,22 +122,22 @@ services:
# TRAEFIK CONFIGURATION
# ==========================================
# Service metadata
- 'homelab.category=media"
- 'homelab.description=Indexer manager for Sonarr/Radarr"
- "com.centurylinklabs.watchtower.enable=true"
- 'homelab.category=media'
- 'homelab.description=Indexer manager for Sonarr/Radarr'
- 'com.centurylinklabs.watchtower.enable=true'
# Traefik reverse proxy (comment/uncomment to disable/enable)
# If Traefik is on a remote server: these labels are NOT USED;
# configure external yml files in /traefik/dynamic folder instead.
- 'traefik.enable=true"
- 'traefik.docker.network=traefik-network"
- 'traefik.http.routers.prowlarr.rule=Host(`prowlarr.${DOMAIN}`)"
- 'traefik.http.routers.prowlarr.entrypoints=websecure"
- 'traefik.http.routers.prowlarr.tls.certresolver=letsencrypt"
- 'traefik.http.routers.prowlarr.middlewares=authelia@docker"
- 'traefik.http.services.prowlarr.loadbalancer.server.port=9696"
- "sablier.enable=true"
- "sablier.group=jasper-arr"
- "sablier.start-on-demand=true"
- 'traefik.enable=true'
- 'traefik.docker.network=traefik-network'
- 'traefik.http.routers.prowlarr.rule=Host(`prowlarr.${DOMAIN}`)'
- 'traefik.http.routers.prowlarr.entrypoints=websecure'
- 'traefik.http.routers.prowlarr.tls.certresolver=letsencrypt'
- 'traefik.http.routers.prowlarr.middlewares=authelia@docker'
- 'traefik.http.services.prowlarr.loadbalancer.server.port=9696'
- 'sablier.enable=true'
- 'sablier.group=jasper-arr'
- 'sablier.start-on-demand=true'
# Readarr - Ebook and audiobook management
readarr:
@@ -148,7 +148,7 @@ services:
- homelab-network
- traefik-network
ports:
- "8787:8787"
- '8787:8787'
volumes:
- ./readarr/config:/config
- /mnt/media/books:/books
@@ -161,22 +161,22 @@ services:
# TRAEFIK CONFIGURATION
# ==========================================
# Service metadata
- 'homelab.category=media"
- 'homelab.description=Ebook and audiobook management"
- "com.centurylinklabs.watchtower.enable=true"
- 'homelab.category=media'
- 'homelab.description=Ebook and audiobook management'
- 'com.centurylinklabs.watchtower.enable=true'
# Traefik reverse proxy (comment/uncomment to disable/enable)
# If Traefik is on a remote server: these labels are NOT USED;
# configure external yml files in /traefik/dynamic folder instead.
- 'traefik.enable=true"
- 'traefik.docker.network=traefik-network"
- 'traefik.http.routers.readarr.rule=Host(`readarr.${DOMAIN}`)"
- 'traefik.http.routers.readarr.entrypoints=websecure"
- 'traefik.http.routers.readarr.tls.certresolver=letsencrypt"
- 'traefik.http.routers.readarr.middlewares=authelia@docker"
- 'traefik.http.services.readarr.loadbalancer.server.port=8787"
- "sablier.enable=true"
- "sablier.group=jasper-arr"
- "sablier.start-on-demand=true"
- 'traefik.enable=true'
- 'traefik.docker.network=traefik-network'
- 'traefik.http.routers.readarr.rule=Host(`readarr.${DOMAIN}`)'
- 'traefik.http.routers.readarr.entrypoints=websecure'
- 'traefik.http.routers.readarr.tls.certresolver=letsencrypt'
- 'traefik.http.routers.readarr.middlewares=authelia@docker'
- 'traefik.http.services.readarr.loadbalancer.server.port=8787'
- 'sablier.enable=true'
- 'sablier.group=jasper-arr'
- 'sablier.start-on-demand=true'
# Lidarr - Music collection manager
lidarr:
@@ -187,7 +187,7 @@ services:
- homelab-network
- traefik-network
ports:
- "8686:8686"
- '8686:8686'
volumes:
- ./lidarr/config:/config
- /mnt/media/music:/music
@@ -200,22 +200,22 @@ services:
# TRAEFIK CONFIGURATION
# ==========================================
# Service metadata
- 'homelab.category=media"
- 'homelab.description=Music collection manager"
- "com.centurylinklabs.watchtower.enable=true"
- 'homelab.category=media'
- 'homelab.description=Music collection manager'
- 'com.centurylinklabs.watchtower.enable=true'
# Traefik reverse proxy (comment/uncomment to disable/enable)
# If Traefik is on a remote server: these labels are NOT USED;
# configure external yml files in /traefik/dynamic folder instead.
- 'traefik.enable=true"
- 'traefik.docker.network=traefik-network"
- 'traefik.http.routers.lidarr.rule=Host(`lidarr.${DOMAIN}`)"
- 'traefik.http.routers.lidarr.entrypoints=websecure"
- 'traefik.http.routers.lidarr.tls.certresolver=letsencrypt"
- 'traefik.http.routers.lidarr.middlewares=authelia@docker"
- 'traefik.http.services.lidarr.loadbalancer.server.port=8686"
- "sablier.enable=true"
- "sablier.group=jasper-arr"
- "sablier.start-on-demand=true"
- 'traefik.enable=true'
- 'traefik.docker.network=traefik-network'
- 'traefik.http.routers.lidarr.rule=Host(`lidarr.${DOMAIN}`)'
- 'traefik.http.routers.lidarr.entrypoints=websecure'
- 'traefik.http.routers.lidarr.tls.certresolver=letsencrypt'
- 'traefik.http.routers.lidarr.middlewares=authelia@docker'
- 'traefik.http.services.lidarr.loadbalancer.server.port=8686'
- 'sablier.enable=true'
- 'sablier.group=jasper-arr'
- 'sablier.start-on-demand=true'
# Lazy Librarian - Book manager
lazylibrarian:
@@ -226,7 +226,7 @@ services:
- homelab-network
- traefik-network
ports:
- "5299:5299"
- '5299:5299'
volumes:
- ./lazylibrarian/config:/config
- /mnt/media/books:/books
@@ -240,22 +240,22 @@ services:
# TRAEFIK CONFIGURATION
# ==========================================
# Service metadata
- 'homelab.category=media"
- 'homelab.description=Book download automation"
- "com.centurylinklabs.watchtower.enable=true"
- 'homelab.category=media'
- 'homelab.description=Book download automation'
- 'com.centurylinklabs.watchtower.enable=true'
# Traefik reverse proxy (comment/uncomment to disable/enable)
# If Traefik is on a remote server: these labels are NOT USED;
# configure external yml files in /traefik/dynamic folder instead.
- 'traefik.enable=true"
- 'traefik.docker.network=traefik-network"
- 'traefik.http.routers.lazylibrarian.rule=Host(`lazylibrarian.${DOMAIN}`)"
- 'traefik.http.routers.lazylibrarian.entrypoints=websecure"
- 'traefik.http.routers.lazylibrarian.tls.certresolver=letsencrypt"
- 'traefik.http.routers.lazylibrarian.middlewares=authelia@docker"
- 'traefik.http.services.lazylibrarian.loadbalancer.server.port=5299"
- "sablier.enable=true"
- "sablier.group=jasper-arr"
- "sablier.start-on-demand=true"
- 'traefik.enable=true'
- 'traefik.docker.network=traefik-network'
- 'traefik.http.routers.lazylibrarian.rule=Host(`lazylibrarian.${DOMAIN}`)'
- 'traefik.http.routers.lazylibrarian.entrypoints=websecure'
- 'traefik.http.routers.lazylibrarian.tls.certresolver=letsencrypt'
- 'traefik.http.routers.lazylibrarian.middlewares=authelia@docker'
- 'traefik.http.services.lazylibrarian.loadbalancer.server.port=5299'
- 'sablier.enable=true'
- 'sablier.group=jasper-arr'
- 'sablier.start-on-demand=true'
# Mylar3 - Comic book manager
mylar3:
@@ -266,7 +266,7 @@ services:
- homelab-network
- traefik-network
ports:
- "8090:8090"
- '8090:8090'
volumes:
- ./mylar3/config:/config
- /mnt/media/comics:/comics
@@ -279,22 +279,22 @@ services:
# TRAEFIK CONFIGURATION
# ==========================================
# Service metadata
- 'homelab.category=media"
- 'homelab.description=Comic book collection manager"
- "com.centurylinklabs.watchtower.enable=true"
- 'homelab.category=media'
- 'homelab.description=Comic book collection manager'
- 'com.centurylinklabs.watchtower.enable=true'
# Traefik reverse proxy (comment/uncomment to disable/enable)
# If Traefik is on a remote server: these labels are NOT USED;
# configure external yml files in /traefik/dynamic folder instead.
- 'traefik.enable=true"
- 'traefik.docker.network=traefik-network"
- 'traefik.http.routers.mylar.rule=Host(`mylar.${DOMAIN}`)"
- 'traefik.http.routers.mylar.entrypoints=websecure"
- 'traefik.http.routers.mylar.tls.certresolver=letsencrypt"
- 'traefik.http.routers.mylar.middlewares=authelia@docker"
- 'traefik.http.services.mylar.loadbalancer.server.port=8090"
- "sablier.enable=true"
- "sablier.group=jasper-arr"
- "sablier.start-on-demand=true"
- 'traefik.enable=true'
- 'traefik.docker.network=traefik-network'
- 'traefik.http.routers.mylar.rule=Host(`mylar.${DOMAIN}`)'
- 'traefik.http.routers.mylar.entrypoints=websecure'
- 'traefik.http.routers.mylar.tls.certresolver=letsencrypt'
- 'traefik.http.routers.mylar.middlewares=authelia@docker'
- 'traefik.http.services.mylar.loadbalancer.server.port=8090'
- 'sablier.enable=true'
- 'sablier.group=jasper-arr'
- 'sablier.start-on-demand=true'
# Jellyseerr - Request management for Jellyfin/Plex
jellyseerr:
@@ -305,14 +305,14 @@ services:
- homelab-network
- traefik-network
ports:
- "5055:5055"
- '5055:5055'
volumes:
- ./jellyseerr/config:/app/config
environment:
- LOG_LEVEL=info
- TZ=America/New_York
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:5055/"]
test: ['CMD', 'wget', '--quiet', '--tries=1', '--spider', 'http://localhost:5055/']
interval: 30s
timeout: 10s
retries: 3
@@ -321,22 +321,22 @@ services:
# TRAEFIK CONFIGURATION
# ==========================================
# Service metadata
- 'homelab.category=media"
- 'homelab.description=Media request management"
- "com.centurylinklabs.watchtower.enable=true"
- 'homelab.category=media'
- 'homelab.description=Media request management'
- 'com.centurylinklabs.watchtower.enable=true'
# Traefik reverse proxy (comment/uncomment to disable/enable)
# If Traefik is on a remote server: these labels are NOT USED;
# configure external yml files in /traefik/dynamic folder instead.
- 'traefik.enable=true"
- 'traefik.docker.network=traefik-network"
- 'traefik.http.routers.jellyseerr.rule=Host(`jellyseerr.${DOMAIN}`)"
- 'traefik.http.routers.jellyseerr.entrypoints=websecure"
- 'traefik.http.routers.jellyseerr.tls.certresolver=letsencrypt"
- 'traefik.http.routers.jellyseerr.middlewares=authelia@docker"
- 'traefik.http.services.jellyseerr.loadbalancer.server.port=5055"
- "sablier.enable=true"
- "sablier.group=jasper-arr"
- "sablier.start-on-demand=true"
- 'traefik.enable=true'
- 'traefik.docker.network=traefik-network'
- 'traefik.http.routers.jellyseerr.rule=Host(`jellyseerr.${DOMAIN}`)'
- 'traefik.http.routers.jellyseerr.entrypoints=websecure'
- 'traefik.http.routers.jellyseerr.tls.certresolver=letsencrypt'
- 'traefik.http.routers.jellyseerr.middlewares=authelia@docker'
- 'traefik.http.services.jellyseerr.loadbalancer.server.port=5055'
- 'sablier.enable=true'
- 'sablier.group=jasper-arr'
- 'sablier.start-on-demand=true'
# FlareSolverr - Cloudflare bypass for Prowlarr
# No web UI - used by Prowlarr
@@ -352,9 +352,9 @@ services:
labels:
- homelab.category=media
- homelab.description=Cloudflare bypass for indexers
- "sablier.enable=true"
- "sablier.group=jasper-arr"
- "sablier.start-on-demand=true"
- 'sablier.enable=true'
- 'sablier.group=jasper-arr'
- 'sablier.start-on-demand=true'
x-dockge:
urls: