Publish Docs Site / build (push) Failing after 5s
- mkdocs.yml with dark slate theme, nav for 12 ITPP projects - build-docs.sh aggregates docs from all project repos - .gitea/workflows/docs-publish.yml for nightly rebuild+deploy - README and CHANGELOG for the itpp-docs repo itself - docs-source/ populated from all 12 repos - site/ ready for deployment to docs.itpropartner.com
56 lines
2.4 KiB
Markdown
56 lines
2.4 KiB
Markdown
# 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
|
|
|
|
## Dashboard Widgets
|
|
- 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
|
|
```
|