Fix remote server Traefik configuration

- Add ports 80/443 to remote Traefik template
- Enable API access (insecure=true) for debugging
- Update configure_remote_server_routing to use HTTP-only config
  - Change entrypoint from websecure to web
  - Remove TLS cert resolver references
  - Remove authelia middleware references
- Replace Docker TLS provider with manual HTTP routes
  - Core Traefik now uses file provider with direct URLs
  - Fixes 404/gateway timeout errors on remote services
  - Routes HTTPS from core to HTTP on remote servers
- Fix port in routes (dozzle uses 8085, not 8082)

Resolves issues with remote server service accessibility.
This commit is contained in:
Kelin
2026-02-07 20:43:34 -05:00
parent 63a837f8e9
commit 72d3d8b38f
3 changed files with 127 additions and 28 deletions

View File

@@ -1900,32 +1900,62 @@ configure_remote_server_routing() {
local server_name="$SERVER_HOSTNAME"
# Update dockge with server-specific subdomain
# Update dockge with server-specific subdomain and HTTP-only configuration
if [ -f "/opt/dockge/docker-compose.yml" ]; then
sed -i "s/Host(\`dockge\.kelinreij\.duckdns\.org\`)/Host(\`dockge.${server_name}.kelinreij.duckdns.org\`)/" /opt/dockge/docker-compose.yml 2>/dev/null
sed -i "s/Host(\`dockge\.\${DOMAIN}\`)/Host(\`dockge.${server_name}.kelinreij.duckdns.org\`)/" /opt/dockge/docker-compose.yml 2>/dev/null
sed -i "s/'traefik.enable=false'/'traefik.enable=true'/" /opt/dockge/docker-compose.yml 2>/dev/null
log_info "✓ Dockge: dockge.${server_name}.kelinreij.duckdns.org"
# Change to web entrypoint (HTTP-only for remote servers)
sed -i "s/entrypoints=websecure/entrypoints=web/" /opt/dockge/docker-compose.yml 2>/dev/null
# Remove TLS cert resolver (not needed for remote)
sed -i "/traefik.http.routers.dockge.tls.certresolver/d" /opt/dockge/docker-compose.yml 2>/dev/null
# Remove authelia middleware (not available on remote)
sed -i "/traefik.http.routers.dockge.middlewares=authelia@docker/d" /opt/dockge/docker-compose.yml 2>/dev/null
log_info "✓ Dockge: dockge.${server_name}.kelinreij.duckdns.org (HTTP)"
fi
# Update infrastructure services (dozzle, glances)
# Update infrastructure services (dozzle, glances) with HTTP-only configuration
if [ -f "/opt/stacks/infrastructure/docker-compose.yml" ]; then
sed -i "s/Host(\`dozzle\.[^.]*\.kelinreij\.duckdns\.org\`)/Host(\`dozzle.${server_name}.kelinreij.duckdns.org\`)/" /opt/stacks/infrastructure/docker-compose.yml 2>/dev/null
sed -i "s/Host(\`glances\.[^.]*\.kelinreij\.duckdns\.org\`)/Host(\`glances.${server_name}.kelinreij.duckdns.org\`)/" /opt/stacks/infrastructure/docker-compose.yml 2>/dev/null
log_info "✓ Dozzle: dozzle.${server_name}.kelinreij.duckdns.org"
log_info "✓ Glances: glances.${server_name}.kelinreij.duckdns.org"
# Update hostnames
sed -i "s/Host(\`dozzle\.\${DOMAIN}\`)/Host(\`dozzle.${server_name}.kelinreij.duckdns.org\`)/" /opt/stacks/infrastructure/docker-compose.yml 2>/dev/null
sed -i "s/Host(\`glances\.\${DOMAIN}\`)/Host(\`glances.${server_name}.kelinreij.duckdns.org\`)/" /opt/stacks/infrastructure/docker-compose.yml 2>/dev/null
# Change to web entrypoint (HTTP-only for remote servers)
sed -i "s/traefik.http.routers.dozzle.entrypoints=websecure/traefik.http.routers.dozzle.entrypoints=web/" /opt/stacks/infrastructure/docker-compose.yml 2>/dev/null
sed -i "s/traefik.http.routers.glances.entrypoints=websecure/traefik.http.routers.glances.entrypoints=web/" /opt/stacks/infrastructure/docker-compose.yml 2>/dev/null
# Remove TLS configuration
sed -i "/traefik.http.routers.dozzle.tls=/d" /opt/stacks/infrastructure/docker-compose.yml 2>/dev/null
sed -i "/traefik.http.routers.glances.tls=/d" /opt/stacks/infrastructure/docker-compose.yml 2>/dev/null
log_info "✓ Dozzle: dozzle.${server_name}.kelinreij.duckdns.org (HTTP)"
log_info "✓ Glances: glances.${server_name}.kelinreij.duckdns.org (HTTP)"
# Disable sablier routing (no web UI)
sed -i "s/'traefik.enable=true'/'traefik.enable=false'/g" /opt/stacks/sablier/docker-compose.yml 2>/dev/null
log_info "✓ Sablier: Traefik disabled (no web UI)"
fi
# Update Traefik dashboard route
# Update Traefik dashboard route to use HTTP
if [ -f "/opt/stacks/traefik/dynamic/routes.yml" ]; then
sed -i "s/Host(\`traefik\.[^.]*\.kelinreij\.duckdns\.org\`)/Host(\`traefik.${server_name}.kelinreij.duckdns.org\`)/" /opt/stacks/traefik/dynamic/routes.yml 2>/dev/null
log_info "✓ Traefik Dashboard: traefik.${server_name}.kelinreij.duckdns.org"
cat > "/opt/stacks/traefik/dynamic/routes.yml" <<EOF
# Traefik Dynamic Routes for Remote Server
# Auto-generated by EZ-Homelab
#
# This file is watched by Traefik and reloaded automatically
# Add custom routes here if needed
http:
routers:
traefik-dashboard:
rule: "Host(\`traefik.${server_name}.kelinreij.duckdns.org\`)"
entryPoints:
- web
service: api@internal
EOF
log_info "✓ Traefik Dashboard: traefik.${server_name}.kelinreij.duckdns.org (HTTP)"
fi
log_success "Server-specific routing configured"
log_success "Server-specific routing configured (HTTP-only for remote servers)"
}
# Copy all stacks for remote server (except core)
@@ -2010,8 +2040,8 @@ deploy_traefik_stack() {
# Create placeholder routes.yml file in dynamic directory
if [ ! -f "$traefik_dir/dynamic/routes.yml" ]; then
log_info "Creating placeholder routes.yml..."
cat > "$traefik_dir/dynamic/routes.yml" <<'ROUTESYML'
log_info "Creating Traefik dashboard route for remote server..."
cat > "$traefik_dir/dynamic/routes.yml" <<EOF
# Traefik Dynamic Routes for Remote Server
# Auto-generated by EZ-Homelab
#
@@ -2019,11 +2049,14 @@ deploy_traefik_stack() {
# Add custom routes here if needed
http:
routers: {}
services: {}
middlewares: {}
ROUTESYML
log_success "Created routes.yml"
routers:
traefik-dashboard:
rule: "Host(\`traefik.${SERVER_HOSTNAME}.kelinreij.duckdns.org\`)"
entryPoints:
- web
service: api@internal
EOF
log_success "Created routes.yml with dashboard route"
fi
# Verify docker-compose.yml exists