9.3 KiB
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:
-
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 -
Secure JWT Secret
- Generate a strong random secret (32+ characters)
- Never commit .env to Git
- Use different secrets for dev/staging/production
-
Setup SSL/HTTPS
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d yourdomain.com -
Enable Fail2Ban (Optional but recommended)
sudo apt install fail2ban sudo systemctl enable fail2ban sudo systemctl start fail2ban -
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
- Proxmox Documentation
- Node.js Documentation
- Flutter Documentation
- PostgreSQL Documentation
- Nginx Documentation
- PM2 Documentation
🎯 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
-
Setup Monitoring
- Install monitoring tools (Netdata, Prometheus, etc.)
- Setup uptime monitoring (UptimeRobot, etc.)
- Configure email alerts
-
Performance Optimization
- Enable Nginx caching
- Configure database connection pooling
- Setup CDN for static assets
-
Backup Strategy
- Test backup restoration
- Setup off-site backups
- Document recovery procedures
-
Documentation
- Document your specific configuration
- Keep credentials in password manager
- Create runbook for common issues
-
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! 🚀