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¶
- Secrets & Encryption — encrypt
DB_PASSWORDat rest - Backups & Disaster Recovery — set up nightly backups
- Upgrades — how to push new versions later