- 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.
259 lines
6.6 KiB
Markdown
259 lines
6.6 KiB
Markdown
# ThirdWeb RPC Node Setup Guide
|
|
|
|
This guide explains how to set up RPC node LXC containers optimized for ThirdWeb integration.
|
|
|
|
## Overview
|
|
|
|
ThirdWeb RPC nodes are Besu RPC nodes configured specifically for ThirdWeb SDK and dApp integration. They provide:
|
|
- Standard JSON-RPC endpoints (ETH, NET, WEB3)
|
|
- WebSocket support for real-time subscriptions
|
|
- CORS enabled for web applications
|
|
- Optimized transaction pool settings
|
|
- Extended API support (DEBUG, TRACE) for development
|
|
|
|
## Container Specifications
|
|
|
|
| VMID | Hostname | IP Address | Memory | CPU | Disk | Purpose |
|
|
|------|----------|------------|--------|-----|------|---------|
|
|
| 2400 | thirdweb-rpc-1 | 192.168.11.240 | 16GB | 4 cores | 200GB | Primary RPC Node |
|
|
| 2401 | thirdweb-rpc-2 | 192.168.11.241 | 16GB | 4 cores | 200GB | Secondary RPC Node |
|
|
| 2402 | thirdweb-rpc-3 | 192.168.11.242 | 16GB | 4 cores | 200GB | Tertiary RPC Node |
|
|
|
|
**Note**: VMIDs align with IP addresses - VMID 2400 = 192.168.11.240, etc.
|
|
|
|
## Quick Start
|
|
|
|
### 1. Run the Setup Script
|
|
|
|
```bash
|
|
cd /home/intlc/projects/proxmox
|
|
./scripts/setup-thirdweb-rpc-nodes.sh
|
|
```
|
|
|
|
Or with non-interactive mode:
|
|
|
|
```bash
|
|
NON_INTERACTIVE=1 ./scripts/setup-thirdweb-rpc-nodes.sh
|
|
```
|
|
|
|
### 2. Verify Containers
|
|
|
|
```bash
|
|
# Check container status
|
|
ssh root@192.168.11.10 "pct list | grep -E '240[0-2]'"
|
|
|
|
# Check Besu service status
|
|
ssh root@192.168.11.10 "pct exec 2400 -- systemctl status besu-rpc.service"
|
|
```
|
|
|
|
### 3. Test RPC Endpoints
|
|
|
|
```bash
|
|
# Test HTTP RPC
|
|
curl -X POST http://192.168.11.240:8545 \
|
|
-H 'Content-Type: application/json' \
|
|
--data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
|
|
|
# Test WebSocket (using wscat or similar)
|
|
wscat -c ws://192.168.11.240:8546
|
|
```
|
|
|
|
## Configuration Details
|
|
|
|
### ThirdWeb-Optimized Settings
|
|
|
|
The configuration (`config-rpc-thirdweb.toml`) includes:
|
|
|
|
- **Extended APIs**: ETH, NET, WEB3, DEBUG, TRACE
|
|
- **WebSocket Support**: Enabled on port 8546
|
|
- **CORS**: Enabled for all origins (`*`)
|
|
- **Transaction Pool**: Increased to 16,384 for high-volume operations
|
|
- **P2P Peers**: Increased to 50 for better connectivity
|
|
- **Timeout**: Extended to 60 seconds for complex operations
|
|
|
|
### Key Differences from Standard RPC
|
|
|
|
| Setting | Standard RPC | ThirdWeb RPC |
|
|
|---------|-------------|--------------|
|
|
| APIs | ETH, NET, WEB3 | ETH, NET, WEB3, DEBUG, TRACE |
|
|
| WebSocket | Optional | Enabled |
|
|
| TX Pool Size | 8,192 | 16,384 |
|
|
| Max Peers | 25 | 50 |
|
|
| RPC Timeout | Default (30s) | 60s |
|
|
|
|
## ThirdWeb Integration
|
|
|
|
### Using with ThirdWeb SDK
|
|
|
|
Configure ThirdWeb to use your custom RPC endpoint:
|
|
|
|
```javascript
|
|
import { ThirdwebSDK } from "@thirdweb-dev/sdk";
|
|
|
|
// HTTP RPC endpoint
|
|
const sdk = new ThirdwebSDK("http://192.168.11.240:8545", {
|
|
supportedChains: [138], // Your ChainID
|
|
});
|
|
|
|
// Or with WebSocket for subscriptions
|
|
const sdk = new ThirdwebSDK("ws://192.168.11.240:8546", {
|
|
supportedChains: [138],
|
|
});
|
|
```
|
|
|
|
### Environment Variables
|
|
|
|
```bash
|
|
# .env file
|
|
THIRDWEB_RPC_URL=http://192.168.11.240:8545
|
|
THIRDWEB_RPC_WS_URL=ws://192.168.11.240:8546
|
|
CHAIN_ID=138
|
|
```
|
|
|
|
### ThirdWeb Dashboard Configuration
|
|
|
|
1. Go to ThirdWeb Dashboard → Settings → Networks
|
|
2. Add Custom Network:
|
|
- **Network Name**: ChainID 138 (Custom)
|
|
- **RPC URL**: `http://192.168.11.240:8545`
|
|
- **Chain ID**: `138`
|
|
- **Currency Symbol**: Your token symbol
|
|
- **Block Explorer**: (Optional) Your explorer URL
|
|
|
|
## Maintenance
|
|
|
|
### Start/Stop Services
|
|
|
|
```bash
|
|
# Start Besu service
|
|
ssh root@192.168.11.10 "pct exec 2400 -- systemctl start besu-rpc.service"
|
|
|
|
# Stop Besu service
|
|
ssh root@192.168.11.10 "pct exec 2400 -- systemctl stop besu-rpc.service"
|
|
|
|
# Restart Besu service
|
|
ssh root@192.168.11.10 "pct exec 2400 -- systemctl restart besu-rpc.service"
|
|
```
|
|
|
|
### View Logs
|
|
|
|
```bash
|
|
# View recent logs
|
|
ssh root@192.168.11.10 "pct exec 2400 -- journalctl -u besu-rpc.service -n 100"
|
|
|
|
# Follow logs in real-time
|
|
ssh root@192.168.11.10 "pct exec 2400 -- journalctl -u besu-rpc.service -f"
|
|
```
|
|
|
|
### Monitor Performance
|
|
|
|
```bash
|
|
# Check metrics endpoint
|
|
curl http://192.168.11.240:9545/metrics
|
|
|
|
# Check container resource usage
|
|
ssh root@192.168.11.10 "pct exec 2400 -- top -bn1 | grep -E 'CPU|Mem'"
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Container Not Starting
|
|
|
|
```bash
|
|
# Check container status
|
|
ssh root@192.168.11.10 "pct status 2400"
|
|
|
|
# Check container logs
|
|
ssh root@192.168.11.10 "pct config 2400"
|
|
|
|
# Start container manually
|
|
ssh root@192.168.11.10 "pct start 2400"
|
|
```
|
|
|
|
### Besu Service Not Running
|
|
|
|
```bash
|
|
# Check service status
|
|
ssh root@192.168.11.10 "pct exec 2400 -- systemctl status besu-rpc.service"
|
|
|
|
# Check configuration
|
|
ssh root@192.168.11.10 "pct exec 2400 -- cat /etc/besu/config-rpc-thirdweb.toml"
|
|
|
|
# Verify Besu installation
|
|
ssh root@192.168.11.10 "pct exec 2400 -- /opt/besu/bin/besu --version"
|
|
```
|
|
|
|
### RPC Endpoint Not Responding
|
|
|
|
```bash
|
|
# Test connectivity
|
|
ping -c 3 192.168.11.240
|
|
|
|
# Test port accessibility
|
|
nc -zv 192.168.11.240 8545
|
|
|
|
# Check firewall rules
|
|
ssh root@192.168.11.10 "iptables -L -n | grep 8545"
|
|
```
|
|
|
|
## Load Balancing
|
|
|
|
For production use, consider setting up load balancing across the three RPC nodes:
|
|
|
|
### Nginx Load Balancer Example
|
|
|
|
```nginx
|
|
upstream thirdweb_rpc {
|
|
least_conn;
|
|
server 192.168.11.240:8545;
|
|
server 192.168.11.241:8545;
|
|
server 192.168.11.242:8545;
|
|
}
|
|
|
|
server {
|
|
listen 80;
|
|
server_name rpc.thirdweb.yourdomain.com;
|
|
|
|
location / {
|
|
proxy_pass http://thirdweb_rpc;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
|
|
# Increase timeout for ThirdWeb operations
|
|
proxy_connect_timeout 60s;
|
|
proxy_send_timeout 60s;
|
|
proxy_read_timeout 60s;
|
|
}
|
|
}
|
|
```
|
|
|
|
## Cloudflare Tunnel Integration
|
|
|
|
To expose RPC endpoints publicly via Cloudflare Tunnel:
|
|
|
|
```yaml
|
|
# cloudflared config
|
|
ingress:
|
|
- hostname: rpc-thirdweb.d-bis.org
|
|
service: http://192.168.11.240:8545
|
|
- hostname: rpc-thirdweb-2.d-bis.org
|
|
service: http://192.168.11.241:8545
|
|
- hostname: rpc-thirdweb-3.d-bis.org
|
|
service: http://192.168.11.242:8545
|
|
```
|
|
|
|
## Additional Resources
|
|
|
|
- [ThirdWeb Documentation](https://portal.thirdweb.com/)
|
|
- [Besu RPC API Documentation](https://besu.hyperledger.org/en/stable/Reference/API-Methods/)
|
|
- [JSON-RPC Specification](https://ethereum.org/en/developers/docs/apis/json-rpc/)
|
|
|
|
## Support
|
|
|
|
For issues or questions:
|
|
1. Check logs: `pct exec <VMID> -- journalctl -u besu-rpc.service -f`
|
|
2. Verify configuration: `pct exec <VMID> -- cat /etc/besu/config-rpc-thirdweb.toml`
|
|
3. Test connectivity: `curl -X POST http://<IP>:8545 -H 'Content-Type: application/json' --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'`
|