#!/bin/bash # ============================================================================= # Aurora Remote Deployment Script # ============================================================================= # Deploys the application to a remote VPS via SSH. # Performs a database backup, pulls latest code, builds, and restarts services. # # Usage: ./deploy-remote.sh [--skip-backup] # ============================================================================= set -e # Load environment variables if [ -f .env ]; then set -a source .env set +a fi # Colors GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m' if [ -z "$VPS_HOST" ] || [ -z "$VPS_USER" ]; then echo -e "${RED}Error: VPS_HOST and VPS_USER must be set in .env${NC}" echo "Please add them to your .env file:" echo "VPS_USER=your-username" echo "VPS_HOST=your-ip-address" exit 1 fi # Default remote directory to ~/Aurora if not specified REMOTE_DIR="${VPS_PROJECT_PATH:-~/Aurora}" SKIP_BACKUP=false if [[ "$1" == "--skip-backup" ]]; then SKIP_BACKUP=true fi echo -e "${YELLOW}🚀 Deploying to $VPS_USER@$VPS_HOST:$REMOTE_DIR...${NC}" # Step 1: Database backup (unless skipped) if [ "$SKIP_BACKUP" = false ]; then echo -e "\n${YELLOW}💾 Step 1/4: Backing up remote database...${NC}" ssh -t "$VPS_USER@$VPS_HOST" "cd $REMOTE_DIR && bash shared/scripts/db-backup.sh" || { echo -e "${RED}⚠️ Backup failed. Aborting deployment.${NC}" echo "Use --skip-backup to deploy without backing up." exit 1 } else echo -e "\n${YELLOW}⏭️ Step 1/4: Skipping database backup (--skip-backup)${NC}" fi # Step 2: Pull latest code echo -e "\n${YELLOW}⬇️ Step 2/4: Pulling latest changes...${NC}" ssh -t "$VPS_USER@$VPS_HOST" "cd $REMOTE_DIR && git pull" # Step 3: Build production containers echo -e "\n${YELLOW}🏗️ Step 3/4: Building production containers...${NC}" ssh -t "$VPS_USER@$VPS_HOST" "cd $REMOTE_DIR && docker compose -f docker-compose.prod.yml build" # Step 4: Restart services echo -e "\n${YELLOW}🚀 Step 4/4: Starting services...${NC}" ssh -t "$VPS_USER@$VPS_HOST" "cd $REMOTE_DIR && docker compose -f docker-compose.prod.yml up -d" echo -e "\n${GREEN}✅ Deployment complete!${NC}"