From 36f3f8389646092d57ce34bd89c345ce6721e012 Mon Sep 17 00:00:00 2001 From: Andrei Date: Mon, 6 Oct 2025 22:46:07 +0000 Subject: [PATCH] fix: Add git checkout main to deployment scripts - Update deploy-production.sh to properly checkout main branch - Fix PRODUCTION_INSTALLATION.md to include checkout main step - Ensure all deployment instructions switch to main branch correctly --- PRODUCTION_INSTALLATION.md | 286 +++++++++++++++++++++++++++++++++++++ deploy-production.sh | 8 +- 2 files changed, 291 insertions(+), 3 deletions(-) create mode 100644 PRODUCTION_INSTALLATION.md diff --git a/PRODUCTION_INSTALLATION.md b/PRODUCTION_INSTALLATION.md new file mode 100644 index 0000000..6b82c0b --- /dev/null +++ b/PRODUCTION_INSTALLATION.md @@ -0,0 +1,286 @@ +# Production Deployment Instructions + +## Prerequisites +- Ubuntu/Debian server with root access +- Server IP: 10.0.0.240 +- PostgreSQL server at: 10.0.0.207 +- Domains configured: + - api.parentflowapp.com → 10.0.0.240:3020 + - web.parentflowapp.com → 10.0.0.240:3030 + - adminpf.parentflowapp.com → 10.0.0.240:3335 + +## Quick Installation (One Command) + +SSH into your production server and run: + +```bash +cd /root && \ +git clone https://andrei:33edc%40%40NHY%5E%5E@git.noru1.ro/andrei/maternal-app.git parentflow-production && \ +cd parentflow-production && \ +git checkout main && \ +chmod +x deploy-production.sh && \ +./deploy-production.sh +``` + +This will automatically: +1. Install Node.js 22 and all dependencies +2. Install Docker and Docker Compose +3. Start all required services (Redis, MongoDB, MinIO) +4. Run database migrations +5. Build all applications +6. Start PM2 services + +## Manual Step-by-Step Installation + +### 1. Clone Repository +```bash +cd /root +git clone https://andrei:33edc%40%40NHY%5E%5E@git.noru1.ro/andrei/maternal-app.git parentflow-production +cd parentflow-production +git checkout main +``` + +### 2. Make Scripts Executable +```bash +chmod +x deploy-production.sh +chmod +x migrate-production.sh +chmod +x start-production.sh +chmod +x stop-production.sh +``` + +### 3. Run Initial Deployment +```bash +./deploy-production.sh +``` + +This script will: +- Install Node.js 22 +- Install Docker and Docker Compose +- Clone the latest code from main branch +- Install all npm dependencies +- Start Docker services (Redis, MongoDB, MinIO) +- Run database migrations +- Build production apps +- Start PM2 services + +### 4. Verify Installation +After deployment completes, verify all services are running: + +```bash +# Check PM2 services +pm2 list + +# Check service health +curl http://localhost:3020/health # Backend API +curl http://localhost:3030 # Frontend +curl http://localhost:3335 # Admin Dashboard + +# Check Docker services +docker ps +``` + +## Service Management + +### Start All Services +```bash +cd /root/parentflow-production +./start-production.sh +``` + +### Stop All Services +```bash +cd /root/parentflow-production +./stop-production.sh +``` + +### Run Database Migrations Only +```bash +cd /root/parentflow-production +./migrate-production.sh +``` + +### View Logs +```bash +# PM2 logs +pm2 logs parentflow-backend-prod +pm2 logs parentflow-frontend-prod +pm2 logs parentflow-admin-prod + +# Docker logs +docker logs parentflow-redis +docker logs parentflow-mongodb +docker logs parentflow-minio +``` + +## Update Production + +To update production with the latest code: + +```bash +cd /root/parentflow-production +git pull origin main +./deploy-production.sh +``` + +## Service Ports + +| Service | Port | URL | +|---------|------|-----| +| Backend API | 3020 | https://api.parentflowapp.com | +| Frontend | 3030 | https://web.parentflowapp.com | +| Admin Dashboard | 3335 | https://adminpf.parentflowapp.com | +| Redis | 6379 | Internal only | +| MongoDB | 27017 | Internal only | +| MinIO | 9000 | Internal only | +| MinIO Console | 9001 | http://10.0.0.240:9001 | + +## Database Access + +Production database is hosted on dedicated server: +- Host: 10.0.0.207 +- Port: 5432 +- Database: parentflow +- User: postgres +- Password: a3ppq + +To access database directly: +```bash +PGPASSWORD=a3ppq psql -h 10.0.0.207 -p 5432 -U postgres -d parentflow +``` + +## Admin Dashboard + +Access the admin dashboard at: https://adminpf.parentflowapp.com + +Default admin credentials: +- Email: admin@parentflowapp.com +- Password: admin123 + +**IMPORTANT**: Change the admin password after first login! + +## Troubleshooting + +### Services Not Starting +```bash +# Check PM2 status +pm2 status + +# Check error logs +pm2 logs --err + +# Restart specific service +pm2 restart parentflow-backend-prod +pm2 restart parentflow-frontend-prod +pm2 restart parentflow-admin-prod +``` + +### Port Conflicts +```bash +# Check what's using a port +lsof -i :3020 # Backend +lsof -i :3030 # Frontend +lsof -i :3335 # Admin + +# Kill process on port (if needed) +kill -9 $(lsof -t -i:3020) +``` + +### Database Connection Issues +```bash +# Test database connection +PGPASSWORD=a3ppq psql -h 10.0.0.207 -p 5432 -U postgres -d parentflow -c "\dt" + +# Check migrations status +cd /root/parentflow-production +./migrate-production.sh +``` + +### Docker Issues +```bash +# Restart Docker services +docker-compose -f docker-compose.production.yml down +docker-compose -f docker-compose.production.yml up -d + +# Check Docker logs +docker logs parentflow-redis -f +docker logs parentflow-mongodb -f +``` + +## Monitoring + +### PM2 Monitoring +```bash +# Enable PM2 web monitoring +pm2 web + +# Save PM2 configuration +pm2 save +pm2 startup +``` + +### System Resources +```bash +# Check memory usage +free -h + +# Check disk space +df -h + +# Check CPU usage +htop +``` + +## Backup + +### Database Backup +```bash +# Create backup +PGPASSWORD=a3ppq pg_dump -h 10.0.0.207 -p 5432 -U postgres -d parentflow > backup_$(date +%Y%m%d).sql + +# Restore backup +PGPASSWORD=a3ppq psql -h 10.0.0.207 -p 5432 -U postgres -d parentflow < backup_20240101.sql +``` + +### Application Backup +```bash +# Backup uploads and data +tar -czf parentflow_data_$(date +%Y%m%d).tar.gz /root/parentflow-production/uploads +``` + +## Security Notes + +1. **Change default passwords** immediately after installation: + - Admin dashboard password + - Database passwords (if using defaults) + - Redis password + - MongoDB password + - MinIO credentials + +2. **Configure firewall** to only allow necessary ports: + - 80, 443 (HTTP/HTTPS) + - 22 (SSH - consider changing default port) + - Block direct access to service ports from outside + +3. **Enable SSL/TLS** using Let's Encrypt: + ```bash + apt-get install certbot python3-certbot-nginx + certbot --nginx -d api.parentflowapp.com -d web.parentflowapp.com -d adminpf.parentflowapp.com + ``` + +4. **Regular Updates**: + ```bash + # Update system packages + apt update && apt upgrade -y + + # Update Node.js packages (with caution) + cd /root/parentflow-production + npm audit fix + ``` + +## Support + +For issues or questions: +1. Check PM2 logs: `pm2 logs` +2. Check application logs in `/root/parentflow-production/logs/` +3. Review error logs: `pm2 logs --err` +4. Check system logs: `journalctl -xe` \ No newline at end of file diff --git a/deploy-production.sh b/deploy-production.sh index 979c9f5..8b302c5 100755 --- a/deploy-production.sh +++ b/deploy-production.sh @@ -101,13 +101,15 @@ log "${CYAN}Step 5: Fetching latest code from main branch...${NC}" if [ -d "$DEPLOY_DIR" ]; then warning "Deployment directory exists, pulling latest changes..." cd "$DEPLOY_DIR" - git fetch origin main - git reset --hard origin/main + git fetch origin + git checkout main + git pull origin main --ff-only git clean -fd else log "Cloning repository..." - git clone -b main "$REPO_URL" "$DEPLOY_DIR" + git clone "$REPO_URL" "$DEPLOY_DIR" cd "$DEPLOY_DIR" + git checkout main fi success "Repository updated to latest main branch"