- 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.
7.4 KiB
7.4 KiB
Deployment Checklist - RPC Translator Service
Use this checklist to deploy the RPC Translator service to VMIDs 2400-2402.
Pre-Deployment Requirements
- Redis VMID 106 (192.168.11.110) deployed and accessible
- Web3Signer VMID 107 (192.168.11.111) deployed and accessible
- Vault VMID 108 (192.168.11.112) deployed and accessible (optional)
- SSH access to VMIDs 2400-2402, 106, 107, 108
- Node.js 20 LTS installed on target VMIDs
- Besu nodes running on VMIDs 2400-2402
Phase 1: Supporting Services
Redis Setup (VMID 106, IP: 192.168.11.110)
- Deploy Redis VMID 106
- Configure Redis IP: 192.168.11.110
- Configure Redis with appropriate IP binding (allow translator VMIPs: 240-242)
- Set Redis password (if required, recommended for production)
- Test Redis connectivity from translator VMIDs (2400-2402)
- Verify Redis is accessible on port 6379
Web3Signer Setup (VMID 107, IP: 192.168.11.111)
- Deploy Web3Signer VMID 107
- Configure Web3Signer IP: 192.168.11.111
- Configure Web3Signer with wallet keys
- Restrict access to translator VMIPs only (240-242)
- Verify Web3Signer is accessible on port 9000
- Test Web3Signer health endpoint:
curl http://192.168.11.111:9000/upcheck
Vault Setup (VMID 108, IP: 192.168.11.112) (Optional)
- Deploy Vault VMID 108
- Configure Vault IP: 192.168.11.112
- Initialize Vault (if not already done)
- Configure Vault to listen on 192.168.11.112:8200
- Create AppRole for translator service
- Create translator policy in Vault
- Store translator configuration in Vault
- Get AppRole credentials (role_id, secret_id)
- Document Vault credentials securely
Phase 2: Translator Deployment
For Each VMID (2400, 2401, 2402)
1. Initial Setup
- SSH to VMID:
ssh root@192.168.11.24X - Verify Node.js 20 is installed:
node --version - Install pnpm (if needed):
npm install -g pnpm - Create deployment directory:
mkdir -p /opt/rpc-translator-138
2. Deploy Application
Option A: Using deployment script (recommended)
- Run from project root:
./scripts/deploy-to-vmid.sh 24XX 192.168.11.24X
Option B: Manual deployment
- Copy project files to VMID
- Copy to:
/opt/rpc-translator-138/ - Install dependencies:
cd /opt/rpc-translator-138 && pnpm install --prod - Build TypeScript:
pnpm run build
3. Configuration
- Copy env template:
cp env.template .env - Edit .env file with actual values:
BESU_HTTP_URLS=http://127.0.0.1:8545BESU_WS_URLS=ws://127.0.0.1:8546WEB3SIGNER_URL=http://192.168.11.111:9000(VMID 107)REDIS_HOST=192.168.11.110(VMID 106)REDIS_PORT=6379REDIS_PASSWORD=<password-if-set>VAULT_ADDR=http://192.168.11.112:8200(VMID 108, if using Vault)VAULT_ROLE_ID=<role-id>(if using Vault)VAULT_SECRET_ID=<secret-id>(if using Vault)WALLET_ALLOWLIST=<comma-separated-addresses>
- Validate configuration:
node scripts/validate-config.js
4. Systemd Service
- Copy systemd service file:
cp systemd/rpc-translator-138.service /etc/systemd/system/ - Reload systemd:
systemctl daemon-reload - Enable service:
systemctl enable rpc-translator-138.service - Start service:
systemctl start rpc-translator-138.service - Check status:
systemctl status rpc-translator-138.service - Check logs:
journalctl -u rpc-translator-138.service -f
5. Verification
- Test health endpoint:
curl http://localhost:9545/health - Test RPC endpoint:
curl -X POST http://localhost:9545 -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}' - Verify service is listening on port 9545:
netstat -tulpn | grep 9545 - Verify service is listening on port 9546:
netstat -tulpn | grep 9546
Phase 3: Edge Routing Configuration
Update Cloudflare Tunnel or Nginx
- Identify current edge routing configuration
- Update routing to forward:
- External
:8545→2400:9545, 2401:9545, 2402:9545 - External
:8546→2400:9546, 2401:9546, 2402:9546
- External
- Test external endpoint connectivity
- Verify load balancing is working
Phase 4: Integration Testing
Basic Functionality
- Test
eth_chainIdreturns 138 (0x8a) - Test
eth_blockNumberreturns current block - Test
eth_gasPricereturns gas price - Test
eth_getTransactionCountreturns nonce - Test
eth_estimateGasworks
WebSocket Testing
- Connect to WebSocket endpoint
- Test
eth_subscribetonewHeads - Verify subscription messages are received
- Test
eth_unsubscribeworks
Transaction Testing
- Prepare test transaction with allowlisted address
- Test
eth_sendTransaction(should be intercepted) - Verify transaction is signed via Web3Signer
- Verify transaction is submitted as
eth_sendRawTransaction - Verify transaction hash is returned
- Verify transaction appears in Besu
Nonce Management Testing
- Send 5-10 concurrent transactions from same address
- Verify nonces are sequential (no collisions)
- Verify Redis locks are working
- Test nonce cache behavior
High Availability Testing
- Stop service on one VMID (2400)
- Verify traffic routes to remaining VMIDs (2401, 2402)
- Restart service on VMID 2400
- Verify load balancing resumes
- Test failover behavior
Phase 5: Monitoring and Maintenance
Monitoring Setup
- Set up log aggregation (if applicable)
- Configure health check monitoring
- Set up alerts for service failures
- Monitor Redis connection status
- Monitor Web3Signer connection status
- Monitor Vault connection status (if used)
Documentation
- Document all IP addresses and credentials (securely)
- Document service start/stop procedures
- Document troubleshooting steps
- Document rollback procedures
- Document key rotation procedures (if applicable)
Post-Deployment
- All three VMIDs (2400-2402) are running translator service
- Edge routing is configured and working
- All integration tests pass
- Monitoring is in place
- Documentation is complete
- Team is trained on operations
Troubleshooting Checklist
If issues occur:
- Check service status:
systemctl status rpc-translator-138.service - Check logs:
journalctl -u rpc-translator-138.service -n 100 - Verify Besu is running:
systemctl status besu-rpc.service - Test Besu connectivity:
curl http://127.0.0.1:8545 -X POST -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}' - Test Redis connectivity:
redis-cli -h 192.168.11.110 ping(VMID 106) - Test Web3Signer:
curl http://192.168.11.111:9000/upcheck(VMID 107) - Test Vault (if used):
vault status -address=http://192.168.11.112:8200(VMID 108) - Check firewall rules
- Verify .env configuration:
node scripts/validate-config.js - Check network connectivity between services
Rollback Procedure
If deployment fails:
- Stop translator service:
systemctl stop rpc-translator-138.service - Disable service:
systemctl disable rpc-translator-138.service - Revert edge routing to point to Besu directly
- Verify Besu is accessible
- Document issues for next deployment attempt