Skip to content

NexaDesk

NexaDesk is a self-hosted IT helpdesk and ticketing system, built for internal IT teams and managed service providers. It runs entirely on your own infrastructure with Docker — your data never leaves your servers.

Ticket list

What's in the box

Area What you get
Ticketing Full ticket lifecycle (Open → In Progress → Waiting → Resolved → Closed), priorities, assignment, bulk actions, field-level audit history
SLA management Response & resolution targets per priority, business-hours aware, breach tracking and reporting
Automation engine Rule-based automations — triggers (ticket events, time-based, SLA breach), conditions, and actions (status change, notify, comment, Teams alert, assign)
Email channels Turn a Microsoft 365 mailbox (OAuth) or any SMTP/IMAP inbox into a ticket queue; replies go out from the same address
Knowledge base Markdown editor with live preview, full-text search, categories, draft/publish workflow, automatic article suggestions on new tickets
Customer portal A clean self-service view where requesters submit and track their own tickets
Reports Analytics dashboard with volume trends, status/priority/category/channel breakdowns, SLA performance, technician performance, CSV & PDF export
NetManager Network documentation module — companies, sites, racks, devices, IP/VLAN management, switch ports, password vault, config backups (license-gated)
Security Mandatory TOTP 2FA for staff, optional Microsoft SSO (Entra ID), rate-limited auth, revocable sessions, first-run setup token
CSAT Post-resolution satisfaction surveys via signed, single-use links

Architecture at a glance

NexaDesk ships as a Docker Compose stack:

┌──────────────────────────────────────────────────┐
│  nginx  ← the only exposed port (80)             │
│   ├── frontend (React SPA, prebuilt)             │
│   └── /api → api (FastAPI)                       │
│              ├── PostgreSQL 16 (data)            │
│              ├── Redis (cache, queues, sessions) │
│              ├── worker (Celery — email, jobs)   │
│              └── beat (Celery — schedules)       │
│  netmanager-api + netmanager-db (optional)       │
└──────────────────────────────────────────────────┘
  • Database: PostgreSQL 16, bound to localhost only. Data lives in the pgdata Docker volume.
  • Migrations run automatically when the API starts — upgrades are hands-off.
  • TLS: terminate HTTPS at your reverse proxy or tunnel (Cloudflare Tunnel, Traefik, nginx) in front of the stack.

User roles

Role Can do
Admin Everything — settings, users, channels, automations, license
Technician Work tickets, edit KB, view reports & assets, use NetManager
Requester Use the customer portal: submit tickets, comment, read the KB

Where to next?