76 lines
1.6 KiB
Markdown
76 lines
1.6 KiB
Markdown
# Servers Inventory Page — Session Reference
|
|
|
|
Created: 2026-07-08
|
|
Files: `/var/www/ops/servers.html`, `/var/www/ops/nav.html`
|
|
|
|
## Data source structure
|
|
|
|
Fetched from `/data/ops-status.json` (auto-refresh 30s):
|
|
|
|
### `netcup_server` (object)
|
|
|
|
```json
|
|
{
|
|
"id": 890903,
|
|
"template": "RS 2000 G12",
|
|
"ip": "152.53.192.33"
|
|
}
|
|
```
|
|
|
|
Field name mapping (for resilience): `name || hostname`, `template`, `ip || ip_address`.
|
|
|
|
### `hetzner_servers` (array)
|
|
|
|
```json
|
|
[
|
|
{
|
|
"name": "wphost02",
|
|
"status": "running",
|
|
"type": "cpx21",
|
|
"ip": "5.161.62.38",
|
|
"id": 51140464
|
|
}
|
|
]
|
|
```
|
|
|
|
Field name mapping: `name || hostname`, `type || server_type`, `ip || ip_address || ipv4`, `status`, `id`.
|
|
|
|
No `location` field present in current data — shows `—` for all rows.
|
|
|
|
### Resource percentages
|
|
|
|
```json
|
|
{
|
|
"overall": { "disk_used_pct": 6, "memory_used_pct": 39 },
|
|
"disk_memory": { "disk_used_pct": 6, "memory_used_pct": 39 }
|
|
}
|
|
```
|
|
|
|
Fallback chain: `overall.disk_used_pct` → `disk_memory.disk_used_pct` → null.
|
|
|
|
## netcup plan specs
|
|
|
|
| Plan | vCPUs | RAM (GB) |
|
|
|------|-------|----------|
|
|
| RS 2000 G12 | 4 | 16 |
|
|
|
|
## Hetzner plan specs (CPX line)
|
|
|
|
| Plan | vCPUs | RAM (GB) |
|
|
|------|-------|----------|
|
|
| CPX11 | 2 | 4 |
|
|
| CPX21 | 3 | 8 |
|
|
| CPX31 | 4 | 16 |
|
|
| CPX41 | 4 | 16 |
|
|
| CPX51 | 8 | 32 |
|
|
|
|
## Environment
|
|
|
|
- Domain: `app.itpropartner.com` (or whatever Caddy routes to `/var/www/ops/`)
|
|
- Data endpoint: `/data/ops-status.json`
|
|
- Nav partial: `/nav.html`
|
|
|
|
## File permission
|
|
|
|
Both `servers.html` and `nav.html` created with `600` mode by `write_file`. Must `chmod 644` before Caddy can serve them without 403.
|