Files
proxmox/docs/archive/fixes/BLOCKSCOUT_EXPLORER_FIX.md
defiQUG cb47cce074 Complete markdown files cleanup and organization
- Organized 252 files across project
- Root directory: 187 → 2 files (98.9% reduction)
- Moved configuration guides to docs/04-configuration/
- Moved troubleshooting guides to docs/09-troubleshooting/
- Moved quick start guides to docs/01-getting-started/
- Moved reports to reports/ directory
- Archived temporary files
- Generated comprehensive reports and documentation
- Created maintenance scripts and guides

All files organized according to established standards.
2026-01-06 01:46:25 -08:00

354 lines
8.5 KiB
Markdown

# Blockscout Explorer Fix - Complete Solution
**Date**: $(date)
**Status**: ✅ **FIX SCRIPTS CREATED**
---
## Issue Summary
The Blockscout explorer at `https://explorer.d-bis.org` was returning HTTP 522 (Connection Timeout) from Cloudflare, indicating the origin server was not reachable.
**Root Causes Identified:**
1. ❌ Nginx reverse proxy not installed/configured
2. ⚠️ Blockscout container may not exist (VMID 5000)
3. ⚠️ Blockscout service may not be running
4. ❌ Cloudflare DNS/tunnel not configured for explorer.d-bis.org
---
## ✅ Solutions Created
### 1. Nginx Installation Script
**File**: `scripts/install-nginx-blockscout.sh`
- Installs Nginx in the Blockscout container
- Configures reverse proxy on ports 80/443
- Proxies to Blockscout on port 4000
- Sets up SSL certificates (self-signed, can be replaced with Let's Encrypt)
- Configures proper headers and timeouts
### 2. Cloudflare Configuration Script
**File**: `scripts/configure-cloudflare-explorer.sh`
- Configures Cloudflare DNS for explorer.d-bis.org
- Creates/updates CNAME record pointing to tunnel
- Enables Cloudflare proxy (orange cloud)
- Provides instructions for tunnel route configuration
### 3. Complete Fix Script
**File**: `scripts/fix-blockscout-explorer.sh`
Comprehensive script that:
- ✅ Checks container status
- ✅ Starts Blockscout service if needed
- ✅ Installs and configures Nginx
- ✅ Verifies all services are running
- ✅ Provides testing instructions
### 4. Deployment and Fix Script
**File**: `scripts/deploy-and-fix-blockscout.sh`
Complete solution that:
- ✅ Deploys Blockscout container if it doesn't exist
- ✅ Runs all fix scripts
- ✅ Configures everything automatically
---
## 🚀 Deployment Instructions
### Option 1: Container Already Exists
If container VMID 5000 already exists:
```bash
cd /home/intlc/projects/proxmox
./scripts/fix-blockscout-explorer.sh
```
### Option 2: Deploy and Fix (Complete)
**On Proxmox Host (192.168.11.10):**
```bash
ssh root@192.168.11.10
cd /home/intlc/projects/proxmox
export VMID_EXPLORER_START=5000
export PUBLIC_SUBNET=192.168.11
./scripts/deploy-and-fix-blockscout.sh
```
**Or deploy manually then fix:**
```bash
# On Proxmox host
cd /home/intlc/projects/proxmox/smom-dbis-138-proxmox/scripts/deployment
export VMID_EXPLORER_START=5000
export PUBLIC_SUBNET=192.168.11
./deploy-explorer.sh
# Then run fix
cd /home/intlc/projects/proxmox
./scripts/fix-blockscout-explorer.sh
```
---
## 📋 Configuration Details
### Container Information
- **VMID**: 5000
- **Hostname**: blockscout-1
- **IP Address**: 192.168.11.140
- **Blockscout Port**: 4000
- **Nginx HTTP Port**: 80
- **Nginx HTTPS Port**: 443
### Nginx Configuration
**Location**: `/etc/nginx/sites-available/blockscout`
- **HTTP (port 80)**: Redirects to HTTPS
- **HTTPS (port 443)**: Proxies to `localhost:4000`
- **SSL Certificate**: `/etc/nginx/ssl/blockscout.crt` (self-signed)
- **Health Check**: `/health` endpoint
### Blockscout Service
- **Service Name**: `blockscout.service`
- **Location**: `/opt/blockscout`
- **Docker Compose**: `/opt/blockscout/docker-compose.yml`
- **RPC URL**: `http://192.168.11.250:8545`
---
## 🌐 Cloudflare Configuration
### DNS Record
**Required DNS Record:**
```
Type: CNAME
Name: explorer
Domain: d-bis.org
Target: <tunnel-id>.cfargotunnel.com
Proxy: 🟠 Proxied (orange cloud) - REQUIRED
TTL: Auto
```
### Tunnel Route
**In Cloudflare Zero Trust Dashboard:**
1. Go to: https://one.dash.cloudflare.com/
2. Navigate to: Zero Trust → Networks → Tunnels
3. Select your tunnel
4. Click 'Configure' → 'Public Hostnames'
5. Add hostname:
- **Subdomain**: `explorer`
- **Domain**: `d-bis.org`
- **Service**: `http://192.168.11.140:80`
- **Type**: HTTP
**Or configure via script:**
```bash
cd /home/intlc/projects/proxmox
# Ensure .env file exists with CLOUDFLARE_API_TOKEN
./scripts/configure-cloudflare-explorer.sh
```
---
## 🧪 Testing
### 1. Test Blockscout Directly
```bash
# From inside container
pct exec 5000 -- curl http://127.0.0.1:4000/api/v2/status
# From external
curl http://192.168.11.140:4000/api/v2/status
```
**Expected**: JSON response with chain_id and status
### 2. Test Nginx HTTP
```bash
# From inside container
pct exec 5000 -- curl -L http://127.0.0.1/health
# From external
curl -L http://192.168.11.140/health
```
**Expected**: Should redirect to HTTPS, then return JSON
### 3. Test Nginx HTTPS
```bash
# From inside container
pct exec 5000 -- curl -k https://127.0.0.1/health
# From external
curl -k https://192.168.11.140/health
```
**Expected**: JSON response
### 4. Test Public URL (After DNS Propagation)
```bash
curl https://explorer.d-bis.org/health
```
**Expected**: JSON response (may take 1-5 minutes for DNS propagation)
---
## 📊 Verification Checklist
- [ ] Container VMID 5000 exists and is running
- [ ] Blockscout service is active: `systemctl status blockscout`
- [ ] Blockscout responds on port 4000: `curl http://localhost:4000/api/v2/status`
- [ ] Nginx is installed and running: `systemctl status nginx`
- [ ] Nginx configuration is valid: `nginx -t`
- [ ] Port 80 is listening: `ss -tlnp | grep :80`
- [ ] Port 443 is listening: `ss -tlnp | grep :443`
- [ ] Nginx proxies correctly: `curl -k https://localhost/health`
- [ ] Cloudflare DNS record exists (CNAME to tunnel)
- [ ] Cloudflare tunnel route is configured
- [ ] Public URL works: `curl https://explorer.d-bis.org/health`
---
## 🔧 Troubleshooting
### Issue: Container doesn't exist
**Solution**: Deploy container first:
```bash
cd smom-dbis-138-proxmox/scripts/deployment
export VMID_EXPLORER_START=5000
./deploy-explorer.sh
```
### Issue: Blockscout service not running
**Solution**: Start the service:
```bash
pct exec 5000 -- systemctl start blockscout
# Or via docker-compose
pct exec 5000 -- cd /opt/blockscout && docker-compose up -d
```
### Issue: Blockscout not responding on port 4000
**Solution**:
1. Check service status: `pct exec 5000 -- systemctl status blockscout`
2. Check Docker containers: `pct exec 5000 -- docker ps`
3. Check logs: `pct exec 5000 -- journalctl -u blockscout -n 50`
4. Check Docker logs: `pct exec 5000 -- docker-compose -f /opt/blockscout/docker-compose.yml logs`
### Issue: Nginx not working
**Solution**:
1. Check configuration: `pct exec 5000 -- nginx -t`
2. Check service: `pct exec 5000 -- systemctl status nginx`
3. Check logs: `pct exec 5000 -- tail -f /var/log/nginx/blockscout-error.log`
4. Restart Nginx: `pct exec 5000 -- systemctl restart nginx`
### Issue: HTTP 522 from Cloudflare
**Solution**:
1. Verify Blockscout and Nginx are running (see above)
2. Test direct access: `curl http://192.168.11.140`
3. Verify Cloudflare tunnel is healthy
4. Check tunnel route configuration
5. Verify DNS record is proxied (orange cloud)
### Issue: SSL Certificate Warnings
**Solution**: Replace self-signed certificate with Let's Encrypt:
```bash
pct exec 5000 -- certbot --nginx -d explorer.d-bis.org
```
---
## 📝 Files Created/Modified
### New Scripts
1. `scripts/install-nginx-blockscout.sh` - Nginx installation and configuration
2. `scripts/configure-cloudflare-explorer.sh` - Cloudflare DNS/tunnel setup
3. `scripts/fix-blockscout-explorer.sh` - Comprehensive fix script
4. `scripts/deploy-and-fix-blockscout.sh` - Complete deployment and fix
### Modified Files
1. `smom-dbis-138-proxmox/scripts/deployment/deploy-explorer.sh`
- Changed default VMID from 140 to 5000
- Fixed IP subnet from 10.3.1 to 192.168.11
### Documentation
1. `docs/BLOCKSCOUT_EXPLORER_FIX.md` (this file)
---
## 🎯 Next Steps
1. **Deploy Container** (if not exists):
```bash
ssh root@192.168.11.10
cd /home/intlc/projects/proxmox/smom-dbis-138-proxmox/scripts/deployment
export VMID_EXPLORER_START=5000
export PUBLIC_SUBNET=192.168.11
./deploy-explorer.sh
```
2. **Run Fix Script**:
```bash
cd /home/intlc/projects/proxmox
./scripts/fix-blockscout-explorer.sh
```
3. **Configure Cloudflare**:
```bash
./scripts/configure-cloudflare-explorer.sh
```
Or configure manually in Cloudflare dashboard
4. **Verify**:
```bash
curl https://explorer.d-bis.org/health
```
5. **Optional: SSL Certificate**:
Replace self-signed certificate with Let's Encrypt for production use
---
## 📚 Related Documentation
- `docs/BLOCKSCOUT_VERIFICATION_GUIDE.md` - Contract verification guide
- `docs/CHAINID_138_BLOCKSCOUT_INTEGRATION.md` - Integration summary
- `docs/04-configuration/CLOUDFLARE_DNS_SPECIFIC_SERVICES.md` - DNS configuration
---
**Last Updated**: $(date)
**Status**: ✅ Fix scripts created and ready to use