Complete installation instructions for Unity Tools on Ubuntu Server 22.04.
- Operating System: Ubuntu Server 22.04 LTS (or compatible)
- CPU: 2+ cores recommended
- RAM: 2GB minimum, 4GB recommended
- Disk Space: 5GB available space
- Network: Access to Avigilon Unity Web Endpoint server
Docker provides the easiest and most reliable installation method.
# Update package index
sudo apt update
# Install prerequisites
sudo apt install -y ca-certificates curl gnupg lsb-release
# Add Docker's official GPG key
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Set up Docker repository
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Install Docker Engine
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Verify installation
sudo docker --version# Docker Compose v2 is included with Docker, verify:
sudo docker compose version
# Alternative: Install standalone docker-compose
sudo apt install -y docker-compose# Create application directory
sudo mkdir -p /opt/unity-tools
cd /opt/unity-tools
# Clone repository (replace with your repo URL)
git clone <repository-url> .
# Create environment file
cp .env.example .env
# Generate a random session secret
openssl rand -base64 32
# Edit .env file
sudo nano .env
# Set SESSION_SECRET to the generated value# Build and start containers
sudo docker-compose up -d
# Verify containers are running
sudo docker-compose ps
# View logs
sudo docker-compose logs -f# Allow HTTP traffic
sudo ufw allow 80/tcp
# Allow backend API (if accessing directly)
sudo ufw allow 3001/tcp
# Reload firewall
sudo ufw reloadOpen your browser and navigate to:
http://your-server-ip- Or
http://localhostif accessing from the server
For users who prefer not to use Docker.
# Install Node.js 20.x
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
# Verify installation
node --version
npm --versionsudo apt update
sudo apt install -y nginxsudo mkdir -p /opt/unity-tools
cd /opt/unity-tools
git clone <repository-url> .cd /opt/unity-tools/backend
# Install dependencies
npm install
# Create environment file
cp .env.example .env
# Edit configuration
nano .env
# Set PORT=3001
# Set SESSION_SECRET to a random value
# Set DATA_DIR=/opt/unity-tools/data
# Create data directory
mkdir -p /opt/unity-tools/datacd /opt/unity-tools/frontend
# Install dependencies
npm install
# Build for production
npm run build# Create Nginx configuration
sudo nano /etc/nginx/sites-available/unity-toolsAdd the following configuration:
server {
listen 80;
server_name your-server-ip;
root /opt/unity-tools/frontend/dist;
index index.html;
# API proxy
location /api {
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache_bypass $http_upgrade;
}
# React Router
location / {
try_files $uri $uri/ /index.html;
}
# Static assets caching
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
}Enable the site:
sudo ln -s /etc/nginx/sites-available/unity-tools /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginxsudo nano /etc/systemd/system/unity-tools-backend.serviceAdd the following:
[Unit]
Description=Unity Tools Backend API
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/opt/unity-tools/backend
Environment="NODE_ENV=production"
ExecStart=/usr/bin/node src/server.js
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.targetEnable and start the service:
sudo systemctl daemon-reload
sudo systemctl enable unity-tools-backend
sudo systemctl start unity-tools-backend
sudo systemctl status unity-tools-backend- Check Docker containers (Docker method):
sudo docker-compose ps- Check services (Manual method):
sudo systemctl status unity-tools-backend
sudo systemctl status nginx- Test backend health:
curl http://localhost:3001/health- Test frontend:
curl http://localhost- Enable HTTPS (recommended for production):
# Install Certbot
sudo apt install -y certbot python3-certbot-nginx
# Obtain SSL certificate
sudo certbot --nginx -d your-domain.com
# Auto-renewal
sudo systemctl enable certbot.timer- Configure firewall:
sudo ufw enable
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS- Restrict access (optional):
Edit Nginx configuration to allow only specific IPs:
location / {
allow 192.168.1.0/24;
deny all;
try_files $uri $uri/ /index.html;
}cd /opt/unity-tools
# Pull latest changes
git pull
# Rebuild and restart
sudo docker-compose down
sudo docker-compose up -d --buildcd /opt/unity-tools
# Pull latest changes
git pull
# Update backend
cd backend
npm install
sudo systemctl restart unity-tools-backend
# Update frontend
cd ../frontend
npm install
npm run build
sudo systemctl restart nginx# Backup data directory
sudo tar -czf unity-tools-backup-$(date +%Y%m%d).tar.gz /opt/unity-tools/data
# Backup .env file
sudo cp /opt/unity-tools/.env /opt/unity-tools/.env.backup# Restore data
sudo tar -xzf unity-tools-backup-YYYYMMDD.tar.gz -C /
# Restore .env
sudo cp /opt/unity-tools/.env.backup /opt/unity-tools/.env# View logs
sudo docker-compose logs -f backend
sudo docker-compose logs -f frontend
# Restart specific service
sudo docker-compose restart backend
# Complete rebuild
sudo docker-compose down -v
sudo docker-compose up -d --build# Check backend logs
sudo journalctl -u unity-tools-backend -f
# Check Nginx logs
sudo tail -f /var/log/nginx/error.log
# Verify permissions
sudo chown -R www-data:www-data /opt/unity-tools/dataIf ports 80 or 3001 are already in use:
- Docker: Edit
docker-compose.ymland change port mappings - Manual: Edit
.envfor backend, and Nginx config for frontend
cd /opt/unity-tools
sudo docker-compose down -v
sudo rm -rf /opt/unity-toolssudo systemctl stop unity-tools-backend
sudo systemctl disable unity-tools-backend
sudo rm /etc/systemd/system/unity-tools-backend.service
sudo rm /etc/nginx/sites-enabled/unity-tools
sudo rm /etc/nginx/sites-available/unity-tools
sudo systemctl restart nginx
sudo rm -rf /opt/unity-toolsFor installation issues:
- Check logs for error messages
- Verify all prerequisites are installed
- Ensure network connectivity to Unity server
- Review Ubuntu Server documentation