#!/bin/bash # Project Tracker Deployment Script # Run on project-tracker (10.10.11.103) as root set -e echo "=== Project Tracker Deployment ===" # 1. Install dependencies echo "[1/6] Installing nginx, node, npm..." apt-get update -qq apt-get install -y -qq nginx nodejs npm > /dev/null 2>&1 # 2. Create directories echo "[2/6] Creating directories..." mkdir -p /opt/project-tracker/backend /opt/project-tracker/data /opt/project-tracker/frontend # 3. Install Node dependencies echo "[3/6] Installing Node dependencies..." cd /opt/project-tracker/backend npm install --silent express better-sqlite3 cors # 4. Deploy backend server.js (already created locally and needs to be copied) # 5. Deploy frontend (already created locally and needs to be copied) # 6. Start services... # 7. Set up systemd service echo "[4/6] Setting up systemd service..." cat > /etc/systemd/system/project-tracker.service << 'EOF' [Unit] Description=Project Tracker API After=network.target [Service] Type=simple WorkingDirectory=/opt/project-tracker/backend ExecStart=/usr/bin/node server.js Restart=always RestartSec=5 User=root [Install] WantedBy=multi-user.target EOF systemctl daemon-reload systemctl enable project-tracker systemctl restart project-tracker # 8. Configure nginx echo "[5/6] Configuring nginx..." cp /opt/project-tracker/nginx.conf /etc/nginx/sites-available/project-tracker ln -sf /etc/nginx/sites-available/project-tracker /etc/nginx/sites-enabled/project-tracker nginx -t && systemctl reload nginx # 9. Verify echo "[6/6] Verifying..." sleep 2 curl -s http://localhost:3000/api/projects | head -c 100 echo "" curl -s -o /dev/null -w "Frontend: %{http_code}\n" http://localhost/ echo "" systemctl status project-tracker --no-pager | grep -E 'Active|loaded' echo "" echo "=== Done! ===" echo "Access at: http://10.10.11.103"