- Added complete Next.js frontend with responsive design - Added NestJS backend with PostgreSQL and Redis - Added comprehensive VPS deployment script (vps-deploy.sh) - Added deployment guide and documentation - Added all assets and static files - Configured SSL, Nginx, PM2, and monitoring - Ready for production deployment on any VPS
5.6 KiB
5.6 KiB
🚀 Laca City Website - VPS Deployment Guide
This guide will help you deploy your Laca City website to a VPS with a custom domain using a single script.
📋 Prerequisites
VPS Requirements
- OS: Ubuntu 20.04+ or Debian 11+
- RAM: Minimum 2GB (4GB recommended)
- Storage: Minimum 20GB SSD
- CPU: 2+ cores recommended
- Root/Sudo access: Required
Domain Requirements
- Domain name pointed to your VPS IP address
- DNS A record:
yourdomain.com→your-vps-ip - DNS A record:
www.yourdomain.com→your-vps-ip
Before You Start
- VPS is running Ubuntu/Debian
- You have SSH access to your VPS
- Domain DNS is properly configured
- You have a valid email address for SSL certificate
🎯 Quick Deployment
Step 1: Upload Files to VPS
# Option 1: Using SCP
scp -r /path/to/your/project your-user@your-vps-ip:/home/your-user/
# Option 2: Using rsync
rsync -avz --progress /path/to/your/project/ your-user@your-vps-ip:/home/your-user/project/
# Option 3: Using Git (if your project is on GitHub)
git clone https://github.com/your-username/your-repo.git
Step 2: Run the Deployment Script
# SSH into your VPS
ssh your-user@your-vps-ip
# Navigate to your project directory
cd /path/to/your/project
# Run the deployment script
./vps-deploy.sh
Step 3: Follow the Interactive Setup
The script will ask you for:
- Domain name: e.g.,
lacacity.com - Email: For SSL certificate (e.g.,
admin@lacacity.com) - Database password: Leave empty to auto-generate
🛠️ What the Script Does
System Setup
- ✅ Updates Ubuntu/Debian packages
- ✅ Installs Node.js 18.x and npm
- ✅ Installs PM2 process manager
- ✅ Configures UFW firewall
- ✅ Installs and configures Nginx
- ✅ Sets up Let's Encrypt SSL certificates
Database Setup
- ✅ Installs and configures PostgreSQL
- ✅ Creates database and user
- ✅ Installs and configures Redis
Application Deployment
- ✅ Installs frontend and backend dependencies
- ✅ Creates production environment files
- ✅ Builds Next.js frontend and NestJS backend
- ✅ Configures PM2 for process management
- ✅ Sets up Nginx reverse proxy
Monitoring & Maintenance
- ✅ Sets up log rotation
- ✅ Creates automated backup scripts
- ✅ Configures SSL auto-renewal
- ✅ Creates deployment update scripts
🔧 Post-Deployment Commands
Check Application Status
# View PM2 processes
pm2 list
pm2 monit
# View application logs
pm2 logs
# Check Nginx status
sudo systemctl status nginx
# Check database status
sudo systemctl status postgresql
Application Management
# Restart applications
pm2 restart all
# Stop applications
pm2 stop all
# Reload Nginx configuration
sudo systemctl reload nginx
# View SSL certificate info
sudo certbot certificates
Maintenance
# Manual backup
sudo /usr/local/bin/backup-laca-city
# Deploy updates (after uploading new code)
./deploy-update.sh
# View system resources
htop
🌐 Accessing Your Website
After successful deployment:
- Website:
https://yourdomain.com - API:
https://yourdomain.com/api - SSL: Automatically configured with Let's Encrypt
📁 Important File Locations
/var/www/laca-city/ # Main application directory
├── frontend/ # Next.js frontend
├── backend/ # NestJS backend
├── ecosystem.config.js # PM2 configuration
└── deploy-update.sh # Update deployment script
/etc/nginx/sites-available/laca-city # Nginx configuration
/var/log/pm2/ # Application logs
/var/backups/laca-city/ # Backup directory
🔒 Security Features
- ✅ HTTPS with automatic SSL renewal
- ✅ Firewall configured (UFW)
- ✅ Security headers in Nginx
- ✅ Database with encrypted password
- ✅ Environment variables for sensitive data
🚨 Troubleshooting
Common Issues
Domain not accessible:
# Check DNS
nslookup yourdomain.com
# Check Nginx
sudo nginx -t
sudo systemctl status nginx
# Check SSL
sudo certbot certificates
Applications not running:
# Check PM2 status
pm2 list
pm2 logs
# Restart applications
pm2 restart all
Database connection issues:
# Check PostgreSQL
sudo systemctl status postgresql
# Test database connection
sudo -u postgres psql -d laca_city_db
Getting Help
If you encounter issues:
- Check the logs:
pm2 logs - Verify all services are running
- Check firewall settings:
sudo ufw status - Verify DNS configuration
🔄 Updating Your Website
To deploy updates to your website:
- Upload new files to VPS
- Run the update script:
./deploy-update.sh
The update script will:
- Create a backup
- Install new dependencies
- Rebuild applications
- Restart services
- Reload Nginx
💾 Backup & Recovery
Automated Backups
- Daily backups at 2 AM
- Keeps 7 days of backups
- Location:
/var/backups/laca-city/
Manual Backup
sudo /usr/local/bin/backup-laca-city
Restore from Backup
# Extract backup
cd /var/backups/laca-city
tar -xzf backup_YYYYMMDD_HHMMSS.tar.gz
# Restore database
sudo -u postgres psql -d laca_city_db < backup_YYYYMMDD_HHMMSS/database.sql
📞 Support
For additional support or questions about the deployment process, please check:
- Application logs:
pm2 logs - System logs:
sudo journalctl -f - Nginx logs:
sudo tail -f /var/log/nginx/error.log
🎉 Congratulations! Your Laca City website is now live and running on your VPS with a custom domain and SSL certificate!