chitfund/old_docs_backup_20251105_20.../README_DEPLOYMENT.md

8.5 KiB

🎯 LuckyChit Deployment - What's New

What I've Created For You

Based on your bash history (lines 173-403), I've analyzed your actual production PM2 setup and created comprehensive deployment tools and documentation.


📦 New Files Created

🚀 Deployment Scripts (Ready to Use)

  1. deploy-full.sh - Deploy both backend and frontend
  2. deploy-backend-only.sh - Update backend only
  3. deploy-frontend-only.sh - Update frontend only
  4. backup-database.sh - Backup PostgreSQL database
  5. restore-database.sh - Restore database from backup
  6. setup-deployment-scripts.sh - Make all scripts executable

📚 Documentation Files

  1. DEPLOYMENT_MASTER_GUIDE.md - Start here! Master index of everything
  2. QUICK_REFERENCE.md - Your daily command cheat sheet
  3. ACTUAL_PRODUCTION_SETUP.md - Documents your real production setup
  4. PRODUCTION_DIFFERENCES.md - Compares your setup vs best practices
  5. README_DEPLOYMENT.md - This file (what's new)

🔧 Configuration Updates

  1. backend/ecosystem.config.js - Fixed to match your folder structure
    • Changed script: './server.js''./src/server.js'
    • Changed name: 'luckychit-backend''luckychit-api'

🎯 Your Production Setup (From History Analysis)

What You're Running:

# Backend (port 3000)
pm2 start src/server.js --name luckychit-api

# Frontend (port 8080)  
pm2 serve /home/luckychit/apps/chitfund/luckychit/build/web 8080 --name luckychit-frontend --spa

# Auto-start configured
pm2 startup systemd -u luckychit --hp /home/luckychit
pm2 save

Key Findings:

  • Working: Basic PM2 setup with auto-restart on reboot
  • ⚠️ Not Using: ecosystem.config.js (but I fixed it for you)
  • ⚠️ Disabled: nginx (you stopped it at line 253-254)
  • ⚠️ Missing: Automated database backups
  • ⚠️ Missing: Log rotation (logs will grow forever)
  • Branch: Using prodnew for production
  • Ports: Backend 3000, Frontend 8080

🚀 How to Use (Next Steps)

Step 1: Copy Scripts to Production Server

From your dev machine:

# Option A: Git (if scripts are committed)
ssh luckychit@192.168.8.148
cd /home/luckychit/apps/chitfund
git pull origin prodnew

# Option B: SCP (copy directly)
scp deploy-*.sh backup-database.sh restore-database.sh setup-deployment-scripts.sh luckychit@192.168.8.148:/home/luckychit/apps/chitfund/

Step 2: Make Scripts Executable

On production server:

cd /home/luckychit/apps/chitfund
chmod +x setup-deployment-scripts.sh
./setup-deployment-scripts.sh

Step 3: Test Deployment Script

./deploy-full.sh

Step 4: Set Up Automated Backups

# Test backup script first
./backup-database.sh

# Add to crontab for daily backups at 2 AM
crontab -e
# Add this line:
0 2 * * * /home/luckychit/apps/chitfund/backup-database.sh

📖 Which Document to Read When

🎯 For Daily Deployment:

Read: QUICK_REFERENCE.md
Quick commands for deploying, checking status, viewing logs.

🔍 To Understand Your Setup:

Read: ACTUAL_PRODUCTION_SETUP.md
Explains exactly how your production is configured based on your history.

📚 For Best Practices:

Read: PM2_PRODUCTION_GUIDE.md (already existed)
Industry-standard PM2 setup recommendations.

⚖️ To See What Could Be Better:

Read: PRODUCTION_DIFFERENCES.md
Side-by-side comparison of your setup vs recommended practices.

🎓 For Everything:

Read: DEPLOYMENT_MASTER_GUIDE.md
Master index that ties everything together.


🎉 Your Deployment Workflow (Simplified)

Before (Manual):

cd /home/luckychit/apps/chitfund
git pull
cd backend
npm install
pm2 restart luckychit-api
cd ../luckychit
flutter pub get
flutter build web --release
pm2 restart luckychit-frontend
pm2 status
pm2 logs --lines 20

After (Automated):

cd /home/luckychit/apps/chitfund
./deploy-full.sh

The script does everything automatically!


⚠️ Important Issues Identified

1. bcrypt Error (You Hit This Multiple Times)

Lines 204-214, 351-352: Had to remove node_modules repeatedly

Cause: Installing on Windows, running on Linux
Solution: Always npm install on the server

Your Scripts Now Handle This: Check before installing

2. No Database Backups

Critical: You have no automated backups!

Solution Created: backup-database.sh script ready to use

3. No Log Rotation

Impact: Logs will grow forever and fill disk

Quick Fix:

pm2 install pm2-logrotate

4. Not Using ecosystem.config.js

Impact: Single process, no cluster mode, no memory limits

I Fixed It: Updated to match your folder structure
To Use: See PRODUCTION_DIFFERENCES.md for migration guide


📊 Comparison: Your Setup vs Best Practices

Feature You Have Should Have Fix
PM2 Running Yes Yes -
Auto-restart Yes Yes -
Cluster Mode No Yes Use ecosystem.config.js
Memory Limit No Yes Use ecosystem.config.js
Log Rotation No Yes pm2 install pm2-logrotate
DB Backups No Yes Use backup-database.sh
nginx Disabled Enabled Re-enable for SSL
SSL/HTTPS No Yes Requires nginx

🎓 Key Insights from Your History

What Worked:

  1. PM2 auto-restart on reboot (lines 174-175)
  2. Simple deployment pattern (repeated successfully)
  3. Health check endpoint at /health
  4. Firewall configured for ports 3000, 8080

Pain Points:

  1. ⚠️ Repeated bcrypt errors (need to rebuild node_modules on server)
  2. ⚠️ Manual deployment is repetitive (now automated!)
  3. ⚠️ No backups (now have scripts!)
  4. ⚠️ Frontend not updating sometimes (scripts handle clean rebuild)

Unusual Patterns:

  1. Line 395: Copied to /var/www/luckychit/ but PM2 serves from build/web (not needed)
  2. Lines 253-254: Disabled nginx (should re-enable for SSL)
  3. Line 395: Using prodnew branch instead of main (that's fine)

🚨 Critical To-Do List

Priority 1: Do Today

  • Copy deployment scripts to server
  • Make scripts executable (./setup-deployment-scripts.sh)
  • Test deployment: ./deploy-full.sh
  • Set up database backups: ./backup-database.sh
  • Add backup to crontab (daily at 2 AM)

Priority 2: This Week

  • Install log rotation: pm2 install pm2-logrotate
  • Consider using ecosystem.config.js (better performance)
  • Re-enable nginx for SSL/HTTPS

Priority 3: This Month

  • Set up SSL certificate with Let's Encrypt
  • Test disaster recovery with ./restore-database.sh
  • Review and tune PM2 configuration

💡 Pro Tips

Tip 1: Bookmark QUICK_REFERENCE.md

Keep it open in your browser for instant access to commands.

Tip 2: Test Backups Monthly

./restore-database.sh

Select yesterday's backup and test the restore process.

Tip 3: Monitor PM2 Status

pm2 monit

Real-time CPU, memory, and logs.

Tip 4: Use Reload Instead of Restart

pm2 reload luckychit-api  # Zero downtime

Better than pm2 restart for production.

Tip 5: Check Logs After Every Deployment

./deploy-full.sh
pm2 logs --lines 50  # Always verify!

📞 Need Help?

  1. Quick command?QUICK_REFERENCE.md
  2. Deployment issue?DEPLOYMENT_MASTER_GUIDE.md
  3. Understanding setup?ACTUAL_PRODUCTION_SETUP.md
  4. Best practices?PM2_PRODUCTION_GUIDE.md

Summary

What I Did:

  • Analyzed 230 lines of your bash history
  • Documented your real production setup
  • Created 6 deployment/backup scripts
  • Created 5 comprehensive documentation files
  • Fixed your ecosystem.config.js to match your setup
  • Identified critical issues (no backups, log rotation, etc.)

What You Get:

  • One-command deployments (./deploy-full.sh)
  • Database backup/restore scripts
  • Complete production documentation
  • Quick reference guide for daily use
  • Clear upgrade path to best practices

What to Do Next:

  1. Copy scripts to production
  2. Test deployment script
  3. Set up automated backups
  4. Bookmark QUICK_REFERENCE.md

🎉 You're Ready!

Your production deployment is now documented, automated, and easier to manage.

Start with: DEPLOYMENT_MASTER_GUIDE.md or QUICK_REFERENCE.md

Happy deploying! 🚀