133 lines
4.4 KiB
Bash
Executable File
133 lines
4.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Main Deployment Orchestrator for Solace Treasury DApp on Proxmox VE
|
|
# This script orchestrates the deployment of all DApp components
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
CONFIG_FILE="$SCRIPT_DIR/config/dapp.conf"
|
|
|
|
# Load configuration
|
|
if [[ -f "$CONFIG_FILE" ]]; then
|
|
source "$CONFIG_FILE"
|
|
fi
|
|
|
|
# Deployment flags
|
|
DEPLOY_DATABASE="${DEPLOY_DATABASE:-true}"
|
|
DEPLOY_BACKEND="${DEPLOY_BACKEND:-true}"
|
|
DEPLOY_INDEXER="${DEPLOY_INDEXER:-true}"
|
|
DEPLOY_FRONTEND="${DEPLOY_FRONTEND:-true}"
|
|
DEPLOY_NGINX="${DEPLOY_NGINX:-false}"
|
|
|
|
echo "=========================================="
|
|
echo "Solace Treasury DApp Deployment"
|
|
echo "=========================================="
|
|
echo "This script will deploy the DApp components to Proxmox VE"
|
|
echo ""
|
|
echo "Components to deploy:"
|
|
echo " - Database: $DEPLOY_DATABASE"
|
|
echo " - Backend: $DEPLOY_BACKEND"
|
|
echo " - Indexer: $DEPLOY_INDEXER"
|
|
echo " - Frontend: $DEPLOY_FRONTEND"
|
|
echo " - Nginx: $DEPLOY_NGINX"
|
|
echo ""
|
|
|
|
# Check if running on Proxmox host
|
|
if ! command -v pct &> /dev/null; then
|
|
echo "ERROR: This script must be run on Proxmox host (pct command not found)"
|
|
exit 1
|
|
fi
|
|
|
|
# Check if running as root
|
|
if [[ $EUID -ne 0 ]]; then
|
|
echo "ERROR: This script must be run as root"
|
|
exit 1
|
|
fi
|
|
|
|
# Make deployment scripts executable
|
|
chmod +x "$SCRIPT_DIR"/*.sh
|
|
|
|
# Deploy components in order
|
|
if [[ "$DEPLOY_DATABASE" == "true" ]]; then
|
|
echo ""
|
|
echo "=========================================="
|
|
echo "Deploying Database..."
|
|
echo "=========================================="
|
|
"$SCRIPT_DIR/deploy-database.sh"
|
|
echo ""
|
|
echo "Waiting for database to be ready..."
|
|
sleep 10
|
|
fi
|
|
|
|
if [[ "$DEPLOY_BACKEND" == "true" ]]; then
|
|
echo ""
|
|
echo "=========================================="
|
|
echo "Deploying Backend..."
|
|
echo "=========================================="
|
|
"$SCRIPT_DIR/deploy-backend.sh"
|
|
fi
|
|
|
|
if [[ "$DEPLOY_INDEXER" == "true" ]]; then
|
|
echo ""
|
|
echo "=========================================="
|
|
echo "Deploying Indexer..."
|
|
echo "=========================================="
|
|
"$SCRIPT_DIR/deploy-indexer.sh"
|
|
fi
|
|
|
|
if [[ "$DEPLOY_FRONTEND" == "true" ]]; then
|
|
echo ""
|
|
echo "=========================================="
|
|
echo "Deploying Frontend..."
|
|
echo "=========================================="
|
|
"$SCRIPT_DIR/deploy-frontend.sh"
|
|
fi
|
|
|
|
if [[ "$DEPLOY_NGINX" == "true" ]]; then
|
|
echo ""
|
|
echo "=========================================="
|
|
echo "Deploying Nginx..."
|
|
echo "=========================================="
|
|
echo "Nginx deployment script not yet implemented"
|
|
echo "You can manually set up Nginx or use the frontend container with Nginx"
|
|
fi
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo "Deployment Complete"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "Summary:"
|
|
echo " Database: $VMID_DATABASE (${DATABASE_IP:-192.168.11.62})"
|
|
echo " Backend: $VMID_BACKEND (${BACKEND_IP:-192.168.11.61})"
|
|
echo " Indexer: $VMID_INDEXER (${INDEXER_IP:-192.168.11.63})"
|
|
echo " Frontend: $VMID_FRONTEND (${FRONTEND_IP:-192.168.11.60})"
|
|
echo ""
|
|
echo "Next steps:"
|
|
echo "1. Deploy contracts to Chain 138:"
|
|
echo " cd contracts && pnpm run deploy:chain138"
|
|
echo ""
|
|
echo "2. Configure environment variables:"
|
|
echo " - Update frontend/.env.production with contract addresses and RPC URL"
|
|
echo " - Update backend/.env with database connection and RPC URL"
|
|
echo " - Update backend/.env.indexer with indexer configuration"
|
|
echo ""
|
|
echo "3. Copy environment files to containers:"
|
|
echo " pct push $VMID_FRONTEND frontend/.env.production /opt/solace-frontend/.env.production"
|
|
echo " pct push $VMID_BACKEND backend/.env /opt/solace-backend/.env"
|
|
echo " pct push $VMID_INDEXER backend/.env.indexer /opt/solace-indexer/.env.indexer"
|
|
echo ""
|
|
echo "4. Run database migrations:"
|
|
echo " pct exec $VMID_BACKEND -- bash -c 'cd /opt/solace-backend && pnpm run db:migrate'"
|
|
echo ""
|
|
echo "5. Start services:"
|
|
echo " pct exec $VMID_BACKEND -- systemctl start solace-backend"
|
|
echo " pct exec $VMID_INDEXER -- systemctl start solace-indexer"
|
|
echo " pct exec $VMID_FRONTEND -- systemctl start solace-frontend"
|
|
echo ""
|
|
echo "6. Check service status:"
|
|
echo " pct exec $VMID_BACKEND -- systemctl status solace-backend"
|
|
echo " pct exec $VMID_INDEXER -- systemctl status solace-indexer"
|
|
echo " pct exec $VMID_FRONTEND -- systemctl status solace-frontend"
|
|
|