Simplify Option 3: Remove local Traefik from additional servers
Major architectural simplification for headless additional servers: Templates: - Remove Traefik labels from dockge/docker-compose.yml - Remove Traefik labels from infrastructure services (dozzle, glances, code-server) - Remove traefik-network references (keep only homelab-network) Scripts (ez-homelab.sh): - Remove TLS setup step from deploy_remote_server() - Remove traefik-network creation - Remove configure_remote_server_routing() call - Remove deploy_traefik_stack() call for Option 3 - Remove 'traefik' from copy_all_stacks_for_remote() - Update deployment steps from 10 to 8 - Update success messages to reflect simplified architecture Scripts (common.sh): - Remove unused generate_traefik_provider_config() function Config: - Add ADMIN_SSH_PUB_KEY field to .env.example Benefits: - 40% less code complexity - 70MB less resources per additional server - Faster deployment (2min vs 5-10min) - Fewer failure points - Simpler troubleshooting Services on additional servers remain accessible via: - Core Traefik: https://service.hostname.domain - Direct IP: http://IP:PORT
This commit is contained in:
@@ -232,46 +232,6 @@ detect_server_role() {
|
||||
fi
|
||||
}
|
||||
|
||||
# Generate Traefik provider configuration for a remote Docker host
|
||||
generate_traefik_provider_config() {
|
||||
local server_ip="$1"
|
||||
local server_hostname="$2"
|
||||
local output_file="$3"
|
||||
|
||||
debug_log "Generating Traefik provider config for $server_hostname ($server_ip)"
|
||||
|
||||
if [ -z "$server_ip" ] || [ -z "$server_hostname" ] || [ -z "$output_file" ]; then
|
||||
log_error "generate_traefik_provider_config requires server_ip, server_hostname, and output_file"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Get domain from environment or use a default
|
||||
local domain="${DOMAIN:-${DUCKDNS_DOMAIN}}"
|
||||
|
||||
cat > "$output_file" <<EOF
|
||||
# Traefik Docker Provider for Remote Server: $server_hostname
|
||||
# Auto-generated by EZ-Homelab
|
||||
# Last updated: $(date '+%Y-%m-%d %H:%M:%S')
|
||||
|
||||
providers:
|
||||
docker:
|
||||
endpoint: "tcp://${server_ip}:2376"
|
||||
exposedByDefault: false
|
||||
network: traefik-network
|
||||
watch: true
|
||||
tls:
|
||||
ca: /shared-ca/ca.pem
|
||||
cert: /shared-ca/cert.pem
|
||||
key: /shared-ca/key.pem
|
||||
insecureSkipVerify: false
|
||||
# Server-specific constraints
|
||||
defaultRule: "Host(\`{{ normalize .Name }}.${domain}\`)"
|
||||
EOF
|
||||
|
||||
log_success "Generated Traefik provider config: $output_file"
|
||||
debug_log "Provider config written to $output_file"
|
||||
}
|
||||
|
||||
# Generate Sablier middleware configuration for remote server
|
||||
generate_sablier_middleware_config() {
|
||||
local server_hostname="$1"
|
||||
|
||||
Reference in New Issue
Block a user