#!/usr/bin/env bash # Complete Deployment Script # Orchestrates all steps for direct public IP routing setup set -euo pipefail # Colors RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' CYAN='\033[0;36m' NC='\033[0m' log_info() { echo -e "${BLUE}[INFO]${NC} $1"; } log_success() { echo -e "${GREEN}[✓]${NC} $1"; } log_warn() { echo -e "${YELLOW}[⚠]${NC} $1"; } log_error() { echo -e "${RED}[✗]${NC} $1"; } log_step() { echo -e "${CYAN}[STEP]${NC} $1"; } SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" echo "" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "🚀 Complete Deployment - Direct Public IP Routing" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" # Step 1: Get Cloudflare Zone IDs log_step "Step 1: Get Cloudflare Zone IDs" echo "" log_info "Running zone ID lookup script..." if "$SCRIPT_DIR/get-cloudflare-zone-ids.sh"; then log_success "Zone IDs retrieved" echo "" log_warn "⚠️ Please add Zone IDs to .env file before continuing" read -p "Press Enter when Zone IDs are added to .env..." else log_error "Failed to get Zone IDs" exit 1 fi # Step 2: Update DNS Records log_step "Step 2: Update Cloudflare DNS Records" echo "" log_info "Running DNS update script..." if "$SCRIPT_DIR/update-all-dns-to-public-ip.sh"; then log_success "DNS records updated" else log_error "DNS update failed" exit 1 fi # Step 3: Verify DNS Resolution log_step "Step 3: Verify DNS Resolution" echo "" log_info "Waiting 30 seconds for DNS propagation..." sleep 30 log_info "Running DNS verification..." if "$SCRIPT_DIR/verify-dns-resolution.sh"; then log_success "DNS resolution verified" else log_warn "Some DNS records may not be ready yet" log_info "You can run verification again later:" log_info " ./scripts/verify-dns-resolution.sh" fi # Step 4: Generate ER605 NAT Configuration log_step "Step 4: ER605 NAT Configuration" echo "" log_info "Generating ER605 NAT rules..." "$SCRIPT_DIR/configure-er605-nat-rules.sh" echo "" log_warn "⚠️ Please configure ER605 NAT rules manually" log_info "See output above for NAT rule details" read -p "Press Enter when ER605 NAT rules are configured..." # Step 5: Deploy Nginx Configuration log_step "Step 5: Deploy Nginx Configuration" echo "" log_info "Deploying Nginx configuration to VMID 105..." if "$SCRIPT_DIR/deploy-complete-nginx-config.sh"; then log_success "Nginx configuration deployed" else log_error "Nginx deployment failed" exit 1 fi # Step 6: Obtain SSL Certificates log_step "Step 6: Obtain SSL Certificates" echo "" log_warn "⚠️ SSL certificates require:" log_info " 1. DNS records pointing to $PUBLIC_IP" log_info " 2. ER605 NAT rules configured" log_info " 3. Port 80 accessible from internet" echo "" read -p "Press Enter to continue with SSL certificate acquisition..." if "$SCRIPT_DIR/obtain-all-ssl-certificates.sh"; then log_success "SSL certificates obtained" else log_warn "Some certificates may have failed" log_info "You can retry later: ./scripts/obtain-all-ssl-certificates.sh" fi # Final Summary echo "" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" log_success "✅ Deployment Complete" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" log_info "📋 Next Steps:" echo " 1. ✅ DNS records updated" echo " 2. ⏳ ER605 NAT rules configured (manual)" echo " 3. ✅ Nginx configuration deployed" echo " 4. ⏳ SSL certificates obtained (may need retry)" echo "" log_info "🧪 Test endpoints:" echo " curl -X POST https://rpc-http-pub.d-bis.org \\" echo " -H 'Content-Type: application/json' \\" echo " -d '{\"jsonrpc\":\"2.0\",\"method\":\"eth_chainId\",\"params\":[],\"id\":1}'" echo "" log_info "📚 Documentation:" echo " • DNS Update Guide: docs/04-configuration/DNS_UPDATE_SCRIPT_GUIDE.md" echo " • ER605 NAT Config: scripts/configure-er605-nat-rules.sh output" echo " • Nginx Config: /etc/nginx/sites-available/public-services on VMID 105" echo ""