second commit
This commit is contained in:
234
DEPLOYMENT_CHECKLIST.md
Normal file
234
DEPLOYMENT_CHECKLIST.md
Normal file
@ -0,0 +1,234 @@
|
||||
# QR Inventory Management System - Deployment Checklist
|
||||
|
||||
## Pre-Deployment Checklist
|
||||
|
||||
### System Requirements
|
||||
- [ ] Debian 13 VM is ready
|
||||
- [ ] Minimum 2GB RAM available
|
||||
- [ ] Minimum 1GB free disk space
|
||||
- [ ] Port 3000 is available
|
||||
- [ ] Network connectivity is working
|
||||
|
||||
### User Setup
|
||||
- [ ] Non-root user account created
|
||||
- [ ] User has sudo privileges
|
||||
- [ ] SSH access is configured
|
||||
|
||||
## Installation Steps
|
||||
|
||||
### 1. System Preparation
|
||||
- [ ] Update system packages: `sudo apt update && sudo apt upgrade -y`
|
||||
- [ ] Install Node.js 18+: `curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - && sudo apt-get install -y nodejs`
|
||||
- [ ] Install Git: `sudo apt install git -y`
|
||||
- [ ] Install build tools: `sudo apt install build-essential -y`
|
||||
- [ ] Verify Node.js: `node --version` (should be 18+)
|
||||
- [ ] Verify npm: `npm --version`
|
||||
|
||||
### 2. Project Setup
|
||||
- [ ] Copy project files to VM
|
||||
- [ ] Navigate to project directory: `cd /path/to/project`
|
||||
- [ ] Install dependencies: `npm install`
|
||||
- [ ] Create .env file with proper configuration
|
||||
- [ ] Create database directory: `mkdir -p db`
|
||||
|
||||
### 3. Database Setup
|
||||
- [ ] Generate Prisma client: `npm run db:generate`
|
||||
- [ ] Push database schema: `npm run db:push`
|
||||
- [ ] Verify database file exists: `ls -la db/custom.db`
|
||||
|
||||
### 4. Application Build
|
||||
- [ ] Build the application: `npm run build`
|
||||
- [ ] Check for build errors
|
||||
- [ ] Verify .next directory was created
|
||||
|
||||
## Testing Checklist
|
||||
|
||||
### 1. Development Mode Test
|
||||
- [ ] Start development server: `npm run dev`
|
||||
- [ ] Wait for "Ready on http://0.0.0.0:3000" message
|
||||
- [ ] Access application at http://localhost:3000
|
||||
- [ ] Verify all pages load correctly
|
||||
- [ ] Test QR code generation
|
||||
- [ ] Test QR code scanning
|
||||
- [ ] Test inventory management features
|
||||
|
||||
### 2. Production Mode Test
|
||||
- [ ] Stop development server (Ctrl+C)
|
||||
- [ ] Start production server: `npm start`
|
||||
- [ ] Access application at http://localhost:3000
|
||||
- [ ] Verify all features work in production
|
||||
- [ ] Check for any console errors
|
||||
|
||||
### 3. API Health Check
|
||||
- [ ] Test health endpoint: `curl http://localhost:3000/api/health`
|
||||
- [ ] Should return: `{"status":"ok","message":"API is running"}`
|
||||
- [ ] Test inventory API: `curl http://localhost:3000/api/inventory`
|
||||
|
||||
## Production Deployment
|
||||
|
||||
### 1. System Service Setup (Optional)
|
||||
- [ ] Copy systemd service file: `sudo cp qr-inventory.service /etc/systemd/system/`
|
||||
- [ ] Edit service file with correct user and path
|
||||
- [ ] Reload systemd: `sudo systemctl daemon-reload`
|
||||
- [ ] Enable service: `sudo systemctl enable qr-inventory`
|
||||
- [ ] Start service: `sudo systemctl start qr-inventory`
|
||||
- [ ] Check status: `sudo systemctl status qr-inventory`
|
||||
|
||||
### 2. Firewall Configuration
|
||||
- [ ] Check if UFW is enabled: `sudo ufw status`
|
||||
- [ ] Allow port 3000: `sudo ufw allow 3000`
|
||||
- [ ] Or allow HTTP/HTTPS if using reverse proxy
|
||||
|
||||
### 3. Reverse Proxy Setup (Optional)
|
||||
- [ ] Install Nginx: `sudo apt install nginx -y`
|
||||
- [ ] Create Nginx configuration file
|
||||
- [ ] Enable the site: `sudo ln -s /etc/nginx/sites-available/qr-inventory /etc/nginx/sites-enabled/`
|
||||
- [ ] Test Nginx config: `sudo nginx -t`
|
||||
- [ ] Restart Nginx: `sudo systemctl restart nginx`
|
||||
|
||||
### 4. SSL Certificate (Optional)
|
||||
- [ ] Install Certbot: `sudo apt install certbot python3-certbot-nginx -y`
|
||||
- [ ] Obtain certificate: `sudo certbot --nginx -d your-domain.com`
|
||||
- [ ] Test auto-renewal: `sudo certbot renew --dry-run`
|
||||
|
||||
## Network Access
|
||||
|
||||
### 1. Local Access
|
||||
- [ ] Access via localhost: http://localhost:3000
|
||||
- [ ] Verify all features work
|
||||
|
||||
### 2. Network Access
|
||||
- [ ] Find VM IP address: `hostname -I`
|
||||
- [ ] Access via IP: http://<vm-ip>:3000
|
||||
- [ ] Test from different machines on network
|
||||
|
||||
### 3. Domain Access (if configured)
|
||||
- [ ] Access via domain: http://your-domain.com
|
||||
- [ ] Test HTTPS: https://your-domain.com
|
||||
|
||||
## Security Checklist
|
||||
|
||||
### 1. Basic Security
|
||||
- [ ] Change default passwords if any
|
||||
- [ ] Update system regularly
|
||||
- [ ] Use SSH key authentication
|
||||
- [ ] Disable root SSH login
|
||||
|
||||
### 2. Application Security
|
||||
- [ ] Use HTTPS in production
|
||||
- [ ] Set up proper environment variables
|
||||
- [ ] Don't commit sensitive data to git
|
||||
- [ ] Use strong database credentials
|
||||
|
||||
### 3. Network Security
|
||||
- [ ] Configure firewall properly
|
||||
- [ ] Only expose necessary ports
|
||||
- [ ] Use fail2ban if needed
|
||||
- [ ] Monitor access logs
|
||||
|
||||
## Maintenance Checklist
|
||||
|
||||
### 1. Backup Setup
|
||||
- [ ] Set up database backups
|
||||
- [ ] Test backup restoration
|
||||
- [ ] Set up off-site backups
|
||||
- [ ] Document backup procedure
|
||||
|
||||
### 2. Monitoring
|
||||
- [ ] Set up log monitoring
|
||||
- [ ] Configure log rotation
|
||||
- [ ] Set up alerts for downtime
|
||||
- [ ] Monitor disk space
|
||||
|
||||
### 3. Updates
|
||||
- [ ] Regular system updates: `sudo apt update && sudo apt upgrade`
|
||||
- [ ] Update npm packages: `npm update`
|
||||
- [ ] Check for security updates
|
||||
- [ ] Test updates before deployment
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### 1. Common Issues
|
||||
- [ ] Port conflicts: Check with `sudo lsof -i :3000`
|
||||
- [ ] Permission issues: Check file ownership
|
||||
- [ ] Database issues: Check database file permissions
|
||||
- [ ] Build errors: Clear .next directory and rebuild
|
||||
|
||||
### 2. Log Files
|
||||
- [ ] Application logs: `tail -f server.log`
|
||||
- [ ] Development logs: `tail -f dev.log`
|
||||
- [ ] System service logs: `sudo journalctl -u qr-inventory`
|
||||
- [ ] Nginx logs: `sudo tail -f /var/log/nginx/access.log`
|
||||
|
||||
### 3. Health Checks
|
||||
- [ ] API health: `curl http://localhost:3000/api/health`
|
||||
- [ ] Database connectivity: Check if db/custom.db exists
|
||||
- [ ] Service status: `sudo systemctl status qr-inventory`
|
||||
|
||||
## Final Verification
|
||||
|
||||
### 1. Full Application Test
|
||||
- [ ] Add inventory item
|
||||
- [ ] Generate QR code
|
||||
- [ ] Scan QR code
|
||||
- [ ] Update quantity
|
||||
- [ ] Print labels
|
||||
- [ ] Import/export data
|
||||
- [ ] Test on mobile device
|
||||
|
||||
### 2. Performance Test
|
||||
- [ ] Check page load times
|
||||
- [ ] Test with multiple users
|
||||
- [ ] Monitor memory usage
|
||||
- [ ] Check database performance
|
||||
|
||||
### 3. Documentation
|
||||
- [ ] Update setup documentation
|
||||
- [ ] Document any custom configurations
|
||||
- [ ] Create user guide
|
||||
- [ ] Document backup procedures
|
||||
|
||||
---
|
||||
|
||||
## Quick Start Commands
|
||||
|
||||
```bash
|
||||
# Update system
|
||||
sudo apt update && sudo apt upgrade -y
|
||||
|
||||
# Install Node.js
|
||||
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
|
||||
sudo apt-get install -y nodejs
|
||||
|
||||
# Install dependencies with legacy peer deps for React 19 compatibility
|
||||
npm install --legacy-peer-deps
|
||||
|
||||
# Setup database
|
||||
npm run db:generate
|
||||
npm run db:push
|
||||
|
||||
# Build and run
|
||||
npm run build
|
||||
npm start
|
||||
```
|
||||
|
||||
## Emergency Commands
|
||||
|
||||
```bash
|
||||
# Stop the application
|
||||
sudo systemctl stop qr-inventory
|
||||
|
||||
# Restart the application
|
||||
sudo systemctl restart qr-inventory
|
||||
|
||||
# Check logs
|
||||
sudo journalctl -u qr-inventory -f
|
||||
|
||||
# Reset database
|
||||
rm -f db/custom.db
|
||||
npm run db:push
|
||||
|
||||
# Clean build
|
||||
rm -rf .next
|
||||
npm run build
|
||||
```
|
||||
Reference in New Issue
Block a user