6.7 KiB
📝 Your Actual Production Setup - LuckyChit
This document reflects your actual PM2 production setup based on your deployment history.
🏗️ Current Architecture
Server Details
- User:
luckychit - Server IP:
192.168.8.148 - Domain:
chitfund.deepteklabs.com
Directory Structure
/home/luckychit/apps/chitfund/
├── backend/ # Node.js Express API
│ ├── src/server.js # Entry point
│ ├── .env # Environment variables
│ └── node_modules/
├── luckychit/ # Flutter app
│ ├── lib/
│ ├── web/
│ └── build/web/ # Built web files (served by PM2)
└── deploy-*.sh # Deployment scripts
PM2 Processes
| Process Name | Type | Command | Port | Status |
|---|---|---|---|---|
luckychit-api |
Backend | pm2 start src/server.js |
3000 | ✅ Running |
luckychit-frontend |
Frontend | pm2 serve build/web 8080 --spa |
8080 | ✅ Running |
Key Differences from PM2_PRODUCTION_GUIDE.md
❌ NOT using: ecosystem.config.js
❌ NOT using: Cluster mode
❌ NOT using: nginx (disabled in your setup)
✅ Using: Simple pm2 start command
✅ Using: PM2's built-in static server for frontend
✅ Using: Direct port access (3000 & 8080)
🚀 Deployment Commands
Quick Deploy (Both Backend & Frontend)
cd /home/luckychit/apps/chitfund
./deploy-full.sh
Backend Only
cd /home/luckychit/apps/chitfund
./deploy-backend-only.sh
Frontend Only
cd /home/luckychit/apps/chitfund
./deploy-frontend-only.sh
Manual Deployment (Step by Step)
Update Backend:
cd /home/luckychit/apps/chitfund
git pull origin prodnew
cd backend
npm install
pm2 restart luckychit-api
pm2 logs luckychit-api --lines 20
Update Frontend:
cd /home/luckychit/apps/chitfund
git pull origin prodnew
cd luckychit
flutter pub get
flutter build web --release
pm2 restart luckychit-frontend
pm2 logs luckychit-frontend --lines 20
🔍 Common PM2 Commands for Your Setup
# View all running processes
pm2 status
# View logs (live)
pm2 logs # All processes
pm2 logs luckychit-api # Backend only
pm2 logs luckychit-frontend # Frontend only
pm2 logs luckychit-api --lines 50 # Last 50 lines
# Restart processes
pm2 restart luckychit-api # With brief downtime
pm2 reload luckychit-api # Zero-downtime (better)
pm2 restart all # Restart everything
# Monitor real-time
pm2 monit # CPU, Memory, logs
# Stop processes (DON'T do this unless needed)
pm2 stop luckychit-api
pm2 stop all
# Delete process (removes from PM2 list)
pm2 delete luckychit-api
# Save current process list
pm2 save
# Clear logs
pm2 flush
🔧 Common Issues & Solutions
❌ Backend won't start: "invalid ELF header" (bcrypt error)
Cause: node_modules was installed on Windows, but server is Linux.
Fix:
cd /home/luckychit/apps/chitfund/backend
rm -rf node_modules package-lock.json
npm install
pm2 restart luckychit-api
❌ Frontend not updating after deployment
Fix:
cd /home/luckychit/apps/chitfund/luckychit
# Nuclear option - clean everything
flutter clean
rm -rf .dart_tool build
flutter pub get
flutter build web --release
pm2 restart luckychit-frontend
# Check browser cache too!
❌ Git pull conflicts
Fix:
git stash # Save local changes
git pull origin prodnew # Pull updates
git stash pop # Re-apply local changes (optional)
❌ PM2 process not found after reboot
Check auto-startup:
pm2 status
pm2 startup # Re-setup if needed
pm2 save # Save current processes
❌ Check if ports are accessible
# Test backend
curl http://localhost:3000/health
curl http://192.168.8.148:3000/health
# Test frontend
curl http://localhost:8080
curl http://192.168.8.148:8080
# Test from domain
curl https://chitfund.deepteklabs.com/health
❌ Firewall blocking ports
Fix:
sudo ufw status
sudo ufw allow 3000/tcp
sudo ufw allow 8080/tcp
sudo ufw reload
📊 Health Check URLs
After deployment, verify these URLs:
- Backend Health:
http://192.168.8.148:3000/health - Frontend:
http://192.168.8.148:8080 - Domain:
https://chitfund.deepteklabs.com
🔄 Your Git Workflow
Production Branch: prodnew (NOT main or master)
# On server - pull latest changes
cd /home/luckychit/apps/chitfund
git checkout prodnew
git pull origin prodnew
# From dev machine - push to production
git add .
git commit -m "Your changes"
git push origin prodnew
🛠️ Emergency Commands
Restart Everything
pm2 restart all
pm2 status
Kill Everything and Start Fresh
pm2 kill
pm2 save --force
# Then restart manually:
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
View Server Resource Usage
pm2 monit # PM2 monitoring
htop # General server monitoring
df -h # Disk space
free -h # Memory usage
📋 Pre-Deployment Checklist
Before deploying to production:
- Test changes locally
- Commit and push to
prodnewbranch - SSH into production server as
luckychituser - Run deployment script
- Check
pm2 status- all green - Check
pm2 logs- no errors - Test URLs work (backend & frontend)
- Verify functionality in browser
🎯 Quick Reference
# Daily deployment workflow
ssh luckychit@192.168.8.148
cd /home/luckychit/apps/chitfund
./deploy-full.sh
# Monitor after deployment
pm2 status
pm2 logs --lines 50
# If issues:
pm2 restart all
pm2 logs luckychit-api --lines 100
📞 Your PM2 Auto-Start Setup
Based on line 174 of your history:
pm2 startup systemd -u luckychit --hp /home/luckychit
pm2 save
This means PM2 automatically starts your apps when the server reboots. ✅
To verify:
systemctl status pm2-luckychit
🎓 Notes from Your History
- You disabled nginx (lines 253-254) - direct port access instead
- You're using the
prodnewgit branch for production - You had to fix bcrypt multiple times - always run
npm installon the server - You tested with local IP
192.168.8.148before domain - You set up firewall rules for ports 3000 and 8080
Last Updated: Based on your bash history (lines 173-403)
Need Help? Check PM2 logs first: pm2 logs --lines 100