# Consolidation & Migration Plan

## Strategy

**Target:** Move all Hetzner workloads onto netcup root servers. Hetzner's Jul 2026 pricing makes new Hetzner VPSes uneconomical (3-5x netcup for equivalent compute).

**Keep at Hetzner:** app1-bu (warm standby), tony-vps (Anthony's box)

## Netcup target servers

| Server | Tier | Purpose | Est. Cost/mo |
|--------|------|---------|-------------|
| **Core** (exists) | RS 2000 (8C/16G/512GB) | Hermes, portal, Docker, misc services | ~$20 |
| **Monitor** (new) | RS 1000 (4C/8G/256GB) | AI/LLM, monitoring, automation | ~$12 |
| **Web** (new) | RS 1000 (4C/8G/256GB) | WISP, web apps, docs | ~$12 |

## Migration phases

### Phase 1 — ai.itpropartner.com (CRITICAL: 92% disk)
- Containers: LiteLLM, Open WebUI, Ollama, Qdrant, Caddy
- Move to: Monitor (if exists) or Core temporarily
- Method: docker-compose stack transfer
- Disk issue: 199G of 226G used. Ollama models + Qdrant vectors are the likely culprit

### Phase 2 — unms.forefrontwireless.com + unifi
- unms: 9 containers (UNMS/UISP, UCRM, RabbitMQ, PostgreSQL, Netflow)
- unifi: Native app + MongoDB + MariaDB
- Move to: Web (new RS 1000)
- Method: docker-compose for UNMS, package migration for UniFi

### Phase 3 — hudu.itpropartner.com
- 5 containers: Hudu app, SWAG certbot, PostgreSQL, Redis
- Move to: Web or Monitor (co-locate)
- Method: docker-compose stack transfer

### Phase 4 — n8n, docker host, fleettracker360
- n8n: 2 containers (n8n + PostgreSQL)
- docker: 7+ containers (NPM, RustDesk, Uptime-Kuma, StrongSwan)
- fleettracker360: Traccar (Java, 26+ tracking ports)
- Move to: Core (has capacity: 6% disk, 8 dedicated cores)
- Method: docker-compose stacks + Traccar Java migration

### Phase 5 — wphost02 (review)
- RunCloud + WordPress sites (Apex, BoxPilot, etc.)
- Option A: Move to Web (rsync + DB dump)
- Option B: Stay at Hetzner — keep simple

## Key considerations

- netcup provisioning via SCP REST API: `servercontrolpanel.de/scp-core/api/v1/`
- Auth: Keycloak OIDC password grant (customer# + CCP password)
- New netcup root servers take ~5-15 min to provision
- DNS needs updating at SiteGround after each migration
- Test each service for 24h before decommissioning old box
