9.9 KiB
📚 LuckyChit Production Deployment - Master Guide
Created: November 5, 2025
Based on: Your actual bash history and production setup
This guide documents your real production PM2 setup and provides everything you need to deploy and manage your LuckyChit application.
📖 Documentation Index
🎯 Start Here
-
QUICK_REFERENCE.md - Your daily command cheat sheet
Start here for common tasks and quick fixes -
ACTUAL_PRODUCTION_SETUP.md - Your real production configuration
Understanding what you currently have running
📚 Detailed Guides
-
PM2_PRODUCTION_GUIDE.md - Best practices and recommendations
Industry standard PM2 setup guide -
PRODUCTION_DIFFERENCES.md - What's different and why
Comparison between your setup and best practices -
PRODUCTION_UPDATE_GUIDE.md - Existing update guide
Your previous deployment documentation
🚀 Deployment Scripts
All scripts are ready to use on your production server at /home/luckychit/apps/chitfund/
Main Deployment Scripts
| Script | Purpose | When to Use |
|---|---|---|
deploy-full.sh |
Deploy backend + frontend | Most code updates |
deploy-backend-only.sh |
Deploy backend only | API/backend changes only |
deploy-frontend-only.sh |
Deploy frontend only | UI/frontend changes only |
Usage:
ssh luckychit@192.168.8.148
cd /home/luckychit/apps/chitfund
./deploy-full.sh
Database Management Scripts
| Script | Purpose | When to Use |
|---|---|---|
backup-database.sh |
Backup PostgreSQL database | Daily (automated via cron) |
restore-database.sh |
Restore from backup | Emergency recovery |
Usage:
# Backup
./backup-database.sh
# Restore
./restore-database.sh
# (Will show list of backups to choose from)
⚡ Quick Start Guide
First Time Setup (Already Done!)
Your production is already set up with:
- ✅ PM2 running backend on port 3000
- ✅ PM2 serving frontend on port 8080
- ✅ Auto-start on server reboot configured
- ✅ Git repository at
/home/luckychit/apps/chitfund
Daily Deployment Workflow
# 1. On your dev machine: Commit and push changes
git add .
git commit -m "Your changes"
git push origin prodnew
# 2. SSH into production server
ssh luckychit@192.168.8.148
# 3. Navigate to project
cd /home/luckychit/apps/chitfund
# 4. Run deployment script
./deploy-full.sh
# 5. Verify
pm2 status
pm2 logs --lines 20
# 6. Test in browser
# Backend: http://192.168.8.148:3000/health
# Frontend: http://192.168.8.148:8080
📊 Current Production Setup
Server Details
Server IP: 192.168.8.148
Domain: chitfund.deepteklabs.com
User: luckychit
Home: /home/luckychit
Project: /home/luckychit/apps/chitfund
Branch: prodnew
Running Services (PM2)
┌─────────────────────┬─────┬────────┬─────────┐
│ App Name │ PID │ Status │ Port │
├─────────────────────┼─────┼────────┼─────────┤
│ luckychit-api │ ... │ online │ 3000 │
│ luckychit-frontend │ ... │ online │ 8080 │
└─────────────────────┴─────┴────────┴─────────┘
Directory Structure
/home/luckychit/apps/chitfund/
├── backend/ # Node.js Express API
│ ├── src/
│ │ └── server.js # Entry point (started by PM2)
│ ├── ecosystem.config.js # PM2 config (not currently used)
│ ├── .env # Environment variables
│ └── package.json
│
├── luckychit/ # Flutter application
│ ├── lib/ # Dart source code
│ ├── web/ # Web-specific files
│ └── build/web/ # Built files (served by PM2)
│
├── deploy-full.sh # Main deployment script
├── deploy-backend-only.sh # Backend deployment
├── deploy-frontend-only.sh # Frontend deployment
├── backup-database.sh # Database backup
└── restore-database.sh # Database restore
🎯 Most Common Tasks
✅ Deploy Code Update
cd /home/luckychit/apps/chitfund
./deploy-full.sh
✅ View Logs
pm2 logs # Live logs
pm2 logs luckychit-api --lines 50 # Backend logs
✅ Check Status
pm2 status
✅ Restart Services
pm2 restart all
✅ Backup Database
./backup-database.sh
⚠️ Common Issues & Solutions
Issue: "invalid ELF header" (bcrypt error)
Cause: node_modules installed on Windows
Fix:
cd /home/luckychit/apps/chitfund/backend
rm -rf node_modules package-lock.json
npm install
pm2 restart luckychit-api
Issue: Frontend not updating
Fix:
cd /home/luckychit/apps/chitfund/luckychit
flutter clean
rm -rf .dart_tool build
flutter pub get
flutter build web --release
pm2 restart luckychit-frontend
Issue: Git pull conflicts
Fix:
git stash
git pull origin prodnew
Issue: PM2 not running after reboot
Fix:
pm2 resurrect
# or
pm2 startup
pm2 save
🔧 Maintenance Tasks
Daily
- ✅ Check
pm2 statusfor any crashed processes - ✅ Review
pm2 logsfor errors - ✅ Monitor disk space:
df -h
Weekly
- ✅ Backup database manually:
./backup-database.sh - ✅ Review backup retention:
ls -lh /home/luckychit/backups/ - ✅ Check log sizes:
du -h backend/logs/
Monthly
- ✅ Update dependencies:
npm update(test first!) - ✅ Review PM2 configuration
- ✅ Test disaster recovery with a restore
🚨 Emergency Procedures
Complete PM2 Reset
pm2 kill
pm2 save --force
# Restart from scratch
cd /home/luckychit/apps/chitfund/backend
pm2 start src/server.js --name luckychit-api
cd ../luckychit
pm2 serve build/web 8080 --name luckychit-frontend --spa
pm2 save
pm2 status
Database Recovery
./restore-database.sh
# Follow prompts to select backup
Server Won't Start
# Check logs
pm2 logs --lines 200
# Check database
psql -U luckychit -h localhost -d luckychit
# Check ports
netstat -tulpn | grep -E '(3000|8080)'
# Check environment
cd /home/luckychit/apps/chitfund/backend
cat .env
📈 Performance Optimization (Optional Upgrade)
Your current setup works but could be improved. See PRODUCTION_DIFFERENCES.md for:
- Use ecosystem.config.js - Enable cluster mode for better performance
- Enable nginx - Add SSL and reverse proxy
- Setup log rotation - Prevent disk space issues
- Automated backups - Schedule daily database backups
- Memory limits - Prevent crashes from memory leaks
To upgrade:
cd /home/luckychit/apps/chitfund/backend
pm2 delete luckychit-api
pm2 start ecosystem.config.js --env production
pm2 save
📞 Support Resources
Documentation Files
QUICK_REFERENCE.md- Command cheat sheetACTUAL_PRODUCTION_SETUP.md- Current setup detailsPM2_PRODUCTION_GUIDE.md- Best practicesPRODUCTION_DIFFERENCES.md- Comparison guide
External Resources
- PM2 Docs: https://pm2.keymetrics.io/docs/
- Flutter Deployment: https://docs.flutter.dev/deployment/web
- PostgreSQL Backup: https://www.postgresql.org/docs/current/backup.html
Quick Help Commands
# PM2 help
pm2 --help
pm2 start --help
# Check versions
pm2 --version
node --version
flutter --version
# Check system resources
pm2 monit
htop
df -h
📋 Pre-Flight Checklist
Before any deployment, verify:
- Changes tested locally
- Committed to
prodnewbranch - Pushed to remote repository
- SSH access to production server
- No one else is deploying
- Database backup is recent (< 24 hours)
After deployment, verify:
pm2 statusshows all processes online- No errors in
pm2 logs - Backend health check responds:
curl http://localhost:3000/health - Frontend loads:
curl http://localhost:8080 - Test critical user flows (login, etc.)
🎓 Understanding Your Setup
How PM2 Was Set Up (From Your History)
Line 173: Started backend
pm2 start src/server.js --name luckychit-api
Lines 174-175: Configured auto-restart on server reboot
pm2 startup systemd -u luckychit --hp /home/luckychit
pm2 save
Lines 244-250: Built and deployed frontend
flutter build web --release
pm2 serve /home/luckychit/apps/chitfund/luckychit/build/web 8080 --name luckychit-frontend --spa
pm2 save
Your Typical Update Pattern (Lines 369-388)
- Navigate to project root
git pull origin prodnew- Backend:
cd backend && npm install && pm2 restart luckychit-api - Frontend:
cd luckychit && flutter pub get && flutter build web --release && pm2 restart luckychit-frontend - Verify with
pm2 statusandpm2 logs
🎉 You're All Set!
Your production environment is documented and you have:
✅ Deployment scripts for easy updates
✅ Backup scripts for database safety
✅ Quick reference for daily commands
✅ Comprehensive guides for troubleshooting
✅ Emergency procedures for worst-case scenarios
Next Steps:
- Bookmark
QUICK_REFERENCE.mdfor daily use - Set up automated database backups (cron job)
- Consider upgrading to ecosystem.config.js for better performance
- Test the deployment scripts on your next update
Need Help? Start with QUICK_REFERENCE.md and work your way through the other guides as needed.
Happy Deploying! 🚀