chore: sync submodule state (parent ref update)
Made-with: Cursor
This commit is contained in:
408
scripts/configure-cloudflare-dns.sh
Executable file
408
scripts/configure-cloudflare-dns.sh
Executable file
@@ -0,0 +1,408 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Configure Cloudflare DNS for ChainID 138 MetaMask Integration
|
||||
# This script creates DNS configuration files and instructions
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||
|
||||
# Colors
|
||||
GREEN='\033[0;32m'
|
||||
RED='\033[0;31m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m'
|
||||
|
||||
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
|
||||
log_success() { echo -e "${GREEN}[✓]${NC} $1"; }
|
||||
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
|
||||
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
|
||||
|
||||
log_info "========================================="
|
||||
log_info "Cloudflare DNS Configuration"
|
||||
log_info "========================================="
|
||||
log_info ""
|
||||
|
||||
# Create DNS configuration directory
|
||||
DNS_DIR="$PROJECT_ROOT/cloudflare-dns-config"
|
||||
mkdir -p "$DNS_DIR"
|
||||
|
||||
# Create DNS records configuration
|
||||
log_info "Creating DNS records configuration..."
|
||||
cat > "$DNS_DIR/dns-records.json" << 'EOF'
|
||||
{
|
||||
"records": [
|
||||
{
|
||||
"type": "A",
|
||||
"name": "rpc",
|
||||
"content": "<server-ip-address>",
|
||||
"ttl": 300,
|
||||
"proxied": true,
|
||||
"comment": "Primary RPC endpoint for ChainID 138"
|
||||
},
|
||||
{
|
||||
"type": "A",
|
||||
"name": "rpc2",
|
||||
"content": "<server-ip-address>",
|
||||
"ttl": 300,
|
||||
"proxied": true,
|
||||
"comment": "Secondary RPC endpoint for ChainID 138"
|
||||
},
|
||||
{
|
||||
"type": "A",
|
||||
"name": "explorer",
|
||||
"content": "<server-ip-address>",
|
||||
"ttl": 300,
|
||||
"proxied": true,
|
||||
"comment": "Blockscout explorer for ChainID 138"
|
||||
},
|
||||
{
|
||||
"type": "CNAME",
|
||||
"name": "rpc-core",
|
||||
"content": "rpc.d-bis.org",
|
||||
"ttl": 300,
|
||||
"proxied": true,
|
||||
"comment": "RPC core endpoint alias"
|
||||
}
|
||||
]
|
||||
}
|
||||
EOF
|
||||
|
||||
log_success "Created: $DNS_DIR/dns-records.json"
|
||||
|
||||
# Create Cloudflare API script
|
||||
log_info "Creating Cloudflare API configuration script..."
|
||||
cat > "$DNS_DIR/configure-dns-api.sh" << 'EOF'
|
||||
#!/bin/bash
|
||||
|
||||
# Configure Cloudflare DNS via API
|
||||
# Requires: CLOUDFLARE_API_TOKEN and CLOUDFLARE_ZONE_ID
|
||||
|
||||
set -e
|
||||
|
||||
ZONE_ID="${CLOUDFLARE_ZONE_ID}"
|
||||
API_TOKEN="${CLOUDFLARE_API_TOKEN}"
|
||||
DOMAIN="d-bis.org"
|
||||
|
||||
if [ -z "$ZONE_ID" ] || [ -z "$API_TOKEN" ]; then
|
||||
echo "Error: CLOUDFLARE_ZONE_ID and CLOUDFLARE_API_TOKEN must be set"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Function to create DNS record
|
||||
create_record() {
|
||||
local type=$1
|
||||
local name=$2
|
||||
local content=$3
|
||||
local proxied=${4:-true}
|
||||
|
||||
curl -X POST "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records" \
|
||||
-H "Authorization: Bearer $API_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
--data "{
|
||||
\"type\": \"$type\",
|
||||
\"name\": \"$name\",
|
||||
\"content\": \"$content\",
|
||||
\"ttl\": 300,
|
||||
\"proxied\": $proxied
|
||||
}"
|
||||
}
|
||||
|
||||
# Create RPC endpoint
|
||||
echo "Creating rpc.d-bis.org..."
|
||||
create_record "A" "rpc" "<server-ip>" true
|
||||
|
||||
# Create secondary RPC endpoint
|
||||
echo "Creating rpc2.d-bis.org..."
|
||||
create_record "A" "rpc2" "<server-ip>" true
|
||||
|
||||
# Create explorer endpoint
|
||||
echo "Creating explorer.d-bis.org..."
|
||||
create_record "A" "explorer" "<server-ip>" true
|
||||
|
||||
echo "DNS records created successfully!"
|
||||
EOF
|
||||
|
||||
chmod +x "$DNS_DIR/configure-dns-api.sh"
|
||||
log_success "Created: $DNS_DIR/configure-dns-api.sh"
|
||||
|
||||
# Create manual configuration guide
|
||||
cat > "$DNS_DIR/MANUAL_CONFIGURATION.md" << 'EOF'
|
||||
# Cloudflare DNS Manual Configuration Guide
|
||||
|
||||
## Prerequisites
|
||||
|
||||
1. Cloudflare account
|
||||
2. Domain `d-bis.org` added to Cloudflare
|
||||
3. Access to Cloudflare dashboard
|
||||
|
||||
## DNS Records to Create
|
||||
|
||||
### 1. Primary RPC Endpoint (rpc.d-bis.org)
|
||||
|
||||
**Type**: A
|
||||
**Name**: `rpc`
|
||||
**IPv4 address**: `<your-server-ip>`
|
||||
**Proxy status**: Proxied (orange cloud)
|
||||
**TTL**: Auto
|
||||
|
||||
**Purpose**: Primary RPC endpoint for ChainID 138
|
||||
|
||||
---
|
||||
|
||||
### 2. Secondary RPC Endpoint (rpc2.d-bis.org)
|
||||
|
||||
**Type**: A
|
||||
**Name**: `rpc2`
|
||||
**IPv4 address**: `<your-server-ip>`
|
||||
**Proxy status**: Proxied (orange cloud)
|
||||
**TTL**: Auto
|
||||
|
||||
**Purpose**: Secondary RPC endpoint for redundancy
|
||||
|
||||
---
|
||||
|
||||
### 3. Explorer Endpoint (explorer.d-bis.org)
|
||||
|
||||
**Type**: A
|
||||
**Name**: `explorer`
|
||||
**IPv4 address**: `<your-server-ip>`
|
||||
**Proxy status**: Proxied (orange cloud)
|
||||
**TTL**: Auto
|
||||
|
||||
**Purpose**: Blockscout explorer for ChainID 138
|
||||
|
||||
---
|
||||
|
||||
### 4. RPC Core Alias (rpc-core.d-bis.org)
|
||||
|
||||
**Type**: CNAME
|
||||
**Name**: `rpc-core`
|
||||
**Target**: `rpc.d-bis.org`
|
||||
**Proxy status**: Proxied (orange cloud)
|
||||
**TTL**: Auto
|
||||
|
||||
**Purpose**: Alias for primary RPC endpoint
|
||||
|
||||
---
|
||||
|
||||
## Configuration Steps
|
||||
|
||||
### Step 1: Access Cloudflare Dashboard
|
||||
|
||||
1. Go to https://dash.cloudflare.com
|
||||
2. Select your account
|
||||
3. Select domain `d-bis.org`
|
||||
|
||||
### Step 2: Navigate to DNS
|
||||
|
||||
1. Click "DNS" in the left sidebar
|
||||
2. Click "Records"
|
||||
3. Click "Add record"
|
||||
|
||||
### Step 3: Create Records
|
||||
|
||||
For each record above:
|
||||
1. Select record type
|
||||
2. Enter name
|
||||
3. Enter content (IP address or target)
|
||||
4. Enable proxy (orange cloud)
|
||||
5. Click "Save"
|
||||
|
||||
### Step 4: Verify Records
|
||||
|
||||
1. Check all records are created
|
||||
2. Verify proxy status is enabled
|
||||
3. Verify TTL is set correctly
|
||||
4. Test DNS resolution
|
||||
|
||||
---
|
||||
|
||||
## DNS Verification
|
||||
|
||||
### Test DNS Resolution
|
||||
|
||||
```bash
|
||||
# Test primary RPC
|
||||
dig rpc.d-bis.org +short
|
||||
|
||||
# Test secondary RPC
|
||||
dig rpc2.d-bis.org +short
|
||||
|
||||
# Test explorer
|
||||
dig explorer.d-bis.org +short
|
||||
|
||||
# Test RPC core alias
|
||||
dig rpc-core.d-bis.org +short
|
||||
```
|
||||
|
||||
### Expected Results
|
||||
|
||||
All should resolve to your server IP address (or Cloudflare proxy IPs if proxied).
|
||||
|
||||
---
|
||||
|
||||
## SSL/TLS Configuration
|
||||
|
||||
### Automatic SSL
|
||||
|
||||
Cloudflare provides automatic SSL certificates:
|
||||
1. Go to SSL/TLS settings
|
||||
2. Set encryption mode to "Full" or "Full (strict)"
|
||||
3. Enable "Always Use HTTPS"
|
||||
4. SSL certificates are automatically provisioned
|
||||
|
||||
### SSL Verification
|
||||
|
||||
```bash
|
||||
# Test SSL certificate
|
||||
openssl s_client -connect rpc.d-bis.org:443 -servername rpc.d-bis.org
|
||||
|
||||
# Check certificate validity
|
||||
echo | openssl s_client -connect rpc.d-bis.org:443 2>/dev/null | openssl x509 -noout -dates
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Proxy Configuration
|
||||
|
||||
### Benefits of Proxying
|
||||
|
||||
- DDoS protection
|
||||
- CDN caching
|
||||
- SSL termination
|
||||
- IP hiding
|
||||
|
||||
### Considerations
|
||||
|
||||
- Proxy adds latency (~10-50ms)
|
||||
- Some features may require direct IP access
|
||||
- RPC endpoints may need direct access
|
||||
|
||||
### Configuration
|
||||
|
||||
For RPC endpoints, you may want to:
|
||||
1. Start with proxy enabled
|
||||
2. Monitor performance
|
||||
3. Disable proxy if needed for low latency
|
||||
|
||||
---
|
||||
|
||||
## Page Rules
|
||||
|
||||
### Recommended Page Rules
|
||||
|
||||
1. **Cache Level**: Standard
|
||||
2. **Browser Cache TTL**: 4 hours
|
||||
3. **Edge Cache TTL**: 2 hours
|
||||
|
||||
### Create Page Rule
|
||||
|
||||
1. Go to Rules → Page Rules
|
||||
2. Click "Create Page Rule"
|
||||
3. URL pattern: `rpc.d-bis.org/*`
|
||||
4. Settings:
|
||||
- Cache Level: Standard
|
||||
- Browser Cache TTL: 4 hours
|
||||
- Edge Cache TTL: 2 hours
|
||||
|
||||
---
|
||||
|
||||
## Security Settings
|
||||
|
||||
### Recommended Settings
|
||||
|
||||
1. **Security Level**: Medium
|
||||
2. **Challenge Passage**: 30 minutes
|
||||
3. **Browser Integrity Check**: On
|
||||
4. **Privacy Pass Support**: On
|
||||
|
||||
### Rate Limiting
|
||||
|
||||
Create rate limiting rules:
|
||||
- Rate: 10 requests per second per IP
|
||||
- Burst: 20 requests
|
||||
- Action: Challenge or Block
|
||||
|
||||
---
|
||||
|
||||
## Monitoring
|
||||
|
||||
### Cloudflare Analytics
|
||||
|
||||
1. Monitor DNS queries
|
||||
2. Monitor traffic
|
||||
3. Monitor errors
|
||||
4. Monitor performance
|
||||
|
||||
### Alerts
|
||||
|
||||
Set up alerts for:
|
||||
- High error rates
|
||||
- DDoS attacks
|
||||
- SSL certificate expiration
|
||||
- DNS resolution issues
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### DNS Not Resolving
|
||||
|
||||
1. Check DNS records are correct
|
||||
2. Check proxy status
|
||||
3. Wait for DNS propagation (up to 48 hours)
|
||||
4. Clear DNS cache
|
||||
|
||||
### SSL Certificate Issues
|
||||
|
||||
1. Check SSL/TLS mode is "Full"
|
||||
2. Verify origin server has valid certificate
|
||||
3. Check certificate expiration
|
||||
4. Review SSL errors in Cloudflare dashboard
|
||||
|
||||
### Performance Issues
|
||||
|
||||
1. Check proxy status
|
||||
2. Review Cloudflare analytics
|
||||
3. Check origin server performance
|
||||
4. Consider disabling proxy for RPC endpoints
|
||||
|
||||
---
|
||||
|
||||
## Next Steps
|
||||
|
||||
After DNS configuration:
|
||||
|
||||
1. ✅ Verify DNS resolution
|
||||
2. ✅ Configure SSL certificates
|
||||
3. ✅ Test RPC endpoints
|
||||
4. ✅ Test explorer
|
||||
5. ✅ Update MetaMask network config
|
||||
6. ✅ Update token lists
|
||||
|
||||
---
|
||||
|
||||
**Last Updated**: 2026-01-26
|
||||
EOF
|
||||
|
||||
log_success "Created: $DNS_DIR/MANUAL_CONFIGURATION.md"
|
||||
|
||||
log_info ""
|
||||
log_info "========================================="
|
||||
log_info "DNS Configuration Complete!"
|
||||
log_info "========================================="
|
||||
log_info ""
|
||||
log_info "Files created in: $DNS_DIR"
|
||||
log_info " - dns-records.json (DNS records config)"
|
||||
log_info " - configure-dns-api.sh (API script)"
|
||||
log_info " - MANUAL_CONFIGURATION.md (manual guide)"
|
||||
log_info ""
|
||||
log_info "Next steps:"
|
||||
log_info "1. Review DNS configuration"
|
||||
log_info "2. Configure Cloudflare DNS"
|
||||
log_info "3. Verify DNS resolution"
|
||||
log_info "4. Configure SSL certificates"
|
||||
log_info ""
|
||||
Reference in New Issue
Block a user