#!/bin/bash # SDI SaaS Platform - Deployment Script for Dev Server # Server: 102.69.243.165 # User: root set -e echo "🚀 SDI SaaS Platform - Dev Server Deployment" echo "==============================================" # Configuration SERVER_IP="102.69.243.165" SERVER_USER="root" DEPLOY_PATH="/var/www/sdi-saas" APP_NAME="sdi-saas" echo "📦 Step 1: Preparing deployment package..." # Create deployment archive (excluding node_modules and .git) tar -czf sdi-deploy.tar.gz \ --exclude='node_modules' \ --exclude='.git' \ --exclude='dist' \ --exclude='*.log' \ --exclude='.env' \ . echo "✅ Deployment package created" echo "📤 Step 2: Uploading to server..." # Upload to server scp sdi-deploy.tar.gz ${SERVER_USER}@${SERVER_IP}:/tmp/ echo "✅ Files uploaded" echo "🔧 Step 3: Deploying on server..." # SSH into server and deploy ssh ${SERVER_USER}@${SERVER_IP} << 'ENDSSH' set -e echo "Creating deployment directory..." mkdir -p /var/www/sdi-saas cd /var/www/sdi-saas echo "Extracting files..." tar -xzf /tmp/sdi-deploy.tar.gz -C /var/www/sdi-saas echo "Installing dependencies..." # Install Node.js 20 if not present if ! command -v node &> /dev/null; then curl -fsSL https://deb.nodesource.com/setup_20.x | bash - apt-get install -y nodejs fi # Install pnpm if not present if ! command -v pnpm &> /dev/null; then npm install -g pnpm@8.15.0 fi # Install dependencies pnpm install --frozen-lockfile echo "Setting up environment..." # Copy environment files cp apps/api/.env.example apps/api/.env cp apps/worker/.env.example apps/worker/.env cp packages/database/.env.example packages/database/.env # Update DATABASE_URL for production sed -i 's/localhost/postgres/g' apps/api/.env sed -i 's/localhost/postgres/g' apps/worker/.env sed -i 's/localhost/postgres/g' packages/database/.env echo "Generating Prisma client..." cd packages/database pnpm db:generate echo "Starting services with Docker Compose..." cd /var/www/sdi-saas docker-compose up -d echo "Waiting for database to be ready..." sleep 10 echo "Running database migrations..." cd packages/database pnpm db:migrate echo "Seeding database..." pnpm db:seed echo "✅ Deployment complete!" echo "API: http://102.69.243.165:3000" echo "API Docs: http://102.69.243.165:3000/api/docs" ENDSSH echo "🎉 Deployment successful!" echo "" echo "Access your application:" echo " API: http://102.69.243.165:3000" echo " API Docs: http://102.69.243.165:3000/api/docs" echo "" echo "To check logs:" echo " ssh root@102.69.243.165 'cd /var/www/sdi-saas && docker-compose logs -f'"