383 lines
9.3 KiB
Markdown
383 lines
9.3 KiB
Markdown
# 📦 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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**
|
|
```bash
|
|
# 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**
|
|
```bash
|
|
sudo apt install certbot python3-certbot-nginx
|
|
sudo certbot --nginx -d yourdomain.com
|
|
```
|
|
|
|
4. **Enable Fail2Ban** (Optional but recommended)
|
|
```bash
|
|
sudo apt install fail2ban
|
|
sudo systemctl enable fail2ban
|
|
sudo systemctl start fail2ban
|
|
```
|
|
|
|
5. **Regular Updates**
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
```bash
|
|
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
|
|
```bash
|
|
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
|
|
```bash
|
|
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
|
|
```bash
|
|
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](https://pve.proxmox.com/wiki/Main_Page)
|
|
- [Node.js Documentation](https://nodejs.org/en/docs/)
|
|
- [Flutter Documentation](https://docs.flutter.dev/)
|
|
- [PostgreSQL Documentation](https://www.postgresql.org/docs/)
|
|
- [Nginx Documentation](https://nginx.org/en/docs/)
|
|
- [PM2 Documentation](https://pm2.keymetrics.io/)
|
|
|
|
---
|
|
|
|
## 🎯 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! 🚀
|
|
|