refactor: Refine compose files with improved Traefik/Sablier labels

- Enable Sablier by default for services with middleware definitions
- Update label comments to indicate 'enabled by default - comment out to disable'
- Ensure x-dockge sections have proxied URLs first, then direct IP:port
- Remove any x-dockge labels from service configurations
- Maintain well-documented, concise label sections for easy enable/disable
This commit is contained in:
EZ-Homelab
2026-01-23 15:53:22 -05:00
parent 3701b11a73
commit a8835801a7
4 changed files with 177 additions and 37 deletions

View File

@@ -45,8 +45,15 @@ services:
- TZ=${TZ}
- HOMEPAGE_ALLOWED_HOSTS=home.${DOMAIN}
labels:
# ==========================================
# TRAEFIK CONFIGURATION
# ==========================================
# Service metadata
- "homelab.category=dashboard"
- "homelab.description=Application dashboard (AI-configurable)"
# Traefik reverse proxy (uncomment to enable)
- "traefik.enable=true"
- "traefik.http.routers.homepage.rule=Host(`home.${DOMAIN}`)"
- "traefik.http.routers.homepage.entrypoints=websecure"
@@ -83,18 +90,35 @@ services:
environment:
- TZ=${TZ}
labels:
# ==========================================
# TRAEFIK & SABLIER CONFIGURATION
# ==========================================
# Service metadata
- "homelab.category=dashboard"
- "homelab.description=Modern homelab dashboard"
- "sablier.enable=true"
- "sablier.group=${SERVER_HOSTNAME:-debian}-homarr"
- "sablier.start-on-demand=true"
# Traefik reverse proxy (uncomment to enable)
- "traefik.enable=true"
- "traefik.http.routers.homarr.rule=Host(`homarr.${DOMAIN}`)"
- "traefik.http.routers.homarr.entrypoints=websecure"
- "traefik.http.routers.homarr.tls=true"
- "traefik.http.routers.homarr.middlewares=authelia@docker"
- "traefik.http.services.homarr.loadbalancer.server.port=7575"
- "x-dockge.url=https://homarr.${DOMAIN}"
# Sablier lazy loading (enabled by default - comment out to disable)
- "sablier.enable=true"
- "sablier.group=${SERVER_HOSTNAME:-debian}-homarr"
- "sablier.start-on-demand=true"
# ==========================================
# DOCKGE URL CONFIGURATION
# ==========================================
x-dockge:
urls:
# Proxied URLs (through Traefik)
- https://home.${DOMAIN}
- https://homarr.${DOMAIN}
networks:
homelab-network:

View File

@@ -139,17 +139,26 @@ services:
- DOZZLE_TAILSIZE=300
- DOZZLE_FILTER=status=running
labels:
# ==========================================
# TRAEFIK & SABLIER CONFIGURATION
# ==========================================
# Service metadata
- "homelab.category=infrastructure"
- "homelab.description=Real-time Docker log viewer"
- "sablier.enable=true"
- "sablier.group=${SERVER_HOSTNAME:-debian}-dozzle"
- "sablier.start-on-demand=true"
# Traefik reverse proxy (uncomment to enable)
- "traefik.enable=true"
- "traefik.http.routers.dozzle.rule=Host(`dozzle.${DOMAIN}`)"
- "traefik.http.routers.dozzle.entrypoints=websecure"
- "traefik.http.routers.dozzle.tls=true"
- "traefik.http.routers.dozzle.middlewares=authelia@docker"
- "traefik.http.services.dozzle.loadbalancer.server.port=8080"
# Sablier lazy loading (enabled by default - comment out to disable)
- "sablier.enable=true"
- "sablier.group=${SERVER_HOSTNAME:-debian}-dozzle"
- "sablier.start-on-demand=true"
# Glances - System monitoring
# Access at: https://glances.${DOMAIN}
@@ -179,17 +188,26 @@ services:
environment:
- GLANCES_OPT=-w
labels:
# ==========================================
# TRAEFIK & SABLIER CONFIGURATION
# ==========================================
# Service metadata
- "homelab.category=infrastructure"
- "homelab.description=System and Docker monitoring"
- "sablier.enable=true"
- "sablier.group=${SERVER_HOSTNAME:-debian}-glances"
- "sablier.start-on-demand=true"
# Traefik reverse proxy (uncomment to enable)
- "traefik.enable=true"
- "traefik.http.routers.glances.rule=Host(`glances.${DOMAIN}`)"
- "traefik.http.routers.glances.entrypoints=websecure"
- "traefik.http.routers.glances.tls=true"
- "traefik.http.routers.glances.middlewares=authelia@docker"
- "traefik.http.services.glances.loadbalancer.server.port=61208"
# Sablier lazy loading (enabled by default - comment out to disable)
- "sablier.enable=true"
- "sablier.group=${SERVER_HOSTNAME:-debian}-glances"
- "sablier.start-on-demand=true"
# Code Server - VS Code in browser
# Access at: https://code.${DOMAIN}
@@ -223,17 +241,41 @@ services:
- PASSWORD=${CODE_SERVER_PASSWORD}
- SUDO_PASSWORD=${CODE_SERVER_SUDO_PASSWORD}
labels:
# ==========================================
# TRAEFIK & SABLIER CONFIGURATION
# ==========================================
# Service metadata
- "homelab.category=infrastructure"
- "homelab.description=VS Code in browser"
- "sablier.enable=true"
- "sablier.group=${SERVER_HOSTNAME:-debian}-code-server"
- "sablier.start-on-demand=true"
# Traefik reverse proxy (uncomment to enable)
- "traefik.enable=true"
- "traefik.http.routers.code-server.rule=Host(`code.${DOMAIN}`)"
- "traefik.http.routers.code-server.entrypoints=websecure"
- "traefik.http.routers.code-server.tls.certresolver=letsencrypt"
- "traefik.http.routers.code-server.middlewares=authelia@docker"
- "traefik.http.services.code-server.loadbalancer.server.port=8443"
# Sablier lazy loading (enabled by default - comment out to disable)
- "sablier.enable=true"
- "sablier.group=${SERVER_HOSTNAME:-debian}-code-server"
- "sablier.start-on-demand=true"
# ==========================================
# DOCKGE URL CONFIGURATION
# ==========================================
x-dockge:
urls:
# Proxied URLs (through Traefik)
- https://pihole.${DOMAIN}
- https://dozzle.${DOMAIN}
- https://glances.${DOMAIN}
- https://code.${DOMAIN}
# Direct IP:Port URLs
- http://${SERVER_IP}:2375 # Docker Proxy
- http://${SERVER_IP}:19999 # Netdata
networks:
homelab-network:

View File

@@ -56,20 +56,27 @@ services:
# devices:
# - /dev/dri:/dev/dri
labels:
# ==========================================
# TRAEFIK & SABLIER CONFIGURATION
# ==========================================
# Service metadata
- "homelab.category=media"
- "homelab.description=Open-source media streaming server"
- "sablier.enable=true"
- "sablier.group=${SERVER_HOSTNAME:-debian}-jellyfin"
- "sablier.start-on-demand=true"
- "sablier.theme=hacker-terminal"
# Traefik labels - NO Authelia for app access
# Traefik reverse proxy (uncomment to enable - NO Authelia for app access)
- "traefik.enable=true"
- "traefik.http.routers.jellyfin.rule=Host(`jellyfin.${DOMAIN}`)"
- "traefik.http.routers.jellyfin.entrypoints=websecure"
- "traefik.http.routers.jellyfin.tls=true"
- "traefik.http.routers.jellyfin.tls.certresolver=letsencrypt"
- "traefik.http.services.jellyfin.loadbalancer.server.port=8096"
- "x-dockge.url=https://jellyfin.${DOMAIN}"
# Sablier lazy loading (enabled by default - comment out to disable)
- "sablier.enable=true"
- "sablier.group=${SERVER_HOSTNAME:-debian}-jellyfin"
- "sablier.start-on-demand=true"
- "sablier.theme=hacker-terminal"
# Calibre-Web - Ebook reader and server
# Access at: https://calibre.${DOMAIN}
@@ -101,8 +108,15 @@ services:
- TZ=${TZ:-America/New_York}
- DOCKER_MODS=linuxserver/mods:universal-calibre
labels:
# ==========================================
# TRAEFIK CONFIGURATION
# ==========================================
# Service metadata
- "homelab.category=media"
- "homelab.description=Ebook reader and library management"
# Traefik reverse proxy (uncomment to enable)
- "traefik.enable=true"
- "traefik.http.routers.calibre.rule=Host(`calibre.${DOMAIN}`)"
- "traefik.http.routers.calibre.entrypoints=websecure"
@@ -110,6 +124,15 @@ services:
- "traefik.http.routers.calibre.middlewares=authelia@docker"
- "traefik.http.services.calibre.loadbalancer.server.port=8083"
# ==========================================
# DOCKGE URL CONFIGURATION
# ==========================================
x-dockge:
urls:
# Proxied URLs (through Traefik)
- https://jellyfin.${DOMAIN}
- https://calibre.${DOMAIN}
networks:
media-network:
driver: bridge

View File

@@ -20,7 +20,7 @@
services:
# Nextcloud - File sync and collaboration
# Access at: https://nextcloud.${DOMAIN}
# File storage service should always run for continuous sync
# Uses Sablier lazy loading - starts on-demand, stops after 5min inactivity
nextcloud:
image: nextcloud:28
deploy:
@@ -33,7 +33,7 @@ services:
cpus: '0.75'
memory: 512M
container_name: nextcloud
restart: unless-stopped
restart: no
networks:
- homelab-network
- traefik-network
@@ -57,19 +57,32 @@ services:
depends_on:
- nextcloud-db
labels:
# ==========================================
# TRAEFIK & SABLIER CONFIGURATION
# ==========================================
# Service metadata
- "homelab.category=productivity"
- "homelab.description=File sync and collaboration"
# Traefik reverse proxy (uncomment to enable)
- "traefik.enable=true"
- "traefik.http.routers.nextcloud.rule=Host(`nextcloud.${DOMAIN}`)"
- "traefik.http.routers.nextcloud.entrypoints=websecure"
- "traefik.http.routers.nextcloud.tls.certresolver=letsencrypt"
- "traefik.http.routers.nextcloud.middlewares=authelia@docker"
- "traefik.http.services.nextcloud.loadbalancer.server.port=80"
# Sablier lazy loading (enabled by default - comment out to disable)
- "sablier.enable=true"
- "sablier.group=${SERVER_HOSTNAME:-debian}-nextcloud"
- "sablier.start-on-demand=true"
nextcloud-db:
restart: unless-stopped
image: mariadb:10.11
container_name: nextcloud-db
restart: unless-stopped
restart: no
networks:
- nextcloud-network
volumes:
@@ -89,7 +102,7 @@ services:
mealie:
image: ghcr.io/mealie-recipes/mealie:latest
container_name: mealie
restart: unless-stopped
restart: no
networks:
- homelab-network
- traefik-network
@@ -118,7 +131,7 @@ services:
wordpress:
image: wordpress:latest
container_name: wordpress
restart: unless-stopped
restart: no
networks:
- homelab-network
- traefik-network
@@ -145,9 +158,10 @@ services:
# No Authelia - public blog
wordpress-db:
restart: unless-stopped
image: mariadb:10.11
container_name: wordpress-db
restart: unless-stopped
restart: no
networks:
- wordpress-network
volumes:
@@ -175,7 +189,7 @@ services:
cpus: '0.25'
memory: 128M
container_name: gitea
restart: unless-stopped
restart: no
networks:
- homelab-network
- traefik-network
@@ -207,9 +221,10 @@ services:
- "traefik.http.services.gitea.loadbalancer.server.port=3000"
gitea-db:
restart: unless-stopped
image: postgres:14-alpine
container_name: gitea-db
restart: unless-stopped
restart: no
networks:
- gitea-network
volumes:
@@ -241,24 +256,34 @@ services:
- PGID=${PGID:-1000}
- TZ=${TZ}
labels:
# ==========================================
# TRAEFIK & SABLIER CONFIGURATION
# ==========================================
# Service metadata
- "homelab.category=productivity"
- "homelab.description=File-based wiki"
- "sablier.enable=true"
- "sablier.group=${SERVER_HOSTNAME:-debian}-dokuwiki"
- "sablier.start-on-demand=true"
# Traefik reverse proxy (uncomment to enable)
- "traefik.enable=true"
- "traefik.http.routers.dokuwiki.rule=Host(`dokuwiki.${DOMAIN}`)"
- "traefik.http.routers.dokuwiki.entrypoints=websecure"
- "traefik.http.routers.dokuwiki.tls.certresolver=letsencrypt"
- "traefik.http.routers.dokuwiki.middlewares=authelia@docker"
- "traefik.http.services.dokuwiki.loadbalancer.server.port=80"
# Sablier lazy loading (enabled by default - comment out to disable)
- "sablier.enable=true"
- "sablier.group=${SERVER_HOSTNAME:-debian}-dokuwiki"
- "sablier.start-on-demand=true"
# BookStack - Documentation platform
# Access at: https://docs.${DOMAIN}
# Uses Sablier lazy loading - starts on-demand, stops after 5min inactivity
bookstack:
image: lscr.io/linuxserver/bookstack:latest
container_name: bookstack
restart: unless-stopped
restart: no
networks:
- homelab-network
- traefik-network
@@ -280,21 +305,32 @@ services:
depends_on:
- bookstack-db
labels:
# ==========================================
# TRAEFIK & SABLIER CONFIGURATION
# ==========================================
# Service metadata
- "homelab.category=productivity"
- "homelab.description=Documentation and wiki platform"
# Traefik reverse proxy (uncomment to enable)
- "traefik.enable=true"
- "traefik.http.routers.bookstack.rule=Host(`bookstack.${DOMAIN}`)"
- "traefik.http.routers.bookstack.entrypoints=websecure"
- "traefik.http.routers.bookstack.tls.certresolver=letsencrypt"
- "traefik.http.routers.bookstack.middlewares=authelia@docker"
- "traefik.http.services.bookstack.loadbalancer.server.port=80"
- "x-dockge.url=https://bookstack.${DOMAIN}"
- "x-dockge.url=https://bookstack.${DOMAIN}"
# Sablier lazy loading (enabled by default - comment out to disable)
- "sablier.enable=true"
- "sablier.group=${SERVER_HOSTNAME:-debian}-bookstack"
- "sablier.start-on-demand=true"
bookstack-db:
restart: unless-stopped
image: mariadb:10.11
container_name: bookstack-db
restart: unless-stopped
restart: no
networks:
- bookstack-network
volumes:
@@ -313,7 +349,7 @@ services:
mediawiki:
image: mediawiki:latest
container_name: mediawiki
restart: unless-stopped
restart: no
networks:
- homelab-network
- traefik-network
@@ -341,9 +377,10 @@ services:
- "traefik.http.services.mediawiki.loadbalancer.server.port=80"
mediawiki-db:
restart: unless-stopped
image: mariadb:10.11
container_name: mediawiki-db
restart: unless-stopped
restart: no
networks:
- mediawiki-network
volumes:
@@ -363,7 +400,7 @@ services:
jupyter:
image: jupyter/scipy-notebook:latest
container_name: jupyter
restart: unless-stopped
restart: no
networks:
- homelab-network
- traefik-network
@@ -401,6 +438,20 @@ volumes:
bookstack-db-data:
mediawiki-db-data:
# ==========================================
# DOCKGE URL CONFIGURATION
# ==========================================
x-dockge:
urls:
# Proxied URLs (through Traefik)
- https://nextcloud.${DOMAIN}
- https://mealie.${DOMAIN}
- https://wordpress.${DOMAIN}
- https://gitea.${DOMAIN}
- https://bookstack.${DOMAIN}
- https://dokuwiki.${DOMAIN}
- https://mediawiki.${DOMAIN}
networks:
homelab-network:
external: true