chitfund/DEPLOYMENT_README.md

9.3 KiB

📦 LuckyChit Deployment Files

This directory contains everything you need to deploy your LuckyChit application on Proxmox LXC.

📚 Documentation Files

1. PROXMOX_DEPLOYMENT_GUIDE.md Main Guide

  • Comprehensive step-by-step deployment guide
  • Covers everything from LXC creation to production deployment
  • Includes troubleshooting, security checklist, and maintenance
  • Time Required: 30-45 minutes
  • Recommended for: First-time deployments

2. QUICK_DEPLOY.md Quick Reference

  • Quick command reference for experienced users
  • One-liner commands for common operations
  • Useful paths and troubleshooting commands
  • Time Required: 20-30 minutes
  • Recommended for: Quick deployments or reference

3. deploy.sh 🤖 Automated Script

  • Automated deployment script
  • Installs all prerequisites automatically
  • Sets up database, users, and configuration
  • Time Required: 10-15 minutes + manual code deployment
  • Recommended for: Fastest deployment

🚀 Which Method Should You Use?

Option 1: Automated Script (Fastest)

Best for: Quick setup, first-time Linux users

# 1. Create Ubuntu 22.04 LXC on Proxmox
# 2. Enter the container
pct enter <container-id>

# 3. Download and run the script
curl -o deploy.sh https://raw.githubusercontent.com/YOUR_REPO/deploy.sh
chmod +x deploy.sh
sudo ./deploy.sh

# 4. Upload your code and deploy
# Follow the on-screen instructions

Pros:

  • Fastest method
  • Less room for error
  • Automatically configures everything

Cons:

  • Less learning opportunity
  • Requires internet connection

Option 2: Manual Deployment (Learning & Control) 📖

Best for: Understanding the system, custom configurations

# Follow PROXMOX_DEPLOYMENT_GUIDE.md step-by-step

Pros:

  • Full control over every step
  • Better understanding of the system
  • Easy to customize
  • Learn server administration

Cons:

  • Takes longer
  • More typing

Option 3: Quick Commands (Experienced Users)

Best for: Experienced admins, subsequent deployments

# Use QUICK_DEPLOY.md for rapid deployment
# Copy-paste command blocks

Pros:

  • Fast for experienced users
  • Good for reference
  • Flexible

Cons:

  • Requires Linux experience
  • Easy to miss steps if not careful

🗂️ Project Structure After Deployment

/home/luckychit/
├── apps/
│   └── chitfund/
│       ├── backend/              # Node.js backend
│       │   ├── src/
│       │   ├── .env              # Environment variables (KEEP SECURE!)
│       │   └── package.json
│       └── luckychit/            # Flutter frontend
│           ├── lib/
│           ├── build/web/        # Built web files
│           └── pubspec.yaml
├── logs/                         # Application logs
├── backups/                      # Database backups
└── backup-db.sh                  # Backup script

/var/www/luckychit/               # Nginx web root (Flutter web)
/etc/nginx/sites-available/       # Nginx configuration
/var/log/nginx/                   # Nginx logs

📋 Deployment Checklist

Pre-Deployment

  • Proxmox LXC container created (Ubuntu 22.04)
  • Container has network access
  • You have root/sudo access
  • You have your code ready (Git repo or files to upload)

During Deployment

  • System updated
  • Node.js installed (v20)
  • PostgreSQL installed and configured
  • Nginx installed
  • PM2 installed
  • Flutter installed (for web build)
  • Firewall configured
  • Database created with secure password
  • Backend code deployed
  • Frontend built and deployed
  • PM2 configured to auto-start
  • Nginx configured correctly

Post-Deployment

  • Test health endpoint: curl http://localhost:3000/health
  • Test frontend: Visit http://YOUR_IP
  • Test API: Try login from frontend
  • Check logs: pm2 logs
  • Setup SSL certificate (Let's Encrypt)
  • Configure automated backups
  • Document your credentials (securely!)
  • Test from external network

🔐 Important Security Notes

Immediately After Deployment:

  1. Change Default Passwords

    # PostgreSQL password
    sudo -u postgres psql
    ALTER USER luckychit WITH PASSWORD 'new_secure_password';
    
    # Update .env file accordingly
    nano /home/luckychit/apps/chitfund/backend/.env
    
  2. Secure JWT Secret

    • Generate a strong random secret (32+ characters)
    • Never commit .env to Git
    • Use different secrets for dev/staging/production
  3. Setup SSL/HTTPS

    sudo apt install certbot python3-certbot-nginx
    sudo certbot --nginx -d yourdomain.com
    
  4. Enable Fail2Ban (Optional but recommended)

    sudo apt install fail2ban
    sudo systemctl enable fail2ban
    sudo systemctl start fail2ban
    
  5. Regular Updates

    # Create update script
    echo '#!/bin/bash' > ~/update-system.sh
    echo 'apt update && apt upgrade -y' >> ~/update-system.sh
    chmod +x ~/update-system.sh
    
    # Run weekly via crontab
    # 0 3 * * 0 /root/update-system.sh
    

🛠️ Common Post-Deployment Tasks

Update Application Code

# Backend
cd /home/luckychit/apps/chitfund/backend
git pull
npm install --production
pm2 reload luckychit-api

# Frontend
cd /home/luckychit/apps/chitfund/luckychit
git pull
flutter pub get
flutter build web --release
sudo cp -r build/web/* /var/www/luckychit/

View Logs

# PM2 logs (backend)
pm2 logs luckychit-api

# Nginx access logs
sudo tail -f /var/log/nginx/access.log

# Nginx error logs
sudo tail -f /var/log/nginx/error.log

# PostgreSQL logs
sudo tail -f /var/log/postgresql/postgresql-14-main.log

Database Backup & Restore

# Manual backup
pg_dump -U luckychit -h localhost luckychit > backup.sql

# Restore
psql -U luckychit -h localhost luckychit < backup.sql

# Automated backups are already setup (runs daily at 2 AM)
# Check /home/luckychit/backups/

Monitor Resources

# System resources
htop

# PM2 monitoring
pm2 monit

# Disk space
df -h

# Memory
free -h

# Network connections
sudo netstat -tulpn

🆘 Troubleshooting Quick Guide

Backend Won't Start

pm2 logs luckychit-api              # Check logs
node /home/luckychit/apps/chitfund/backend/test-db-connection.js  # Test DB
cat /home/luckychit/apps/chitfund/backend/.env  # Verify config

Can't Access from Browser

sudo ufw status                     # Check firewall
sudo systemctl status nginx         # Check Nginx
sudo nginx -t                       # Test Nginx config
curl http://localhost:3000/health   # Test backend locally

Database Connection Issues

sudo systemctl status postgresql    # Check PostgreSQL
sudo -u postgres psql               # Try connecting
# Inside psql: \l                   # List databases
# Inside psql: \du                  # List users

Out of Disk Space

df -h                               # Check space
du -sh /home/luckychit/* | sort -h  # Find large directories
pm2 flush                           # Clear PM2 logs
sudo journalctl --vacuum-time=3d    # Clear system logs

📞 Support Resources

  • Full Guide: PROXMOX_DEPLOYMENT_GUIDE.md
  • Quick Commands: QUICK_DEPLOY.md
  • Automated Script: deploy.sh

External Resources


🎯 Success Criteria

Your deployment is successful when:

  • Frontend loads in browser: http://YOUR_IP
  • Health endpoint responds: http://YOUR_IP/health
  • Can login and use the application
  • PM2 shows app running: pm2 status
  • Nginx is running: sudo systemctl status nginx
  • Database is accessible: psql -U luckychit -d luckychit -h localhost
  • Application survives reboot (test with sudo reboot)
  • Firewall is enabled: sudo ufw status
  • Automated backups are scheduled: crontab -l

📈 Next Steps After Deployment

  1. Setup Monitoring

    • Install monitoring tools (Netdata, Prometheus, etc.)
    • Setup uptime monitoring (UptimeRobot, etc.)
    • Configure email alerts
  2. Performance Optimization

    • Enable Nginx caching
    • Configure database connection pooling
    • Setup CDN for static assets
  3. Backup Strategy

    • Test backup restoration
    • Setup off-site backups
    • Document recovery procedures
  4. Documentation

    • Document your specific configuration
    • Keep credentials in password manager
    • Create runbook for common issues
  5. Team Access

    • Create additional user accounts if needed
    • Setup SSH key authentication
    • Configure proper permissions

🎉 You're All Set!

Your LuckyChit application should now be running smoothly on Proxmox LXC.

Remember:

  • Keep your system updated
  • Monitor logs regularly
  • Test backups periodically
  • Use HTTPS in production
  • Document any custom changes

Good luck! 🚀