#!/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"