Expanded solutions (10 new industries) and products (Compliance & Data section) to cover full docs.lux.financial capability surface.
81 lines
2.2 KiB
Bash
Executable File
81 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# Setup script to run on each DO droplet after cloud-init
|
|
# Usage: ./setup-node.sh <network-type>
|
|
# Example: ./setup-node.sh mainnet
|
|
|
|
set -e
|
|
|
|
NETWORK_TYPE=${1:-mainnet}
|
|
DATA_DIR=/data/lux
|
|
UNIVERSE_DIR=/home/lux/universe
|
|
|
|
echo "Setting up Lux $NETWORK_TYPE node..."
|
|
|
|
# Ensure directories exist
|
|
mkdir -p $DATA_DIR/{chains,plugins,runs,snapshots,keys}
|
|
mkdir -p $DATA_DIR/keys/{node1,node2,node3,node4,node5}
|
|
|
|
# Generate node keys if they don't exist
|
|
cd $UNIVERSE_DIR
|
|
for i in 1 2 3 4 5; do
|
|
KEY_DIR=$DATA_DIR/keys/node$i
|
|
if [ ! -f "$KEY_DIR/staking/staker.crt" ]; then
|
|
echo "Generating keys for node$i..."
|
|
mkdir -p $KEY_DIR/staking $KEY_DIR/bls
|
|
|
|
# Generate staking certificate
|
|
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 \
|
|
-keyout $KEY_DIR/staking/staker.key \
|
|
-out $KEY_DIR/staking/staker.crt \
|
|
-subj "/CN=lux-node$i" \
|
|
-nodes 2>/dev/null
|
|
|
|
# Generate BLS signer key (placeholder - actual BLS key generation needs CLI)
|
|
echo "placeholder-bls-key-node$i" > $KEY_DIR/bls/signer.key
|
|
fi
|
|
done
|
|
|
|
# Create environment file
|
|
cat > $UNIVERSE_DIR/.env <<EOF
|
|
# Lux Network Configuration
|
|
NETWORK_TYPE=$NETWORK_TYPE
|
|
DATA_DIR=$DATA_DIR
|
|
COMPOSE_PROJECT_NAME=lux-$NETWORK_TYPE
|
|
|
|
# Database credentials
|
|
POSTGRES_USER=postgres
|
|
POSTGRES_PASSWORD=$(openssl rand -hex 16)
|
|
POSTGRES_DB=$NETWORK_TYPE
|
|
|
|
# Explorer secrets
|
|
SECRET_KEY_BASE=$(openssl rand -hex 32)
|
|
EOF
|
|
|
|
# Set ownership
|
|
chown -R lux:lux $DATA_DIR
|
|
chown -R lux:lux $UNIVERSE_DIR
|
|
|
|
# Pull Docker images
|
|
echo "Pulling Docker images..."
|
|
cd $UNIVERSE_DIR
|
|
docker compose -f compose.$NETWORK_TYPE.yml pull 2>/dev/null || true
|
|
|
|
# Build node image
|
|
echo "Building node image..."
|
|
docker compose -f compose.$NETWORK_TYPE.yml build --no-cache 2>/dev/null || echo "Build will happen on start"
|
|
|
|
echo ""
|
|
echo "=== Setup Complete ==="
|
|
echo "Network: $NETWORK_TYPE"
|
|
echo "Data directory: $DATA_DIR"
|
|
echo ""
|
|
echo "Start the network with:"
|
|
echo " cd $UNIVERSE_DIR"
|
|
echo " docker compose -f compose.$NETWORK_TYPE.yml up -d"
|
|
echo ""
|
|
echo "Monitor with:"
|
|
echo " docker compose -f compose.$NETWORK_TYPE.yml logs -f"
|
|
echo ""
|
|
echo "Stop with:"
|
|
echo " docker compose -f compose.$NETWORK_TYPE.yml down"
|