Skip to content

Native / PM2 Installation

For servers where the app runs directly on the host, managed by PM2, against a locally-installed PostgreSQL and Redis.

See Prerequisites for hardware/OS requirements.

Step 1 — Extract the package

tar -xzf itsm-onprem-v1.0.0.tar.gz
cd itsm-onprem-v1.0.0

Step 2 — Add the license key and environment config

cp /path/to/customer/license.key ./license.key
cp .env.example .env

Edit .env and set production values:

DB_USER=itsm_user
DB_PASSWORD=SetAStrongRandomPasswordHere!
DB_NAME=itsm_db
JWT_SECRET=SetAStrongJwtSecretHere!

Encrypting the database password

A plaintext DB_PASSWORD in .env is fine to get started, but production installs should encrypt it at rest — see Secrets & Encryption. You can run that step any time after install; it doesn't require reinstalling.

Step 3 — Run the installer

sudo ./install-onprem.sh

This single script:

  • Installs Node.js 20, PM2, PostgreSQL, Redis, and Nginx if not already present
  • Creates and secures the PostgreSQL database and role
  • Runs database migrations
  • Configures PM2 to run the backend, frontend, and AI microservice
  • Configures the Nginx reverse proxy on port 80
  • Sets up boot persistence (pm2 startup)

Administrative commands

Action Command
Check application status pm2 status
View backend logs pm2 logs itsm-backend
View frontend logs pm2 logs itsm-frontend
View AI service logs pm2 logs itsm-ai
Restart application pm2 restart all
Redis status sudo systemctl status redis-server
Nginx status sudo systemctl status nginx
PostgreSQL status sudo systemctl status postgresql

Optional: virus scanning (ClamAV)

Attachment uploads can be scanned for malware (Settings → Security → Attachment Upload). Off by default; requires a running clamd daemon. See Troubleshooting for setup and the Unix-socket-vs-TCP gotcha.

Next steps