# 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