# Deployment Guide ## Overview This guide covers the deployment of the Inventory Barcode System in production environments. The system supports both Docker-based containerized deployment and traditional server deployment. ## Prerequisites ### System Requirements **Minimum Requirements:** - CPU: 2 cores - RAM: 2GB - Storage: 10GB free space - OS: Linux, Windows, or macOS **Recommended Requirements:** - CPU: 4 cores - RAM: 4GB - Storage: 50GB free space - OS: Linux (Ubuntu 20.04+ or CentOS 8+) ### Software Dependencies **Required:** - Docker 20.10+ - Docker Compose 2.0+ - Node.js 18+ (for non-Docker deployment) **Optional:** - Nginx (for reverse proxy) - SSL certificates (for HTTPS) ## Docker Deployment (Recommended) ### Quick Start 1. **Clone the repository:** ```bash git clone cd inventory-barcode-system ``` 2. **Configure environment:** ```bash cp .env.example .env # Edit .env file with your settings ``` 3. **Deploy with Docker Compose:** ```bash # Linux/macOS ./scripts/deploy.sh # Windows PowerShell .\scripts\deploy.ps1 ``` 4. **Verify deployment:** ```bash curl http://localhost:3000/health ``` ### Environment Configuration Edit the `.env` file with your production settings: ```bash # Server Configuration NODE_ENV=production PORT=3000 HOST=0.0.0.0 # Database Configuration DATABASE_PATH=./data/inventory.db DATABASE_BACKUP_PATH=./data/backups DATABASE_BACKUP_INTERVAL=3600000 # File Upload Configuration UPLOAD_MAX_SIZE=10485760 TEMP_DIR=./data/temp # Logging Configuration LOG_LEVEL=info LOG_DIR=./logs # Backup Configuration BACKUP_ENABLED=true BACKUP_SCHEDULE=0 2 * * * BACKUP_RETENTION_DAYS=30 ``` ### Docker Compose Configuration The `docker-compose.yml` file includes: - **Application container** with health checks - **Persistent volumes** for data and logs - **Environment variable** configuration - **Automatic restart** policies ### Deployment Commands ```bash # Deploy application ./scripts/deploy.sh deploy # Check status ./scripts/deploy.sh status # View logs ./scripts/deploy.sh logs # Restart application ./scripts/deploy.sh restart # Stop application ./scripts/deploy.sh stop # Rollback deployment ./scripts/deploy.sh rollback ``` ## Manual Deployment ### Server Setup 1. **Install Node.js:** ```bash # Ubuntu/Debian curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt-get install -y nodejs # CentOS/RHEL curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash - sudo yum install -y nodejs ``` 2. **Install system dependencies:** ```bash # Ubuntu/Debian sudo apt-get update sudo apt-get install -y build-essential python3 sqlite3 # CentOS/RHEL sudo yum groupinstall -y "Development Tools" sudo yum install -y python3 sqlite ``` 3. **Create application user:** ```bash sudo useradd -m -s /bin/bash inventory sudo usermod -aG sudo inventory ``` ### Application Deployment 1. **Deploy application files:** ```bash # Copy files to server scp -r . inventory@server:/opt/inventory-barcode-system/ # Set permissions sudo chown -R inventory:inventory /opt/inventory-barcode-system ``` 2. **Install dependencies:** ```bash cd /opt/inventory-barcode-system npm ci --only=production ``` 3. **Configure environment:** ```bash cp .env.example .env # Edit .env with production settings ``` 4. **Create systemd service:** ```bash sudo tee /etc/systemd/system/inventory-barcode.service > /dev/null < /dev/null < /dev/null <