Ops Portal — ops.itpropartner.com
Architecture
- Server: Core (152.53.192.33, netcup RS 2000)
- Backend: FastAPI at
/opt/ops-portal/server.py (port 8090)
- Proxy: Caddy → reverse_proxy to 127.0.0.1:8090
- Static files:
/opt/ops-portal/static/ — 11 HTML pages, ops.css, app.js, utils.js
- Auth: JWT via
POST /api/auth/login, token in localStorage
- Data:
/var/www/ops/data/ops-status.json (5-min collector refresh)
- Collector:
/root/.hermes/scripts/ops-data-collector.py — Wazuh, Bitdefender, S3, UISP, system health
- Systemd:
ops-portal.service, env from /root/.hermes/.env
- Credentials: ippadmin (password → Vaultwarden /
~/.hermes/.env)
Pages (11 total)
| Page |
Path |
Description |
| Dashboard |
/ |
System health, widgets, audit log |
| Services |
/services.html |
Systemd service control, audit log, server column |
| Servers |
/servers.html |
5 servers with ping health |
| Network |
/network.html |
UISP data (44 sites, 90 devices), DNS zones |
| Backups |
/backups.html |
S3 bucket status (6 buckets) |
| FleetTracker |
/fleettracker360.html |
Traccar device tracking |
| Cron Jobs |
/cron.html |
Hermes cron jobs with expandable scripts |
| Config |
/config.html |
Active configs, /root/.hermes/scripts/ listing |
| Logs |
/logs.html |
Aggregated log viewer |
| Audit |
/audit.html |
Full audit trail |
| Costs |
/cost.html |
API cost tracking by model |
API Endpoints
| Method |
Path |
Auth |
Description |
| POST |
/api/auth/login |
No |
JWT authentication |
| GET |
/api/health |
No |
Health check, DB status |
| GET |
/api/status |
JWT |
Full dashboard data (17 sections) |
| GET |
/api/servers |
JWT |
Server list with IPs |
| GET |
/api/servers/health |
JWT |
Ping health (all 7 LIVE) |
| GET |
/api/audit-log?limit=N |
JWT |
Audit trail entries |
| GET |
/api/ft360/status |
JWT |
FleetTracker device data |
Critical Services (API restart blocked)
hermes, hermes-assistant, hermes-browser, caddy, ops-portal, mysql-tunnel
- System Health — Core metrics (jobs, disk, memory, S3, APIs)
- Wazuh Security — agent count, alerts
- Bitdefender GravityZone — 9 managed endpoints
- Alerts and Notifications — DR issues, backup failures, cron errors
- Quick Actions — Restart Ops Portal
Recovery
systemctl restart ops-portal
systemctl reload caddy
python3 /root/.hermes/scripts/ops-data-collector.py