#!/usr/bin/env bash set -euo pipefail # Load IP configuration SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" source "${PROJECT_ROOT}/config/ip-addresses.conf" 2>/dev/null || true # Complete fix for all issues: Explorer 502 + RPC peer connectivity # Usage: Run from Proxmox host: ./fix-all-issues-complete.sh set -e echo "==========================================" echo "Fix All Issues - Complete" echo "==========================================" echo "" # Part 1: Fix Explorer echo "==========================================" echo "PART 1: Fixing Explorer 502 Errors" echo "==========================================" echo "" ./scripts/fix-blockscout-nginx-complete.sh echo "" echo "==========================================" echo "PART 2: Analyzing RPC Node Peer Counts" echo "==========================================" echo "" ./scripts/analyze-all-rpc-peers.sh echo "" echo "==========================================" echo "PART 3: Fixing ThirdWeb Peer Connectivity" echo "==========================================" echo "" ./scripts/fix-thirdweb-peer-connectivity.sh echo "" echo "==========================================" echo "Complete Fix Summary" echo "==========================================" echo "" # Final verification echo "=== Final Verification ===" echo "" # Test explorer API EXTERNAL_TEST=$(curl -s -o /dev/null -w '%{http_code}' --connect-timeout 5 "https://explorer.d-bis.org/api/v2/stats" 2>/dev/null || echo "000") if [ "$EXTERNAL_TEST" = "200" ]; then echo "✅ Explorer API: WORKING (HTTP $EXTERNAL_TEST)" else echo "❌ Explorer API: NOT WORKING (HTTP $EXTERNAL_TEST)" fi # Check peer counts echo "" echo "Checking peer counts..." # Note: ThirdWeb RPC IPs (240-242) not yet in config for ip in ${RPC_THIRDWEB_PRIMARY:-192.168.11.240} ${RPC_THIRDWEB_1:-${RPC_THIRDWEB_1:-${RPC_THIRDWEB_1:-${RPC_THIRDWEB_1:-192.168.11.241}}}} ${RPC_THIRDWEB_2:-${RPC_THIRDWEB_2:-${RPC_THIRDWEB_2:-${RPC_THIRDWEB_2:-192.168.11.242}}}}; do PEER_RESPONSE=$(curl -s -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":1}' http://$ip:8545 2>/dev/null || echo "") if [ -n "$PEER_RESPONSE" ]; then PEER_HEX=$(echo "$PEER_RESPONSE" | grep -o '"result":"[^"]*"' | cut -d'"' -f4) if [ -n "$PEER_HEX" ]; then PEER_NUM=$(printf "%d" $PEER_HEX 2>/dev/null || echo "0") if [ "$PEER_NUM" -ge 5 ]; then echo "✅ $ip: $PEER_NUM peers (Good)" elif [ "$PEER_NUM" -ge 3 ]; then echo "⚠️ $ip: $PEER_NUM peers (Acceptable)" else echo "❌ $ip: $PEER_NUM peers (Low - should be 5-7)" fi fi fi done echo "" echo "==========================================" echo "Complete!" echo "=========================================="