# 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 |
