- Add .aitbc.yaml configuration file with test values - Simplify .gitignore by removing merge conflicts and redundant entries - Reorganize .gitignore sections for better clarity - Set chain_id and proposer_id to empty strings in config.py (require explicit configuration) - Add production Helm values configuration - Add production nginx configuration - Update environment variable handling in chain settings
128 lines
3.2 KiB
Bash
Executable File
128 lines
3.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Deploy a second blockchain node on the same server
|
|
|
|
set -e
|
|
|
|
echo "🚀 Deploying Second Blockchain Node"
|
|
echo "=================================="
|
|
|
|
# Colors
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m'
|
|
|
|
print_status() {
|
|
echo -e "${GREEN}[INFO]${NC} $1"
|
|
}
|
|
|
|
print_warning() {
|
|
echo -e "${YELLOW}[WARN]${NC} $1"
|
|
}
|
|
|
|
# Create directory for second node
|
|
print_status "Creating directory for second node..."
|
|
NODE2_DIR="/opt/blockchain-node-2"
|
|
sudo mkdir -p $NODE2_DIR
|
|
sudo chown $USER:$USER $NODE2_DIR
|
|
|
|
# Copy blockchain node code
|
|
print_status "Copying blockchain node code..."
|
|
cp -r /opt/blockchain-node/* $NODE2_DIR/
|
|
|
|
# Create configuration for second node
|
|
print_status "Creating configuration for second node..."
|
|
cat > $NODE2_DIR/.env << EOF
|
|
CHAIN_ID=ait-devnet
|
|
DB_PATH=./data/chain2.db
|
|
RPC_BIND_HOST=127.0.0.1
|
|
RPC_BIND_PORT=8081
|
|
P2P_BIND_HOST=0.0.0.0
|
|
P2P_BIND_PORT=7071
|
|
PROPOSER_KEY=node2_proposer_key_$(date +%s)
|
|
MINT_PER_UNIT=1000
|
|
COORDINATOR_RATIO=0.05
|
|
GOSSIP_BACKEND=http
|
|
GOSSIP_BROADCAST_URL=http://127.0.0.1:7070/gossip
|
|
EOF
|
|
|
|
# Create data directory
|
|
mkdir -p $NODE2_DIR/data/devnet
|
|
|
|
# Generate genesis file (same as first node)
|
|
print_status "Generating genesis file..."
|
|
cd $NODE2_DIR
|
|
export PYTHONPATH="${NODE2_DIR}/src:${NODE2_DIR}/scripts:${PYTHONPATH:-}"
|
|
python3 scripts/make_genesis.py --output data/devnet/genesis.json --force
|
|
|
|
# Create systemd service
|
|
print_status "Creating systemd service..."
|
|
sudo cat > /etc/systemd/system/blockchain-node-2.service << EOF
|
|
[Unit]
|
|
Description=AITBC Blockchain Node 2
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=exec
|
|
User=root
|
|
WorkingDirectory=$NODE2_DIR
|
|
Environment=PATH=$NODE2_DIR/.venv/bin:/usr/local/bin:/usr/bin:/bin
|
|
Environment=PYTHONPATH=$NODE2_DIR/src:$NODE2_DIR/scripts
|
|
ExecStart=$NODE2_DIR/.venv/bin/python3 -m aitbc_chain.main
|
|
Restart=always
|
|
RestartSec=5
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
|
|
# Create RPC API service
|
|
print_status "Creating RPC API service..."
|
|
sudo cat > /etc/systemd/system/blockchain-rpc-2.service << EOF
|
|
[Unit]
|
|
Description=AITBC Blockchain RPC API 2
|
|
After=blockchain-node-2.service
|
|
|
|
[Service]
|
|
Type=exec
|
|
User=root
|
|
WorkingDirectory=$NODE2_DIR
|
|
Environment=PATH=$NODE2_DIR/.venv/bin:/usr/local/bin:/usr/bin:/bin
|
|
Environment=PYTHONPATH=$NODE2_DIR/src:$NODE2_DIR/scripts
|
|
ExecStart=$NODE2_DIR/.venv/bin/python3 -m uvicorn aitbc_chain.app:app --host 0.0.0.0 --port 8081
|
|
Restart=always
|
|
RestartSec=5
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
|
|
# Setup Python environment
|
|
print_status "Setting up Python environment..."
|
|
cd $NODE2_DIR
|
|
python3 -m venv .venv
|
|
source .venv/bin/activate
|
|
pip install --upgrade pip
|
|
pip install -e .
|
|
|
|
# Enable and start services
|
|
print_status "Enabling and starting services..."
|
|
sudo systemctl daemon-reload
|
|
sudo systemctl enable blockchain-node-2 blockchain-rpc-2
|
|
sudo systemctl start blockchain-node-2 blockchain-rpc-2
|
|
|
|
# Check status
|
|
print_status "Checking service status..."
|
|
sudo systemctl status blockchain-node-2 --no-pager -l
|
|
sudo systemctl status blockchain-rpc-2 --no-pager -l
|
|
|
|
echo ""
|
|
print_status "✅ Second blockchain node deployed!"
|
|
echo ""
|
|
echo "Node 1 RPC: http://127.0.0.1:8080"
|
|
echo "Node 2 RPC: http://127.0.0.1:8081"
|
|
echo ""
|
|
echo "To check logs:"
|
|
echo " Node 1: sudo journalctl -u blockchain-node -f"
|
|
echo " Node 2: sudo journalctl -u blockchain-node-2 -f"
|