Files
proxmox/docs/03-deployment/CHAIN138_AUTOMATION_SCRIPTS.md

230 lines
5.2 KiB
Markdown
Raw Normal View History

# ChainID 138 Automation Scripts
**Date:** December 26, 2024
**Status:** ✅ All automation scripts created and ready
---
## Overview
This document describes the automation scripts created for ChainID 138 deployment. These scripts can be run once containers are created to automate the complete configuration process.
---
## Available Scripts
### 1. Main Deployment Script
**File:** `scripts/deploy-all-chain138-containers.sh`
**Purpose:** Master script that orchestrates the complete deployment process.
**What it does:**
1. Configures all Besu nodes (static-nodes.json, permissioned-nodes.json)
2. Verifies configuration
3. Sets up JWT authentication for RPC containers
4. Generates JWT tokens for operators
**Usage:**
```bash
cd /home/intlc/projects/proxmox
./scripts/deploy-all-chain138-containers.sh
```
**Note:** This script will prompt for confirmation before proceeding.
---
### 2. JWT Authentication Setup
**File:** `scripts/setup-jwt-auth-all-rpc-containers.sh`
**Purpose:** Configures JWT authentication for all RPC containers (2503-2508).
**What it does:**
- Installs nginx and dependencies on each container
- Generates JWT secret keys
- Creates JWT validation service
- Configures nginx with JWT authentication
- Sets up SSL certificates
- Starts JWT validation service and nginx
**Usage:**
```bash
./scripts/setup-jwt-auth-all-rpc-containers.sh
```
**Requirements:**
- Containers must be running
- SSH access to Proxmox host
- Root access on Proxmox host
---
### 3. JWT Token Generation
**File:** `scripts/generate-jwt-token-for-container.sh`
**Purpose:** Generates JWT tokens for specific containers and operators.
**Usage:**
```bash
# Generate token for a specific container
./scripts/generate-jwt-token-for-container.sh <VMID> <username> [expiry_days]
# Examples:
./scripts/generate-jwt-token-for-container.sh 2503 ali-full-access 365
./scripts/generate-jwt-token-for-container.sh 2505 luis-rpc-access 365
./scripts/generate-jwt-token-for-container.sh 2507 putu-rpc-access 365
```
**Parameters:**
- `VMID`: Container VMID (2503-2508)
- `username`: Username for the token (e.g., ali-full-access, luis-rpc-access)
- `expiry_days`: Token expiry in days (default: 365)
**Output:**
- JWT token
- Usage example with curl command
---
### 4. Besu Configuration
**File:** `scripts/configure-besu-chain138-nodes.sh`
**Purpose:** Configures all Besu nodes with static-nodes.json and permissioned-nodes.json.
**What it does:**
1. Collects enodes from all Besu nodes
2. Generates static-nodes.json
3. Generates permissioned-nodes.json
4. Deploys configurations to all containers
5. Configures discovery settings
6. Restarts Besu services
**Usage:**
```bash
./scripts/configure-besu-chain138-nodes.sh
```
---
### 5. Configuration Verification
**File:** `scripts/verify-chain138-config.sh`
**Purpose:** Verifies the configuration of all Besu nodes.
**What it checks:**
- File existence (static-nodes.json, permissioned-nodes.json)
- Discovery settings
- Peer connections
- Service status
**Usage:**
```bash
./scripts/verify-chain138-config.sh
```
---
## Deployment Workflow
### Step 1: Create Containers
First, create all required containers (see `docs/MISSING_CONTAINERS_LIST.md`):
- 1504 - besu-sentry-5
- 2503-2508 - All RPC nodes
- 6201 - firefly-2
- Other services as needed
### Step 2: Run Main Deployment Script
Once containers are created and running:
```bash
cd /home/intlc/projects/proxmox
./scripts/deploy-all-chain138-containers.sh
```
This will:
1. Configure all Besu nodes
2. Verify configuration
3. Set up JWT authentication
4. Generate JWT tokens
### Step 3: Test and Verify
After deployment:
```bash
# Verify configuration
./scripts/verify-chain138-config.sh
# Test JWT authentication on each container
for vmid in 2503 2504 2505 2506 2507 2508; do
echo "Testing VMID $vmid:"
curl -k -H "Authorization: Bearer <TOKEN>" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}' \
https://192.168.11.XXX/
done
```
---
## Token Distribution
After generating tokens, distribute them to operators:
### Ali (Full Access)
- VMID 2503 (0x8a identity): Full access token
- VMID 2504 (0x1 identity): Full access token
### Luis (RPC-Only Access)
- VMID 2505 (0x8a identity): RPC-only token
- VMID 2506 (0x1 identity): RPC-only token
### Putu (RPC-Only Access)
- VMID 2507 (0x8a identity): RPC-only token
- VMID 2508 (0x1 identity): RPC-only token
---
## Troubleshooting
### Containers Not Running
If containers are not running, the scripts will skip them with a warning. Re-run the scripts after containers are started.
### JWT Secret Not Found
If JWT secret is not found:
1. Run `setup-jwt-auth-all-rpc-containers.sh` first
2. Check that container is running
3. Verify SSH access to Proxmox host
### Configuration Files Not Found
If configuration files are missing:
1. Run `configure-besu-chain138-nodes.sh` first
2. Check that all Besu containers are running
3. Verify network connectivity
---
## Related Documentation
- [Next Steps](CHAIN138_NEXT_STEPS.md)
- [Missing Containers List](MISSING_CONTAINERS_LIST.md)
- [JWT Authentication Requirements](CHAIN138_JWT_AUTH_REQUIREMENTS.md)
- [Complete Implementation](CHAIN138_COMPLETE_IMPLEMENTATION.md)
---
**Last Updated:** December 26, 2024
**Status:** ✅ Ready for use