Deploy on a VPS
StaffSense needs Node.js and a Postgres database — nothing else. Screenshots live in Postgres with the rest of your data.
End result: your company URL is
https://staffsense.customdomain.com. Agents install the desktop app and set Server URL to https://staffsense.customdomain.com/api.How agents connect (after you deploy)
- You finish the VPS install below so the site is live on your domain
- Agents download the Windows client
- They set Server URL to
https://staffsense.yourcompany.com/api - They sign in with the email/password you created and clock in
What you need
- A VPS — Ubuntu or similar, 4+ CPU / 8+ GB RAM recommended
- Node.js 22 + pnpm
- Postgres (managed or on the host) — only external dependency
- DNS: point
staffsense.yourcompany.com(A/AAAA) at the VPS public IP - Ports 80 and 443 open (HTTPS via Caddy/Nginx)
1. Configure
Clone the release, then copy .env.example to apps/server/.env and set:
DATABASE_URL— e.g.postgresql://user:pass@host:5432/staffsense_db?schema=publicAPI_PUBLIC_URL— e.g.https://staffsense.yourcompany.com/apiJWT_ACCESS_SECRET/JWT_REFRESH_SECRETSEED_ADMIN_EMAIL/SEED_ADMIN_PASSWORD
2. Build & migrate
pnpm install
pnpm --filter @staffsense/shared build
pnpm --filter @staffsense/server prisma:generate
pnpm --filter @staffsense/server prisma:deploy
pnpm --filter @staffsense/server prisma:seed
pnpm --filter @staffsense/server build
pnpm --filter @staffsense/web build3. Run behind TLS
Run the API (node apps/server/dist/main.js, port 4000) and web (pnpm --filter @staffsense/web start, port 3000). Proxy /api/* → API (strip the /api prefix), everything else → web. Open https://your-domain and sign in as the seed admin.
4. Configure the product
- Create users (admins, managers, agents)
- Create projects and security presets
- Assign agents and schedules
- Tell agents: Server URL = https://your-domain/api
5. Backup
A Postgres dump is enough — it includes screenshots and recordings. Restore that dump to recover the full instance.