- ADD_CHAIN138_TO_LEDGER_LIVE: Ledger form done; public code review repo bis-innovations/LedgerLive; init/push commands - CONTRACT_DEPLOYMENT_RUNBOOK: Chain 138 gas price 1 gwei, 36-addr check, TransactionMirror workaround - CONTRACT_*: AddressMapper, MirrorManager deployed 2026-02-12; 36-address on-chain check - NEXT_STEPS_FOR_YOU: Ledger done; steps completable now (no LAN); run-completable-tasks-from-anywhere - MASTER_INDEX, OPERATOR_OPTIONAL, SMART_CONTRACTS_INVENTORY_SIMPLE: updates - LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE: bis-innovations/LedgerLive reference Co-authored-by: Cursor <cursoragent@cursor.com>
4.9 KiB
Fix 502 Bad Gateway Error - Complete Guide
Last Updated: 2026-01-31
Document Version: 1.0
Status: Active Documentation
Date: 2026-01-18
Status: ⚠️ Action Required
Current Situation
The explorer is showing 502 Bad Gateway errors because:
- NPMplus is still routing to port 80 (nginx on VMID 5000)
- Nginx cannot reach Blockscout on port 4000 (Blockscout may not be running or not accessible)
Solution Options
Option 1: Direct Route (Recommended)
Configure Blockscout to be network-accessible on port 4000, then update NPMplus to route directly to it.
Steps:
- Fix Blockscout network access (see below)
- Update NPMplus configuration (see below)
Benefits:
- Removes nginx proxy layer
- Lower latency
- Simpler architecture
Option 2: Fix Nginx Proxy (Alternative)
If Blockscout cannot be made network-accessible, fix the nginx configuration on VMID 5000 to properly proxy to Blockscout.
Steps:
- Check Blockscout service is running
- Verify Blockscout is listening on localhost:4000
- Fix nginx configuration if needed
Option 1: Direct Route - Implementation
Step 1: Fix Blockscout Network Access
From Proxmox host, run:
cd /home/intlc/projects/proxmox
./scripts/fix-blockscout-network-access.sh
Or manually check:
# Check Blockscout status
pct exec 5000 -- systemctl status blockscout.service
# Check port listening
pct exec 5000 -- ss -tlnp | grep :4000
# Test localhost access
pct exec 5000 -- curl -I http://127.0.0.1:4000/api/v2/stats
If Blockscout is only on localhost (127.0.0.1:4000):
For Docker containers:
# Check docker-compose.yml or port bindings
pct exec 5000 -- docker ps --format '{{.Names}} {{.Ports}}' | grep blockscout
# Check container configuration
pct exec 5000 -- docker inspect <blockscout-container> | grep -i port
# Update docker-compose.yml to bind to 0.0.0.0:4000:4000 (not 127.0.0.1:4000:4000)
# Restart container
For systemd services:
# Check service file
pct exec 5000 -- systemctl cat blockscout.service
# Update environment variables to bind to 0.0.0.0:4000
# Restart service
pct exec 5000 -- systemctl restart blockscout.service
Step 2: Verify Network Access
From any machine on the network:
curl -I http://192.168.11.140:4000/api/v2/stats
Should return HTTP 200.
Step 3: Update NPMplus
Via Web UI:
- Log into NPMplus:
https://192.168.0.166:81 - Find
explorer.d-bis.orgproxy host - Update Forward Port:
80→4000 - Save changes
- Wait 30 seconds for reload
Or use script:
cd /home/intlc/projects/proxmox
./scripts/apply-direct-blockscout-route.sh
Option 2: Fix Nginx Proxy - Implementation
If direct route is not possible, fix nginx on VMID 5000:
Step 1: Check Blockscout is Running
pct exec 5000 -- systemctl status blockscout.service
pct exec 5000 -- curl -I http://127.0.0.1:4000/api/v2/stats
Step 2: Check Nginx Configuration
pct exec 5000 -- nginx -t
pct exec 5000 -- cat /etc/nginx/sites-enabled/blockscout
Ensure nginx is configured to proxy to http://127.0.0.1:4000.
Step 3: Restart Nginx
pct exec 5000 -- systemctl restart nginx
Step 4: Verify
curl -I https://explorer.d-bis.org/api/v2/stats
Should return HTTP 200.
Quick Diagnostic Commands
Run these to diagnose the issue:
# Check Blockscout service
pct exec 5000 -- systemctl status blockscout.service
# Check port 4000
pct exec 5000 -- ss -tlnp | grep :4000
# Test localhost
pct exec 5000 -- curl -I http://127.0.0.1:4000/api/v2/stats
# Test network (from Proxmox host)
curl -I http://192.168.11.140:4000/api/v2/stats
# Check nginx
pct exec 5000 -- systemctl status nginx
pct exec 5000 -- nginx -t
# Test current route (via NPMplus)
curl -I https://explorer.d-bis.org/api/v2/stats
Status Summary
Current State:
- ❌ Blockscout not accessible on port 4000 from network
- ❌ NPMplus still routing to port 80
- ❌ Getting 502 errors
Required Actions:
- ✅ Fix Blockscout network access (port 4000)
- ✅ Update NPMplus configuration (port 80 → 4000)
After Fix:
- ✅ Blockscout accessible on port 4000
- ✅ NPMplus routing directly to port 4000
- ✅ No more 502 errors
Related Scripts
scripts/fix-blockscout-network-access.sh- Fix Blockscout network accessscripts/verify-blockscout-port-4000.sh- Verify port 4000 accessibilityscripts/apply-direct-blockscout-route.sh- Apply NPMplus updatescripts/diagnose-explorer-502-error.sh- Comprehensive diagnostics
Next Steps
- Run diagnostic:
./scripts/fix-blockscout-network-access.sh - Fix Blockscout: Configure it to listen on 0.0.0.0:4000
- Verify network access:
curl -I http://192.168.11.140:4000/api/v2/stats - Update NPMplus: Change port from 80 to 4000
- Test:
curl -I https://explorer.d-bis.org/api/v2/stats