Fix multiserver deployment: domain in docker-provider and auto-disable remote Traefik

- Fix missing domain in docker provider defaultRule (use DOMAIN or DUCKDNS_DOMAIN)
- Add disable_traefik_on_remote_services() to strip routing labels from remote services
- Call disable function automatically during remote server deployment (Step 5.5)
- Remote services now properly accessed through core Traefik via docker provider
- Prevents errors: middleware/certresolver not found on remote Traefik

Resolves Traefik errors on remote servers where services had labels for
SSL/auth that only exist on core server.
This commit is contained in:
Kelin
2026-02-07 16:24:57 -05:00
parent 9fea40c8b5
commit 802a4d1ba0
2 changed files with 42 additions and 1 deletions

View File

@@ -245,6 +245,9 @@ generate_traefik_provider_config() {
return 1 return 1
fi fi
# Get domain from environment or use a default
local domain="${DOMAIN:-${DUCKDNS_DOMAIN}}"
cat > "$output_file" <<EOF cat > "$output_file" <<EOF
# Traefik Docker Provider for Remote Server: $server_hostname # Traefik Docker Provider for Remote Server: $server_hostname
# Auto-generated by EZ-Homelab # Auto-generated by EZ-Homelab
@@ -262,7 +265,7 @@ providers:
key: /shared-ca/key.pem key: /shared-ca/key.pem
insecureSkipVerify: false insecureSkipVerify: false
# Server-specific constraints # Server-specific constraints
defaultRule: "Host(\`{{ normalize .Name }}.${DUCKDNS_DOMAIN}\`)" defaultRule: "Host(\`{{ normalize .Name }}.${domain}\`)"
EOF EOF
log_success "Generated Traefik provider config: $output_file" log_success "Generated Traefik provider config: $output_file"

View File

@@ -1703,6 +1703,11 @@ deploy_remote_server() {
copy_all_stacks_for_remote copy_all_stacks_for_remote
echo "" echo ""
# Step 5.5: Disable Traefik on remote services (accessed via core)
log_info "Step 5.5: Configuring remote services for core Traefik access..."
disable_traefik_on_remote_services
echo ""
# Step 6: Deploy Dockge # Step 6: Deploy Dockge
log_info "Step 6: Deploying Dockge..." log_info "Step 6: Deploying Dockge..."
deploy_dockge deploy_dockge
@@ -1886,6 +1891,39 @@ deploy_sablier_stack() {
log_success "Sablier stack deployed at $sablier_dir" log_success "Sablier stack deployed at $sablier_dir"
} }
# Disable Traefik routing on remote server services
# Remote services are accessed through core Traefik via docker provider
disable_traefik_on_remote_services() {
debug_log "Disabling Traefik routing on remote server services"
log_info "Configuring services for remote server access..."
# Stacks that should NOT route through local Traefik
local config_files=(
"/opt/stacks/sablier/docker-compose.yml"
"/opt/stacks/infrastructure/docker-compose.yml"
"/opt/dockge/docker-compose.yml"
)
local modified_count=0
for config_file in "${config_files[@]}"; do
if [ -f "$config_file" ]; then
# Disable traefik.enable on all services
if sed -i "s/'traefik.enable=true'/'traefik.enable=false'/g" "$config_file" 2>/dev/null; then
modified_count=$((modified_count + 1))
debug_log "Disabled Traefik on $(basename $(dirname $config_file))"
fi
fi
done
if [ $modified_count -gt 0 ]; then
log_success "Disabled local Traefik routing on $modified_count service stacks"
log_info "Services will be accessed through core Traefik at https://service.${DOMAIN}"
else
log_warning "No service configurations were modified"
fi
}
# Copy all stacks for remote server (except core) # Copy all stacks for remote server (except core)
copy_all_stacks_for_remote() { copy_all_stacks_for_remote() {
debug_log "Copying all stacks for remote server" debug_log "Copying all stacks for remote server"