diff --git a/docker-compose/traefik/docker-compose.yml b/docker-compose/traefik/docker-compose.yml index 3825088..33937de 100644 --- a/docker-compose/traefik/docker-compose.yml +++ b/docker-compose/traefik/docker-compose.yml @@ -10,7 +10,7 @@ services: restart: unless-stopped command: - '--api.dashboard=true' - - '--api.insecure=false' + - '--api.insecure=true' # Allow API access on port 8080 - '--providers.docker=true' - '--providers.docker.exposedbydefault=false' - '--providers.docker.network=traefik-network' @@ -23,6 +23,8 @@ services: environment: - TZ=America/New_York ports: + - '80:80' # HTTP entrypoint + - '443:443' # HTTPS entrypoint - '8080:8080' # Dashboard (optional, for debugging) volumes: - ./config:/config diff --git a/scripts/common.sh b/scripts/common.sh index 1ea0d10..f684589 100644 --- a/scripts/common.sh +++ b/scripts/common.sh @@ -308,7 +308,7 @@ EOF debug_log "Sablier middleware config written to $output_file" } -# Register remote server with core Traefik +# Register remote server with core Traefik using manual HTTP routes add_remote_server_to_traefik() { local server_ip="$1" local server_hostname="$2" @@ -334,14 +334,78 @@ add_remote_server_to_traefik() { mkdir -p "$traefik_dynamic_dir" fi - # Generate provider configuration - local provider_file="${traefik_dynamic_dir}/docker-provider-${server_hostname}.yml" - generate_traefik_provider_config "$server_ip" "$server_hostname" "$provider_file" + # Generate manual HTTP routes for remote server services + # This uses the file provider with direct service URLs instead of Docker provider + local routes_file="${traefik_dynamic_dir}/${server_hostname}-server-routes.yml" - # Generate Sablier middleware configuration + cat > "$routes_file" </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" < "$traefik_dir/dynamic/routes.yml" <<'ROUTESYML' + log_info "Creating Traefik dashboard route for remote server..." + cat > "$traefik_dir/dynamic/routes.yml" <