Fix port conflicts and standardize service configurations

- Resolve port conflicts: TasmoAdmin (8084), Form.io (3002), Gitea (3010)
- Add missing Authelia SSO and Sablier lazy loading to utilities stack
- Standardize Form.io labels to match TRAEFIK CONFIGURATION guidelines
- Reorganize ports-in-use.md with stack-based table and proper column order
- Remove Dokuwiki deployment from ez-homelab.sh (already in productivity stack)
- Update service restart policies for lazy loading compatibility
This commit is contained in:
EZ-Homelab
2026-01-24 17:01:53 -05:00
parent 7449c14ac6
commit 7a1cd5a8a0
9 changed files with 84 additions and 119 deletions

View File

@@ -26,7 +26,7 @@ services:
- homelab-network - homelab-network
- traefik-network - traefik-network
ports: ports:
- "3000:3000" - "3003:3000"
volumes: volumes:
- ./homepage:/app/config - ./homepage:/app/config
- /var/run/docker.sock:/var/run/docker.sock # For Docker integration do not mount RO - /var/run/docker.sock:/var/run/docker.sock # For Docker integration do not mount RO
@@ -50,7 +50,7 @@ services:
- "traefik.http.routers.homepage.entrypoints=websecure" - "traefik.http.routers.homepage.entrypoints=websecure"
- "traefik.http.routers.homepage.tls=true" - "traefik.http.routers.homepage.tls=true"
- "traefik.http.routers.homepage.middlewares=authelia@docker" - "traefik.http.routers.homepage.middlewares=authelia@docker"
- "traefik.http.services.homepage.loadbalancer.server.port=3000" - "traefik.http.services.homepage.loadbalancer.server.port=3003"
# Sablier lazy loading (disabled by default - uncomment to enable) # Sablier lazy loading (disabled by default - uncomment to enable)
# - "sablier.enable=true" # - "sablier.enable=true"
# - "sablier.group=${SERVER_HOSTNAME}-homarr" # - "sablier.group=${SERVER_HOSTNAME}-homarr"

View File

@@ -92,7 +92,7 @@ services:
- homelab-network - homelab-network
- traefik-network - traefik-network
ports: ports:
- "80:80" - "8084:80"
volumes: volumes:
- /opt/stacks/tasmoadmin/data:/data - /opt/stacks/tasmoadmin/data:/data
environment: environment:
@@ -111,7 +111,7 @@ services:
- "traefik.http.routers.tasmoadmin.entrypoints=websecure" - "traefik.http.routers.tasmoadmin.entrypoints=websecure"
- "traefik.http.routers.tasmoadmin.tls.certresolver=letsencrypt" - "traefik.http.routers.tasmoadmin.tls.certresolver=letsencrypt"
- "traefik.http.routers.tasmoadmin.middlewares=authelia@docker" - "traefik.http.routers.tasmoadmin.middlewares=authelia@docker"
- "traefik.http.services.tasmoadmin.loadbalancer.server.port=80" - "traefik.http.services.tasmoadmin.loadbalancer.server.port=8084"
# MotionEye - Video surveillance # MotionEye - Video surveillance
# Access at: https://motioneye.${DOMAIN} # Access at: https://motioneye.${DOMAIN}

View File

@@ -233,7 +233,7 @@ services:
- homelab-network - homelab-network
- traefik-network - traefik-network
ports: ports:
- "8443:8443" - "8079:8443"
volumes: volumes:
- ./code-server/config:/config - ./code-server/config:/config
- /opt/stacks:/opt/stacks # Access to all stacks - /opt/stacks:/opt/stacks # Access to all stacks

View File

@@ -27,7 +27,6 @@ services:
container_name: sonarr container_name: sonarr
restart: no restart: no
networks: networks:
- homelab-network
- homelab-network - homelab-network
- traefik-network - traefik-network
ports: ports:
@@ -66,7 +65,6 @@ services:
container_name: radarr container_name: radarr
restart: no restart: no
networks: networks:
- homelab-network
- homelab-network - homelab-network
- traefik-network - traefik-network
ports: ports:
@@ -105,7 +103,6 @@ services:
container_name: prowlarr container_name: prowlarr
restart: no restart: no
networks: networks:
- homelab-network
- homelab-network - homelab-network
- traefik-network - traefik-network
ports: ports:
@@ -142,7 +139,6 @@ services:
container_name: readarr container_name: readarr
restart: no restart: no
networks: networks:
- homelab-network
- homelab-network - homelab-network
- traefik-network - traefik-network
ports: ports:
@@ -181,7 +177,6 @@ services:
container_name: lidarr container_name: lidarr
restart: no restart: no
networks: networks:
- homelab-network
- homelab-network - homelab-network
- traefik-network - traefik-network
ports: ports:
@@ -220,7 +215,6 @@ services:
container_name: lazylibrarian container_name: lazylibrarian
restart: no restart: no
networks: networks:
- homelab-network
- homelab-network - homelab-network
- traefik-network - traefik-network
ports: ports:
@@ -260,7 +254,6 @@ services:
container_name: mylar3 container_name: mylar3
restart: no restart: no
networks: networks:
- homelab-network
- homelab-network - homelab-network
- traefik-network - traefik-network
ports: ports:
@@ -299,7 +292,6 @@ services:
container_name: jellyseerr container_name: jellyseerr
restart: no restart: no
networks: networks:
- homelab-network
- homelab-network - homelab-network
- traefik-network - traefik-network
ports: ports:
@@ -349,7 +341,6 @@ services:
container_name: tdarr-server container_name: tdarr-server
restart: no restart: no
networks: networks:
- homelab-network
- homelab-network - homelab-network
- traefik-network - traefik-network
ports: ports:
@@ -419,11 +410,10 @@ services:
container_name: unmanic container_name: unmanic
restart: no restart: no
networks: networks:
- homelab-network
- homelab-network - homelab-network
- traefik-network - traefik-network
ports: ports:
- "8888:8888" - "8889:8888"
volumes: volumes:
- ./unmanic/config:/config - ./unmanic/config:/config
- /mnt/media:/library - /mnt/media:/library
@@ -447,10 +437,11 @@ services:
- "traefik.http.routers.unmanic.entrypoints=websecure" - "traefik.http.routers.unmanic.entrypoints=websecure"
- "traefik.http.routers.unmanic.tls.certresolver=letsencrypt" - "traefik.http.routers.unmanic.tls.certresolver=letsencrypt"
- "traefik.http.routers.unmanic.middlewares=authelia@docker" - "traefik.http.routers.unmanic.middlewares=authelia@docker"
- "traefik.http.services.unmanic.loadbalancer.server.port=8888" - "traefik.http.services.unmanic.loadbalancer.server.port=8889"
- "sablier.enable=true" - "sablier.enable=true"
- "sablier.group=${SERVER_HOSTNAME}-arr" - "sablier.group=${SERVER_HOSTNAME}-arr"
- "sablier.start-on-demand=true" - "sablier.start-on-demand=true"
x-dockge: x-dockge:
urls: urls:
- https://sonarr.${DOMAIN} - https://sonarr.${DOMAIN}
@@ -473,6 +464,7 @@ x-dockge:
- http://localhost:8265 - http://localhost:8265
- https://unmanic.${DOMAIN} - https://unmanic.${DOMAIN}
- http://localhost:8888 - http://localhost:8888
networks: networks:
homelab-network: homelab-network:
external: true external: true

View File

@@ -33,7 +33,6 @@ services:
container_name: jellyfin container_name: jellyfin
restart: no restart: no
networks: networks:
- homelab-network
- homelab-network - homelab-network
- traefik-network - traefik-network
ports: ports:
@@ -91,7 +90,6 @@ services:
container_name: calibre-web container_name: calibre-web
restart: unless-stopped restart: unless-stopped
networks: networks:
- homelab-network
- homelab-network - homelab-network
- traefik-network - traefik-network
ports: ports:

View File

@@ -34,7 +34,6 @@ services:
container_name: prometheus container_name: prometheus
restart: unless-stopped restart: unless-stopped
networks: networks:
- homelab-network
- homelab-network - homelab-network
- traefik-network - traefik-network
ports: ports:
@@ -83,7 +82,6 @@ services:
container_name: grafana container_name: grafana
restart: unless-stopped restart: unless-stopped
networks: networks:
- homelab-network
- homelab-network - homelab-network
- traefik-network - traefik-network
ports: ports:
@@ -146,7 +144,6 @@ services:
container_name: cadvisor container_name: cadvisor
restart: unless-stopped restart: unless-stopped
networks: networks:
- homelab-network
- homelab-network - homelab-network
- traefik-network - traefik-network
ports: ports:
@@ -193,7 +190,6 @@ services:
container_name: uptime-kuma container_name: uptime-kuma
restart: unless-stopped restart: unless-stopped
networks: networks:
- homelab-network
- homelab-network - homelab-network
- traefik-network - traefik-network
ports: ports:
@@ -234,7 +230,6 @@ services:
container_name: loki container_name: loki
restart: unless-stopped restart: unless-stopped
networks: networks:
- homelab-network
- homelab-network - homelab-network
- traefik-network - traefik-network
ports: ports:

View File

@@ -59,14 +59,12 @@ services:
- "sablier.enable=true" - "sablier.enable=true"
- "sablier.group=${SERVER_HOSTNAME}-backrest" - "sablier.group=${SERVER_HOSTNAME}-backrest"
- "sablier.start-on-demand=true" - "sablier.start-on-demand=true"
- "x-dockge.url=https://backrest.${DOMAIN}"
- "x-dockge.url=https://backrest.${DOMAIN}"
# Duplicati - Backup solution # Duplicati - Backup solution
# Access at: https://duplicati.${DOMAIN} # Access at: https://duplicati.${DOMAIN}
duplicati: duplicati:
image: lscr.io/linuxserver/duplicati:2.0.7 image: lscr.io/linuxserver/duplicati:2.0.7
container_name: duplicati container_name: duplicati
restart: unless-stopped restart: no
networks: networks:
- homelab-network - homelab-network
- traefik-network - traefik-network
@@ -95,18 +93,22 @@ services:
- "traefik.http.routers.duplicati.middlewares=authelia@docker" - "traefik.http.routers.duplicati.middlewares=authelia@docker"
# Service configuration # Service configuration
- "traefik.http.services.duplicati.loadbalancer.server.port=8200" - "traefik.http.services.duplicati.loadbalancer.server.port=8200"
# Sablier configuration
- "sablier.enable=true"
- "sablier.group=${SERVER_HOSTNAME}-duplicati"
- "sablier.start-on-demand=true"
# Form.io - Form builder # Form.io - Form builder
# Uncomment and configure if formio/formio image becomes available # Uncomment and configure if formio/formio image becomes available
formio: formio:
image: calipseo/formio:latest image: calipseo/formio:latest
container_name: formio container_name: formio
restart: unless-stopped restart: no
networks: networks:
- homelab-network - homelab-network
- traefik-network - traefik-network
- homelab-network
ports: ports:
- "3001:3001" - "3002:3001"
environment: environment:
- MONGO=mongodb://formio-mongo:27017/formio - MONGO=mongodb://formio-mongo:27017/formio
- JWT_SECRET=${FORMIO_JWT_SECRET} - JWT_SECRET=${FORMIO_JWT_SECRET}
@@ -117,18 +119,22 @@ services:
# TRAEFIK CONFIGURATION # TRAEFIK CONFIGURATION
# ========================================== # ==========================================
# Service metadata # Service metadata
- "com.centurylinklabs.watchtower.enable=true"
- "homelab.category=utilities" - "homelab.category=utilities"
- "homelab.description=Form builder platform" - "homelab.description=Form builder platform"
# Traefik reverse proxy (comment/uncomment to disable/enable) # Traefik labels
# 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.enable=true"
# Router configuration
- "traefik.http.routers.formio.rule=Host(`forms.${DOMAIN}`)" - "traefik.http.routers.formio.rule=Host(`forms.${DOMAIN}`)"
- "traefik.http.routers.formio.entrypoints=websecure" - "traefik.http.routers.formio.entrypoints=websecure"
- "traefik.http.routers.formio.tls.certresolver=letsencrypt" - "traefik.http.routers.formio.tls.certresolver=letsencrypt"
- "traefik.http.routers.formio.middlewares=authelia@docker" - "traefik.http.routers.formio.middlewares=authelia@docker"
# Service configuration
- "traefik.http.services.formio.loadbalancer.server.port=3001" - "traefik.http.services.formio.loadbalancer.server.port=3001"
# Sablier configuration
- "sablier.enable=true"
- "sablier.group=${SERVER_HOSTNAME}-formio"
- "sablier.start-on-demand=true"
formio-mongo: formio-mongo:
image: mongo:4.4 image: mongo:4.4
container_name: formio-mongo container_name: formio-mongo
@@ -145,7 +151,7 @@ services:
vaultwarden: vaultwarden:
image: vaultwarden/server:1.30.1 image: vaultwarden/server:1.30.1
container_name: vaultwarden container_name: vaultwarden
restart: unless-stopped restart: no
networks: networks:
- homelab-network - homelab-network
- traefik-network - traefik-network
@@ -182,6 +188,10 @@ services:
# SSO disabled for browser extension and mobile app compatibility # SSO disabled for browser extension and mobile app compatibility
# - "traefik.http.routers.vaultwarden.middlewares=authelia@docker" # - "traefik.http.routers.vaultwarden.middlewares=authelia@docker"
- "traefik.http.services.vaultwarden.loadbalancer.server.port=80" - "traefik.http.services.vaultwarden.loadbalancer.server.port=80"
# Sablier configuration
- "sablier.enable=true"
- "sablier.group=${SERVER_HOSTNAME}-vaultwarden"
- "sablier.start-on-demand=true"
# Authelia Redis - Session storage for Authelia # Authelia Redis - Session storage for Authelia
# No web UI - backend service # No web UI - backend service
# authelia-redis: # authelia-redis:

View File

@@ -1,45 +1,55 @@
# Ports in Use # Ports in Use
This document tracks all ports used by services in the AI-Homelab. Update this document whenever services are added or ports are changed. This document tracks all ports used by services in the EZ-Homelab. Update this document whenever services are added or ports are changed.
## Core Stack ([core.yml](../docker-compose/core.yml)) | Stack | Service | External Port | Internal Port | Protocol | Purpose |
|-------|---------|---------------|---------------|----------|---------|
| Service | Port | Protocol | Purpose | Internal Port | | **Core** | [Traefik](../service-docs/traefik.md) | 80 | 80 | TCP | HTTP (redirects to HTTPS) |
|---------|------|----------|---------|---------------| | **Core** | [Traefik](../service-docs/traefik.md) | 443 | 443 | TCP | HTTPS |
| [Traefik](../service-docs/traefik.md) | 80 | TCP | HTTP (redirects to HTTPS) | 80 | | **Core** | [Traefik](../service-docs/traefik.md) | 8080 | 8080 | TCP | Dashboard (protected) |
| [Traefik](../service-docs/traefik.md) | 443 | TCP | HTTPS | 443 | | **Infrastructure** | [Dockge](../service-docs/dockge.md) | 5001 | 5001 | TCP | Web UI |
| [Traefik](../service-docs/traefik.md) | 8080 | TCP | Dashboard (protected) | 8080 | | **Infrastructure** | [Pi-hole](../service-docs/pihole.md) | 53 | 53 | TCP/UDP | DNS |
| **Infrastructure** | [Docker Proxy](../service-docs/docker-proxy.md) | 127.0.0.1:2375 | 2375 | TCP | Docker API proxy |
## Infrastructure Stack ([infrastructure.yml](../docker-compose/infrastructure.yml)) | **Home Assistant** | [ESPHome](../service-docs/esphome.md) | 6052 | 6052 | TCP | Web UI |
| **Home Assistant** | [TasmoAdmin](../service-docs/tasmoadmin.md) | 8084 | 80 | TCP | Web UI |
| Service | Port | Protocol | Purpose | Internal Port | | **Home Assistant** | [MotionEye](../service-docs/motioneye.md) | 8765 | 8765 | TCP | Web UI |
|---------|------|----------|---------|---------------| | **Home Assistant** | [Node-RED](../service-docs/nodered.md) | 1880 | 1880 | TCP | Web UI |
| [Dockge](../service-docs/dockge.md) | 5001 | TCP | Web UI | 5001 | | **Home Assistant** | [Mosquitto](../service-docs/mosquitto.md) | 1883 | 1883 | TCP | MQTT |
| [Pi-hole](../service-docs/pihole.md) | 53 | TCP/UDP | DNS | 53 | | **Home Assistant** | [Mosquitto](../service-docs/mosquitto.md) | 9001 | 9001 | TCP | MQTT Websockets |
| [Docker Proxy](../service-docs/docker-proxy.md) | 127.0.0.1:2375 | TCP | Docker API proxy | 2375 | | **Media** | [Jellyfin](../service-docs/jellyfin.md) | 8096 | 8096 | TCP | Web UI |
| **Media** | [Calibre-Web](../service-docs/calibre-web.md) | 8083 | 8083 | TCP | Web UI |
## Home Assistant Stack ([homeassistant.yml](../docker-compose/homeassistant.yml)) | **Media Management** | [Sonarr](../service-docs/sonarr.md) | 8989 | 8989 | TCP | Web UI |
| **Media Management** | [Radarr](../service-docs/radarr.md) | 7878 | 7878 | TCP | Web UI |
| Service | Port | Protocol | Purpose | Internal Port | | **Media Management** | [Prowlarr](../service-docs/prowlarr.md) | 9696 | 9696 | TCP | Web UI |
|---------|------|----------|---------|---------------| | **Media Management** | [Readarr](../service-docs/readarr.md) | 8787 | 8787 | TCP | Web UI |
| [MotionEye](../service-docs/motioneye.md) | 8765 | TCP | Web UI | 8765 | | **Media Management** | [Lidarr](../service-docs/lidarr.md) | 8686 | 8686 | TCP | Web UI |
| [Mosquitto](../service-docs/mosquitto.md) | 1883 | TCP | MQTT | 1883 | | **Media Management** | [Lazylibrarian](../service-docs/lazylibrarian.md) | 5299 | 5299 | TCP | Web UI |
| [Mosquitto](../service-docs/mosquitto.md) | 9001 | TCP | MQTT Websockets | 9001 | | **Media Management** | [Mylar3](../service-docs/mylar3.md) | 8090 | 8090 | TCP | Web UI |
| **Media Management** | [Jellyseerr](../service-docs/jellyseerr.md) | 5055 | 5055 | TCP | Web UI |
## Monitoring Stack ([monitoring.yml](../docker-compose/monitoring.yml)) | **Media Management** | [Unmanic](../service-docs/unmanic.md) | 8888 | 8888 | TCP | Web UI |
| **Media Management** | [Tdarr Server](../service-docs/tdarr.md) | 8266 | 8266 | TCP | Web UI |
| Service | Port | Protocol | Purpose | Internal Port | | **Media Management** | [Tdarr Node](../service-docs/tdarr.md) | 8267 | 8267 | TCP | Worker port |
|---------|------|----------|---------|---------------| | **Media Management** | [Flaresolverr](../service-docs/flaresolverr.md) | 8191 | 8191 | TCP | HTTP proxy |
| [Prometheus](../service-docs/prometheus.md) | 9090 | TCP | Web UI/Metrics | 9090 | | **Monitoring** | [Prometheus](../service-docs/prometheus.md) | 9090 | 9090 | TCP | Web UI/Metrics |
| **Monitoring** | [Grafana](../service-docs/grafana.md) | 3000 | 3000 | TCP | Web UI |
## VPN Stack ([vpn.yml](../docker-compose/vpn.yml)) | **Monitoring** | [cAdvisor](../service-docs/cadvisor.md) | 8082 | 8080 | TCP | Web UI |
| **Monitoring** | [Uptime Kuma](../service-docs/uptime-kuma.md) | 3001 | 3001 | TCP | Web UI |
| Service | Port | Protocol | Purpose | Internal Port | | **Monitoring** | [Loki](../service-docs/loki.md) | 3100 | 3100 | TCP | Web UI |
|---------|------|----------|---------|---------------| | **Monitoring** | [Node Exporter](../service-docs/node-exporter.md) | 9100 | 9100 | TCP | Metrics |
| [Gluetun](../service-docs/gluetun.md) | 8888 | TCP | HTTP proxy | 8888 | | **Utilities** | [Backrest](../service-docs/backrest.md) | 9898 | 9898 | TCP | Web UI |
| [Gluetun](../service-docs/gluetun.md) | 8388 | TCP/UDP | Shadowsocks | 8388 | | **Utilities** | [Duplicati](../service-docs/duplicati.md) | 8200 | 8200 | TCP | Web UI |
| [Gluetun](../service-docs/gluetun.md) | 8081 | TCP | qBittorrent Web UI | 8080 | | **Utilities** | [Form.io](../service-docs/formio.md) | 3002 | 3001 | TCP | Web UI |
| [Gluetun](../service-docs/gluetun.md) | 6881 | TCP/UDP | qBittorrent | 6881 | | **Utilities** | [Vaultwarden](../service-docs/vaultwarden.md) | 80 | 80 | TCP | Internal port |
| **VPN** | [Gluetun](../service-docs/gluetun.md) | 8888 | 8888 | TCP | HTTP proxy |
| **VPN** | [Gluetun](../service-docs/gluetun.md) | 8388 | 8388 | TCP/UDP | Shadowsocks |
| **VPN** | [Gluetun](../service-docs/gluetun.md) | 8081 | 8080 | TCP | qBittorrent Web UI |
| **VPN** | [Gluetun](../service-docs/gluetun.md) | 6881 | 6881 | TCP/UDP | qBittorrent |
| **VPN** | [qBittorrent](../service-docs/qbittorrent.md) | N/A | N/A | N/A | Routed through Gluetun |
| **Productivity** | [DokuWiki](../service-docs/dokuwiki.md) | 80 | 80 | TCP | Internal port |
| **Productivity** | [Nextcloud](../service-docs/nextcloud.md) | 80 | 80 | TCP | Internal port |
| **Productivity** | [Gitea](../service-docs/gitea.md) | 3010 | 3000 | TCP | Web UI |
| **Productivity** | [MinIO](../service-docs/minio.md) | 9000 | 9000 | TCP | API |
| **Productivity** | [MinIO](../service-docs/minio.md) | 9001 | 9001 | TCP | Web UI |
## Port Range Reference ## Port Range Reference
@@ -51,12 +61,13 @@ This document tracks all ports used by services in the AI-Homelab. Update this d
## Common Port Conflicts ## Common Port Conflicts
- **Port 80/443**: Used by Traefik for HTTP/HTTPS - **Port 80**: Used by Traefik for HTTP (conflicts with internal services only)
- **Port 3000**: Used by Grafana
- **Port 3001**: Used by Uptime Kuma
- **Port 8888**: Used by Gluetun HTTP proxy
- **Port 53**: Used by Pi-hole for DNS - **Port 53**: Used by Pi-hole for DNS
- **Port 2375**: Used by Docker Proxy (localhost only) - **Port 2375**: Used by Docker Proxy (localhost only)
- **Port 5001**: Used by Dockge - **Port 5001**: Used by Dockge
- **Port 5432**: Used by PostgreSQL
- **Port 6379**: Used by Redis
- **Port 8080**: Used by Traefik dashboard - **Port 8080**: Used by Traefik dashboard
- **Port 9090**: Used by Prometheus - **Port 9090**: Used by Prometheus
@@ -88,4 +99,4 @@ This document should be updated whenever:
Run this command to find all port mappings in compose files: Run this command to find all port mappings in compose files:
```bash ```bash
grep -r "ports:" docker-compose/ | grep -v "^#" | sort grep -r "ports:" docker-compose/ | grep -v "^#" | sort
``` ```

View File

@@ -470,47 +470,6 @@ perform_deployment() {
if [ "$SETUP_STACKS" = true ]; then if [ "$SETUP_STACKS" = true ]; then
setup_stacks_for_dockge setup_stacks_for_dockge
fi fi
# Deploy Dokuwiki (always deployed as it's part of the base setup)
deployed_count=3 # Dockge is always deployed
[ "$DEPLOY_CORE" = true ] && deployed_count=$((deployed_count + 1))
[ "$DEPLOY_INFRASTRUCTURE" = true ] && deployed_count=$((deployed_count + 1))
[ "$DEPLOY_DASHBOARDS" = true ] && deployed_count=$((deployed_count + 1))
step_num=$((deployed_count + 1))
log_info "Step $step_num: Deploying Dokuwiki wiki platform..."
log_info " - DokuWiki (File-based wiki with pre-configured content)"
echo ""
# Create Dokuwiki directory
mkdir -p /opt/stacks/dokuwiki/config
# Copy Dokuwiki compose file
cp "$REPO_DIR/config-templates/dokuwiki/docker-compose.yml" /opt/stacks/dokuwiki/docker-compose.yml
# Replace domain placeholders in Dokuwiki
sed -i "s/\${DOMAIN}/${DOMAIN}/g" /opt/stacks/dokuwiki/docker-compose.yml
# Copy pre-configured Dokuwiki config, content, and keys
if [ -d "$REPO_DIR/config-templates/dokuwiki/conf" ]; then
cp -r "$REPO_DIR/config-templates/dokuwiki/conf" /opt/stacks/dokuwiki/config/
fi
if [ -d "$REPO_DIR/config-templates/dokuwiki/data" ]; then
cp -r "$REPO_DIR/config-templates/dokuwiki/data" /opt/stacks/dokuwiki/config/
fi
if [ -d "$REPO_DIR/config-templates/dokuwiki/keys" ]; then
cp -r "$REPO_DIR/config-templates/dokuwiki/keys" /opt/stacks/dokuwiki/config/
fi
# Set proper ownership for Dokuwiki config
sudo chown -R 1000:1000 /opt/stacks/dokuwiki/config
# Deploy Dokuwiki
cd /opt/stacks/dokuwiki
docker compose up -d
log_success "Dokuwiki deployed with pre-configured content"
echo ""
} }
# Setup stacks for Dockge function # Setup stacks for Dockge function