An enterprise NOC platform — unified monitoring for AD replication, NTP, DNS, PBX, and helpdesk, with AI-powered anomaly detection and SIEM integration.
NexusCore consolidates the core infrastructure signals an enterprise NOC watches — Active Directory replication, NTP synchronization, DNS resolution, PBX telephony health, and helpdesk tickets — into one dark-themed operations dashboard. It adds AI-assisted insights via a local Ollama model, Wazuh SIEM status, and a Prometheus/Grafana/Loki monitoring path.
It is built for infrastructure teams that need a single pane of glass across directory, time, name, voice, and support services, deployed entirely on-premises with Docker Compose.
git clone https://github.com/OneByJorah/NexusCore.git
cd NexusCore
cp .env.example .env # set SECRET_KEY, DATABASE_URL, POSTGRES_PASSWORD, REDIS_PASSWORD
docker compose up -dOpen http://localhost:5173 (nginx). Grafana is on http://localhost:3000, Prometheus on http://localhost:9090.
Warning
Every secret in .env.example is a placeholder. Replace SECRET_KEY, POSTGRES_PASSWORD, and REDIS_PASSWORD before deploying, and do not expose the stack to untrusted networks until they are set.
- NOC dashboard — real-time overview of all monitored services in one pane.
- AD replication monitoring — domain controller status with a force-replication action.
- NTP & DNS health — Chrony sync status, NTP client list, and DNS benchmarking.
- PBX telephony — Mitel PBX service health plus SNMP walk results.
- Helpdesk metrics — osTicket ticket listing and creation.
- AI insights — Ollama (and OpenAI-compatible) endpoints for anomaly triage.
- Wazuh SIEM — agent, alert, and overview queries from the dashboard.
- Admin & onboarding — role, user, tab, and encrypted-settings management plus a first-run setup API.
- Observability stack — Prometheus metrics, Grafana dashboards, Loki logs, CrowdSec, and SNMP exporter.
- Migrations — schema managed exclusively through Alembic.
React (Vanilla JS SPA) ──HTTP/REST──▶ FastAPI /api ──▶ PostgreSQL
│
├──▶ Redis (cache)
├──▶ Collectors: AD/LDAP · NTP · DNS · PBX
├──▶ Ollama / OpenAI (AI insights)
└──▶ Wazuh SIEM · osTicket
nginx :5173/:8443 ──▶ static dashboard + /api proxy
Prometheus ◀── /metrics · Grafana ◀── Prometheus + Loki
Note
The dashboard UI served is the standalone HTML/JS app in frontend/index.html. The frontend/src/ React SPA is present but not yet wired into the Vite entry point.
Backend — FastAPI, Python 3.12+, SQLAlchemy, Alembic, PostgreSQL 16, Redis
Frontend — React 18, TypeScript, Vite, TailwindCSS, Recharts (standalone index.html is the served UI)
AI/ML — Ollama local LLMs, OpenAI-compatible endpoints
Monitoring — Prometheus, Grafana, Loki, SNMP Exporter, CrowdSec, Wazuh
DevOps — Docker Compose, systemd, GitHub Actions, pre-commit, ruff
Copy .env.example to .env.
| Variable | Default | Description |
|---|---|---|
SECRET_KEY |
— | JWT signing key (required) |
DATABASE_URL |
postgresql://jnop:change-me@postgres:5432/jnop |
PostgreSQL connection string |
REDIS_URL |
redis://redis:6379 |
Redis cache URL |
REDIS_PASSWORD |
— | Redis password |
POSTGRES_USER / POSTGRES_PASSWORD / POSTGRES_DB |
jnop / — / jnop |
Postgres credentials |
BACKEND_CORS_ORIGINS |
http://localhost:5173 |
Allowed CORS origins |
GRAFANA_ADMIN_PASSWORD |
— | Grafana admin password |
MITEL_SNMP_HOST / MITEL_SNMP_COMMUNITY |
localhost / public |
PBX SNMP target |
OSTICKET_BASE_URL / OSTICKET_API_KEY |
— | osTicket helpdesk integration |
LDAP_URL / LDAP_DOMAIN / LDAP_BIND_DN / LDAP_BIND_PASSWORD |
— | LDAP/AD binding |
CHRONY_SERVER |
localhost |
NTP/Chrony server to monitor |
WAZUH_API_URL / WAZUH_USERNAME / WAZUH_PASSWORD |
— | Wazuh SIEM connection |
OLLAMA_URL / OLLAMA_HOST |
http://localhost:11434 |
Local LLM endpoint |
TELEGRAM_BOT_TOKEN / TEAMS_WEBHOOK |
— | Notification channels |
All application routes are served under /api by FastAPI (interactive docs at /api/docs).
| Endpoint | Method | Description |
|---|---|---|
/api/dashboard/overview |
GET | NOC dashboard overview metrics |
/api/system/overview |
GET | Live service-health probes |
/api/dc_status |
GET | AD domain controller replication status |
/api/dc/forcerepl |
POST | Force AD replication |
/api/ntp_status |
GET | NTP client synchronization health |
/api/ntp_clients |
GET | NTP client list |
/api/pbx/status |
GET | PBX service health |
/api/pbx/snmp/walk |
GET | Mitel SNMP walk results |
/api/helpdesk/tickets |
GET/POST | Helpdesk ticket metrics (osTicket) |
/api/wazuh/status |
GET | Wazuh SIEM connection status |
/api/wazuh/alerts |
GET | Recent Wazuh alerts |
/api/ollama/chat |
POST | AI insights via Ollama |
/api/ollama/status |
GET | Ollama connectivity/models |
/api/admin/users |
GET/POST | User administration (admin role) |
/api/admin/roles |
GET/POST | Role administration |
/api/admin/settings |
GET/PUT | Encrypted settings management |
/api/auth/login |
POST | Obtain a JWT |
/metrics |
GET | Prometheus metrics |
/healthz |
GET | Liveness probe |
cd backend && python -m pytest tests -q
cd frontend && npm install && npm run buildSee TESTING.md for details.
- Enterprise NOC — a single pane across directory, time, name, voice, and support services.
- Infrastructure teams — correlate AD replication and NTP health before incidents escalate.
- Security operations — surface Wazuh SIEM status alongside AI anomaly triage.
| NOC Dashboard | AD Replication | AI Insights |
|---|---|---|
![]() |
![]() |
![]() |
| NTP Monitor | Wazuh SIEM | Helpdesk |
|---|---|---|
![]() |
![]() |
![]() |
More captures live in docs/screenshots/.
Contributions are welcome — see CONTRIBUTING.md. Open an issue to report a bug or request a feature.
MIT — see LICENSE.






