# IT Pro Partner Server Inventory (July 2026) Discovered via Hetzner Cloud API on 2026-07-04. All servers are in the same Hetzner account (token: `.hetzner_token`). ## Hetzner Cloud VPSes | Server | Type | Resources | Notes | |---|---|---|---| | `agent` (this box) | CPX11 | 2vCPU 2GB 40GB | Hermes, VPN, backup engine | | `wphost02` | CPX21 | 3vCPU 4GB 80GB | WordPress via RunCloud | | `unms.forefrontwireless.com` | CPX21 | 3vCPU 4GB 80GB | UNMS | | `unifi` | CPX21 | 3vCPU 4GB 80GB | UniFi controller | | `hudu.itpropartner.com` | CPX21 | 3vCPU 4GB 80GB | Hudu internal docs | | `fleettracker360` | CPX11 | 2vCPU 2GB 40GB | Traccar | | `docker` | CPX11 | 2vCPU 2GB 40GB | Docker host (N8N, Mautic) | | `ai.itpropartner.com` | CPX41 | **8vCPU 16GB 240GB** | Open WebUI, LiteLLM | | `app1.itpropartner.com` | CPX11 | 2vCPU 2GB 40GB | General apps | | **Total** | 9 VPS | ~28vCPU ~40GB | ~$80/mo | ## Application Mapping (from spreadsheet) | App | Container? | Current Host | Migration Path | |---|---|---|---| | Mautic | Docker | `app1` | → Consolidation box | | N8N | Docker | `app1` | → Consolidation box | | Hermes | Native | `agent` | Keep on current | | Traccar | Native | `fleettracker360` | → Consolidation box | | Hudu | Docker | `hudu...` | Keep or merge | | UniFi | Native | `unifi` | Keep or merge | | UNMS | Native | `unms...` | → Consolidation box | | WordPress | Native | `wphost02` | Keep via RunCloud | | Open WebUI | Docker | `ai...` | Keep on CPX41 | | LiteLLM | Docker | `ai...` | Keep on CPX41 | | Obsidian | TBD | TBD | Future | | Wazuh | TBD | TBD | Future | | Graylog | TBD | TBD | Future | ## Consolidation Plan Spreadsheet in progress. Two competing approaches: **A) Hetzner Auction (2-4 dedicated servers):** ~€40-80/mo for 2 good boxes. More RAM/cores, dedicated hardware. Need to check current auction inventory. **B) Keep grandfathered VPSes (3-4 boxes):** Same ~$80/mo. Consolidate Docker containers from `app1` + `fleettracker360` + `docker` + `unms` + `unifi` into one beefier box (CX31 or CX41). Hermes + Portal each stay isolated. ## Backup Pipeline Status - ✅ **Hermes backup**: Daily to `hermes-vps-backups` via `hermes-backup.sh`. First run: 360MB. - ✅ **Router backup**: Daily to `mikrotik-ccr-backups` via `run-wisp-backup.sh`. First run: home-gateway config. - ✅ **Hetzner snapshots**: Weekly (Mon 5AM UTC) via `snapshot-hetzner.py`. First run: all 9 servers. - ❌ **Portal backup**: Pending portal build. Bucket `itpropartner-backups` exists and versioning is ON. ## Credentials Stored | Service | Location | Notes | |---|---|---| | Wasabi IAM | `~/.aws/credentials` | Hermes-User | | Hetzner API token | `.hetzner_token` in scripts dir | File-based (special chars) | | SMTP | `/root/.config/himalaya/g-germainebrown.pass` | Mail delivery | ## Wasabi Buckets (all in us-east-1, versioning ON) - `hermes-vps-backups` — Hermes config, sessions, profiles, keys - `itpropartner-backups` — Portal (empty, pending build) - `mikrotik-ccr-backups` — Router configs ## APIs Discovered (for portal integration) | Service | API Type | Auth | Docs Location | |---|---|---|---| | RingLogix | REST (Swagger) | OAuth | Requested | | SyncroMSP | REST (Swagger) | API Key | `https://api-docs.syncromsp.com/` | | Cloudflare | REST v4 | API Token | Well documented | | RunCloud | REST | Bearer Token | Workspace → API Management | | Hudu | REST v1 | API Key | Inside Hudu instance | | UniFi | REST (official) | API Key | `developer.ui.com` | | Grandstream GDMS | REST | API Key | Apply through GDMS portal | | Hetzner Cloud | REST | Bearer Token | `api.hetzner.cloud/v1` | | RouterOS | API (8729) | SSL cert | On-device / ROS docs |