chitfund/ACTUAL_PRODUCTION_SETUP.md

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 prodnew branch
  • SSH into production server as luckychit user
  • 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

  1. You disabled nginx (lines 253-254) - direct port access instead
  2. You're using the prodnew git branch for production
  3. You had to fix bcrypt multiple times - always run npm install on the server
  4. You tested with local IP 192.168.8.148 before domain
  5. 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