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:
@@ -45,8 +45,15 @@ services:
|
|||||||
- TZ=${TZ}
|
- TZ=${TZ}
|
||||||
- HOMEPAGE_ALLOWED_HOSTS=home.${DOMAIN}
|
- HOMEPAGE_ALLOWED_HOSTS=home.${DOMAIN}
|
||||||
labels:
|
labels:
|
||||||
|
# ==========================================
|
||||||
|
# TRAEFIK CONFIGURATION
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
# Service metadata
|
||||||
- "homelab.category=dashboard"
|
- "homelab.category=dashboard"
|
||||||
- "homelab.description=Application dashboard (AI-configurable)"
|
- "homelab.description=Application dashboard (AI-configurable)"
|
||||||
|
|
||||||
|
# Traefik reverse proxy (uncomment to enable)
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
- "traefik.http.routers.homepage.rule=Host(`home.${DOMAIN}`)"
|
- "traefik.http.routers.homepage.rule=Host(`home.${DOMAIN}`)"
|
||||||
- "traefik.http.routers.homepage.entrypoints=websecure"
|
- "traefik.http.routers.homepage.entrypoints=websecure"
|
||||||
@@ -83,18 +90,35 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- TZ=${TZ}
|
- TZ=${TZ}
|
||||||
labels:
|
labels:
|
||||||
|
# ==========================================
|
||||||
|
# TRAEFIK & SABLIER CONFIGURATION
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
# Service metadata
|
||||||
- "homelab.category=dashboard"
|
- "homelab.category=dashboard"
|
||||||
- "homelab.description=Modern homelab dashboard"
|
- "homelab.description=Modern homelab dashboard"
|
||||||
- "sablier.enable=true"
|
|
||||||
- "sablier.group=${SERVER_HOSTNAME:-debian}-homarr"
|
# Traefik reverse proxy (uncomment to enable)
|
||||||
- "sablier.start-on-demand=true"
|
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
- "traefik.http.routers.homarr.rule=Host(`homarr.${DOMAIN}`)"
|
- "traefik.http.routers.homarr.rule=Host(`homarr.${DOMAIN}`)"
|
||||||
- "traefik.http.routers.homarr.entrypoints=websecure"
|
- "traefik.http.routers.homarr.entrypoints=websecure"
|
||||||
- "traefik.http.routers.homarr.tls=true"
|
- "traefik.http.routers.homarr.tls=true"
|
||||||
- "traefik.http.routers.homarr.middlewares=authelia@docker"
|
- "traefik.http.routers.homarr.middlewares=authelia@docker"
|
||||||
- "traefik.http.services.homarr.loadbalancer.server.port=7575"
|
- "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:
|
networks:
|
||||||
homelab-network:
|
homelab-network:
|
||||||
|
|||||||
@@ -139,11 +139,15 @@ services:
|
|||||||
- DOZZLE_TAILSIZE=300
|
- DOZZLE_TAILSIZE=300
|
||||||
- DOZZLE_FILTER=status=running
|
- DOZZLE_FILTER=status=running
|
||||||
labels:
|
labels:
|
||||||
|
# ==========================================
|
||||||
|
# TRAEFIK & SABLIER CONFIGURATION
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
# Service metadata
|
||||||
- "homelab.category=infrastructure"
|
- "homelab.category=infrastructure"
|
||||||
- "homelab.description=Real-time Docker log viewer"
|
- "homelab.description=Real-time Docker log viewer"
|
||||||
- "sablier.enable=true"
|
|
||||||
- "sablier.group=${SERVER_HOSTNAME:-debian}-dozzle"
|
# Traefik reverse proxy (uncomment to enable)
|
||||||
- "sablier.start-on-demand=true"
|
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
- "traefik.http.routers.dozzle.rule=Host(`dozzle.${DOMAIN}`)"
|
- "traefik.http.routers.dozzle.rule=Host(`dozzle.${DOMAIN}`)"
|
||||||
- "traefik.http.routers.dozzle.entrypoints=websecure"
|
- "traefik.http.routers.dozzle.entrypoints=websecure"
|
||||||
@@ -151,6 +155,11 @@ services:
|
|||||||
- "traefik.http.routers.dozzle.middlewares=authelia@docker"
|
- "traefik.http.routers.dozzle.middlewares=authelia@docker"
|
||||||
- "traefik.http.services.dozzle.loadbalancer.server.port=8080"
|
- "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
|
# Glances - System monitoring
|
||||||
# Access at: https://glances.${DOMAIN}
|
# Access at: https://glances.${DOMAIN}
|
||||||
# Uses Sablier lazy loading - starts on-demand, stops after 30min inactivity
|
# Uses Sablier lazy loading - starts on-demand, stops after 30min inactivity
|
||||||
@@ -179,11 +188,15 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- GLANCES_OPT=-w
|
- GLANCES_OPT=-w
|
||||||
labels:
|
labels:
|
||||||
|
# ==========================================
|
||||||
|
# TRAEFIK & SABLIER CONFIGURATION
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
# Service metadata
|
||||||
- "homelab.category=infrastructure"
|
- "homelab.category=infrastructure"
|
||||||
- "homelab.description=System and Docker monitoring"
|
- "homelab.description=System and Docker monitoring"
|
||||||
- "sablier.enable=true"
|
|
||||||
- "sablier.group=${SERVER_HOSTNAME:-debian}-glances"
|
# Traefik reverse proxy (uncomment to enable)
|
||||||
- "sablier.start-on-demand=true"
|
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
- "traefik.http.routers.glances.rule=Host(`glances.${DOMAIN}`)"
|
- "traefik.http.routers.glances.rule=Host(`glances.${DOMAIN}`)"
|
||||||
- "traefik.http.routers.glances.entrypoints=websecure"
|
- "traefik.http.routers.glances.entrypoints=websecure"
|
||||||
@@ -191,6 +204,11 @@ services:
|
|||||||
- "traefik.http.routers.glances.middlewares=authelia@docker"
|
- "traefik.http.routers.glances.middlewares=authelia@docker"
|
||||||
- "traefik.http.services.glances.loadbalancer.server.port=61208"
|
- "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
|
# Code Server - VS Code in browser
|
||||||
# Access at: https://code.${DOMAIN}
|
# Access at: https://code.${DOMAIN}
|
||||||
# Uses Sablier lazy loading - starts on-demand, stops after 30min inactivity
|
# Uses Sablier lazy loading - starts on-demand, stops after 30min inactivity
|
||||||
@@ -223,11 +241,15 @@ services:
|
|||||||
- PASSWORD=${CODE_SERVER_PASSWORD}
|
- PASSWORD=${CODE_SERVER_PASSWORD}
|
||||||
- SUDO_PASSWORD=${CODE_SERVER_SUDO_PASSWORD}
|
- SUDO_PASSWORD=${CODE_SERVER_SUDO_PASSWORD}
|
||||||
labels:
|
labels:
|
||||||
|
# ==========================================
|
||||||
|
# TRAEFIK & SABLIER CONFIGURATION
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
# Service metadata
|
||||||
- "homelab.category=infrastructure"
|
- "homelab.category=infrastructure"
|
||||||
- "homelab.description=VS Code in browser"
|
- "homelab.description=VS Code in browser"
|
||||||
- "sablier.enable=true"
|
|
||||||
- "sablier.group=${SERVER_HOSTNAME:-debian}-code-server"
|
# Traefik reverse proxy (uncomment to enable)
|
||||||
- "sablier.start-on-demand=true"
|
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
- "traefik.http.routers.code-server.rule=Host(`code.${DOMAIN}`)"
|
- "traefik.http.routers.code-server.rule=Host(`code.${DOMAIN}`)"
|
||||||
- "traefik.http.routers.code-server.entrypoints=websecure"
|
- "traefik.http.routers.code-server.entrypoints=websecure"
|
||||||
@@ -235,6 +257,26 @@ services:
|
|||||||
- "traefik.http.routers.code-server.middlewares=authelia@docker"
|
- "traefik.http.routers.code-server.middlewares=authelia@docker"
|
||||||
- "traefik.http.services.code-server.loadbalancer.server.port=8443"
|
- "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:
|
networks:
|
||||||
homelab-network:
|
homelab-network:
|
||||||
external: true
|
external: true
|
||||||
|
|||||||
@@ -56,20 +56,27 @@ services:
|
|||||||
# devices:
|
# devices:
|
||||||
# - /dev/dri:/dev/dri
|
# - /dev/dri:/dev/dri
|
||||||
labels:
|
labels:
|
||||||
|
# ==========================================
|
||||||
|
# TRAEFIK & SABLIER CONFIGURATION
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
# Service metadata
|
||||||
- "homelab.category=media"
|
- "homelab.category=media"
|
||||||
- "homelab.description=Open-source media streaming server"
|
- "homelab.description=Open-source media streaming server"
|
||||||
- "sablier.enable=true"
|
|
||||||
- "sablier.group=${SERVER_HOSTNAME:-debian}-jellyfin"
|
# Traefik reverse proxy (uncomment to enable - NO Authelia for app access)
|
||||||
- "sablier.start-on-demand=true"
|
|
||||||
- "sablier.theme=hacker-terminal"
|
|
||||||
# Traefik labels - NO Authelia for app access
|
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
- "traefik.http.routers.jellyfin.rule=Host(`jellyfin.${DOMAIN}`)"
|
- "traefik.http.routers.jellyfin.rule=Host(`jellyfin.${DOMAIN}`)"
|
||||||
- "traefik.http.routers.jellyfin.entrypoints=websecure"
|
- "traefik.http.routers.jellyfin.entrypoints=websecure"
|
||||||
- "traefik.http.routers.jellyfin.tls=true"
|
- "traefik.http.routers.jellyfin.tls=true"
|
||||||
- "traefik.http.routers.jellyfin.tls.certresolver=letsencrypt"
|
- "traefik.http.routers.jellyfin.tls.certresolver=letsencrypt"
|
||||||
- "traefik.http.services.jellyfin.loadbalancer.server.port=8096"
|
- "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
|
# Calibre-Web - Ebook reader and server
|
||||||
# Access at: https://calibre.${DOMAIN}
|
# Access at: https://calibre.${DOMAIN}
|
||||||
@@ -101,8 +108,15 @@ services:
|
|||||||
- TZ=${TZ:-America/New_York}
|
- TZ=${TZ:-America/New_York}
|
||||||
- DOCKER_MODS=linuxserver/mods:universal-calibre
|
- DOCKER_MODS=linuxserver/mods:universal-calibre
|
||||||
labels:
|
labels:
|
||||||
|
# ==========================================
|
||||||
|
# TRAEFIK CONFIGURATION
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
# Service metadata
|
||||||
- "homelab.category=media"
|
- "homelab.category=media"
|
||||||
- "homelab.description=Ebook reader and library management"
|
- "homelab.description=Ebook reader and library management"
|
||||||
|
|
||||||
|
# Traefik reverse proxy (uncomment to enable)
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
- "traefik.http.routers.calibre.rule=Host(`calibre.${DOMAIN}`)"
|
- "traefik.http.routers.calibre.rule=Host(`calibre.${DOMAIN}`)"
|
||||||
- "traefik.http.routers.calibre.entrypoints=websecure"
|
- "traefik.http.routers.calibre.entrypoints=websecure"
|
||||||
@@ -110,6 +124,15 @@ services:
|
|||||||
- "traefik.http.routers.calibre.middlewares=authelia@docker"
|
- "traefik.http.routers.calibre.middlewares=authelia@docker"
|
||||||
- "traefik.http.services.calibre.loadbalancer.server.port=8083"
|
- "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:
|
networks:
|
||||||
media-network:
|
media-network:
|
||||||
driver: bridge
|
driver: bridge
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
services:
|
services:
|
||||||
# Nextcloud - File sync and collaboration
|
# Nextcloud - File sync and collaboration
|
||||||
# Access at: https://nextcloud.${DOMAIN}
|
# 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:
|
nextcloud:
|
||||||
image: nextcloud:28
|
image: nextcloud:28
|
||||||
deploy:
|
deploy:
|
||||||
@@ -33,7 +33,7 @@ services:
|
|||||||
cpus: '0.75'
|
cpus: '0.75'
|
||||||
memory: 512M
|
memory: 512M
|
||||||
container_name: nextcloud
|
container_name: nextcloud
|
||||||
restart: unless-stopped
|
restart: no
|
||||||
networks:
|
networks:
|
||||||
- homelab-network
|
- homelab-network
|
||||||
- traefik-network
|
- traefik-network
|
||||||
@@ -57,8 +57,15 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
- nextcloud-db
|
- nextcloud-db
|
||||||
labels:
|
labels:
|
||||||
|
# ==========================================
|
||||||
|
# TRAEFIK & SABLIER CONFIGURATION
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
# Service metadata
|
||||||
- "homelab.category=productivity"
|
- "homelab.category=productivity"
|
||||||
- "homelab.description=File sync and collaboration"
|
- "homelab.description=File sync and collaboration"
|
||||||
|
|
||||||
|
# Traefik reverse proxy (uncomment to enable)
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
- "traefik.http.routers.nextcloud.rule=Host(`nextcloud.${DOMAIN}`)"
|
- "traefik.http.routers.nextcloud.rule=Host(`nextcloud.${DOMAIN}`)"
|
||||||
- "traefik.http.routers.nextcloud.entrypoints=websecure"
|
- "traefik.http.routers.nextcloud.entrypoints=websecure"
|
||||||
@@ -66,10 +73,16 @@ services:
|
|||||||
- "traefik.http.routers.nextcloud.middlewares=authelia@docker"
|
- "traefik.http.routers.nextcloud.middlewares=authelia@docker"
|
||||||
- "traefik.http.services.nextcloud.loadbalancer.server.port=80"
|
- "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:
|
nextcloud-db:
|
||||||
|
restart: unless-stopped
|
||||||
image: mariadb:10.11
|
image: mariadb:10.11
|
||||||
container_name: nextcloud-db
|
container_name: nextcloud-db
|
||||||
restart: unless-stopped
|
restart: no
|
||||||
networks:
|
networks:
|
||||||
- nextcloud-network
|
- nextcloud-network
|
||||||
volumes:
|
volumes:
|
||||||
@@ -89,7 +102,7 @@ services:
|
|||||||
mealie:
|
mealie:
|
||||||
image: ghcr.io/mealie-recipes/mealie:latest
|
image: ghcr.io/mealie-recipes/mealie:latest
|
||||||
container_name: mealie
|
container_name: mealie
|
||||||
restart: unless-stopped
|
restart: no
|
||||||
networks:
|
networks:
|
||||||
- homelab-network
|
- homelab-network
|
||||||
- traefik-network
|
- traefik-network
|
||||||
@@ -118,7 +131,7 @@ services:
|
|||||||
wordpress:
|
wordpress:
|
||||||
image: wordpress:latest
|
image: wordpress:latest
|
||||||
container_name: wordpress
|
container_name: wordpress
|
||||||
restart: unless-stopped
|
restart: no
|
||||||
networks:
|
networks:
|
||||||
- homelab-network
|
- homelab-network
|
||||||
- traefik-network
|
- traefik-network
|
||||||
@@ -145,9 +158,10 @@ services:
|
|||||||
# No Authelia - public blog
|
# No Authelia - public blog
|
||||||
|
|
||||||
wordpress-db:
|
wordpress-db:
|
||||||
|
restart: unless-stopped
|
||||||
image: mariadb:10.11
|
image: mariadb:10.11
|
||||||
container_name: wordpress-db
|
container_name: wordpress-db
|
||||||
restart: unless-stopped
|
restart: no
|
||||||
networks:
|
networks:
|
||||||
- wordpress-network
|
- wordpress-network
|
||||||
volumes:
|
volumes:
|
||||||
@@ -175,7 +189,7 @@ services:
|
|||||||
cpus: '0.25'
|
cpus: '0.25'
|
||||||
memory: 128M
|
memory: 128M
|
||||||
container_name: gitea
|
container_name: gitea
|
||||||
restart: unless-stopped
|
restart: no
|
||||||
networks:
|
networks:
|
||||||
- homelab-network
|
- homelab-network
|
||||||
- traefik-network
|
- traefik-network
|
||||||
@@ -207,9 +221,10 @@ services:
|
|||||||
- "traefik.http.services.gitea.loadbalancer.server.port=3000"
|
- "traefik.http.services.gitea.loadbalancer.server.port=3000"
|
||||||
|
|
||||||
gitea-db:
|
gitea-db:
|
||||||
|
restart: unless-stopped
|
||||||
image: postgres:14-alpine
|
image: postgres:14-alpine
|
||||||
container_name: gitea-db
|
container_name: gitea-db
|
||||||
restart: unless-stopped
|
restart: no
|
||||||
networks:
|
networks:
|
||||||
- gitea-network
|
- gitea-network
|
||||||
volumes:
|
volumes:
|
||||||
@@ -241,11 +256,15 @@ services:
|
|||||||
- PGID=${PGID:-1000}
|
- PGID=${PGID:-1000}
|
||||||
- TZ=${TZ}
|
- TZ=${TZ}
|
||||||
labels:
|
labels:
|
||||||
|
# ==========================================
|
||||||
|
# TRAEFIK & SABLIER CONFIGURATION
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
# Service metadata
|
||||||
- "homelab.category=productivity"
|
- "homelab.category=productivity"
|
||||||
- "homelab.description=File-based wiki"
|
- "homelab.description=File-based wiki"
|
||||||
- "sablier.enable=true"
|
|
||||||
- "sablier.group=${SERVER_HOSTNAME:-debian}-dokuwiki"
|
# Traefik reverse proxy (uncomment to enable)
|
||||||
- "sablier.start-on-demand=true"
|
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
- "traefik.http.routers.dokuwiki.rule=Host(`dokuwiki.${DOMAIN}`)"
|
- "traefik.http.routers.dokuwiki.rule=Host(`dokuwiki.${DOMAIN}`)"
|
||||||
- "traefik.http.routers.dokuwiki.entrypoints=websecure"
|
- "traefik.http.routers.dokuwiki.entrypoints=websecure"
|
||||||
@@ -253,12 +272,18 @@ services:
|
|||||||
- "traefik.http.routers.dokuwiki.middlewares=authelia@docker"
|
- "traefik.http.routers.dokuwiki.middlewares=authelia@docker"
|
||||||
- "traefik.http.services.dokuwiki.loadbalancer.server.port=80"
|
- "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
|
# BookStack - Documentation platform
|
||||||
# Access at: https://docs.${DOMAIN}
|
# Access at: https://docs.${DOMAIN}
|
||||||
|
# Uses Sablier lazy loading - starts on-demand, stops after 5min inactivity
|
||||||
bookstack:
|
bookstack:
|
||||||
image: lscr.io/linuxserver/bookstack:latest
|
image: lscr.io/linuxserver/bookstack:latest
|
||||||
container_name: bookstack
|
container_name: bookstack
|
||||||
restart: unless-stopped
|
restart: no
|
||||||
networks:
|
networks:
|
||||||
- homelab-network
|
- homelab-network
|
||||||
- traefik-network
|
- traefik-network
|
||||||
@@ -280,21 +305,32 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
- bookstack-db
|
- bookstack-db
|
||||||
labels:
|
labels:
|
||||||
|
# ==========================================
|
||||||
|
# TRAEFIK & SABLIER CONFIGURATION
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
# Service metadata
|
||||||
- "homelab.category=productivity"
|
- "homelab.category=productivity"
|
||||||
- "homelab.description=Documentation and wiki platform"
|
- "homelab.description=Documentation and wiki platform"
|
||||||
|
|
||||||
|
# Traefik reverse proxy (uncomment to enable)
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
- "traefik.http.routers.bookstack.rule=Host(`bookstack.${DOMAIN}`)"
|
- "traefik.http.routers.bookstack.rule=Host(`bookstack.${DOMAIN}`)"
|
||||||
- "traefik.http.routers.bookstack.entrypoints=websecure"
|
- "traefik.http.routers.bookstack.entrypoints=websecure"
|
||||||
- "traefik.http.routers.bookstack.tls.certresolver=letsencrypt"
|
- "traefik.http.routers.bookstack.tls.certresolver=letsencrypt"
|
||||||
- "traefik.http.routers.bookstack.middlewares=authelia@docker"
|
- "traefik.http.routers.bookstack.middlewares=authelia@docker"
|
||||||
- "traefik.http.services.bookstack.loadbalancer.server.port=80"
|
- "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:
|
bookstack-db:
|
||||||
|
restart: unless-stopped
|
||||||
image: mariadb:10.11
|
image: mariadb:10.11
|
||||||
container_name: bookstack-db
|
container_name: bookstack-db
|
||||||
restart: unless-stopped
|
restart: no
|
||||||
networks:
|
networks:
|
||||||
- bookstack-network
|
- bookstack-network
|
||||||
volumes:
|
volumes:
|
||||||
@@ -313,7 +349,7 @@ services:
|
|||||||
mediawiki:
|
mediawiki:
|
||||||
image: mediawiki:latest
|
image: mediawiki:latest
|
||||||
container_name: mediawiki
|
container_name: mediawiki
|
||||||
restart: unless-stopped
|
restart: no
|
||||||
networks:
|
networks:
|
||||||
- homelab-network
|
- homelab-network
|
||||||
- traefik-network
|
- traefik-network
|
||||||
@@ -341,9 +377,10 @@ services:
|
|||||||
- "traefik.http.services.mediawiki.loadbalancer.server.port=80"
|
- "traefik.http.services.mediawiki.loadbalancer.server.port=80"
|
||||||
|
|
||||||
mediawiki-db:
|
mediawiki-db:
|
||||||
|
restart: unless-stopped
|
||||||
image: mariadb:10.11
|
image: mariadb:10.11
|
||||||
container_name: mediawiki-db
|
container_name: mediawiki-db
|
||||||
restart: unless-stopped
|
restart: no
|
||||||
networks:
|
networks:
|
||||||
- mediawiki-network
|
- mediawiki-network
|
||||||
volumes:
|
volumes:
|
||||||
@@ -363,7 +400,7 @@ services:
|
|||||||
jupyter:
|
jupyter:
|
||||||
image: jupyter/scipy-notebook:latest
|
image: jupyter/scipy-notebook:latest
|
||||||
container_name: jupyter
|
container_name: jupyter
|
||||||
restart: unless-stopped
|
restart: no
|
||||||
networks:
|
networks:
|
||||||
- homelab-network
|
- homelab-network
|
||||||
- traefik-network
|
- traefik-network
|
||||||
@@ -401,6 +438,20 @@ volumes:
|
|||||||
bookstack-db-data:
|
bookstack-db-data:
|
||||||
mediawiki-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:
|
networks:
|
||||||
homelab-network:
|
homelab-network:
|
||||||
external: true
|
external: true
|
||||||
|
|||||||
Reference in New Issue
Block a user