Migrate the Hetzner VPS from CPX32 to CX33 for Cost Optimization

Decision Drivers

  • Cost reduction from $12.59/month to $6.59/month (48% savings)
  • The CPX32’s 160 GB of storage exceeded actual requirements
  • The CX33 keeps the same vCPU count and RAM

Context

Following the Ashburn-to-Nuremberg migration in ADR 0065, the VPS was running as a cpx32 shared AMD instance with 4 vCPUs, 8 GB RAM and 160 GB of NVMe storage.

Problem Statement

The CPX32 provided 160 GB of storage, double what the CX33 offers, but this capacity was overprovisioned for actual usage. As part of general cost reduction efforts, the CX33 presented an opportunity to halve monthly costs while keeping the same vCPU and RAM configuration.

Decision

Migrate the VPS from cpx32 to cx33 using a snapshot-based approach, reducing monthly costs while right-sizing storage to actual needs.

Implementation

The same snapshot playbook as ADR 0065: snapshot the running CPX32, provision a new cx33 in Nuremberg from it, swap the servers in OpenTofu state (tofu state rm, then tofu import), and change the server type in the variables file.

Server comparison:

AttributeBefore (CPX32)After (CX33)
Server typecpx32 (shared AMD)cx33 (cost-optimized)
vCPU44
RAM8 GB8 GB
Storage160 GB NVMe SSD80 GB SSD
Traffic20 TB/month20 TB/month
CPUAMD EPYC GenoaAMD EPYC Rome
Price$12.59/month$6.59/month

Alternative Approaches Considered

  1. Remain on CPX32. The storage capacity wasn’t being used; rejected for cost reasons.
  2. Downgrade to CX22 (2 vCPU, 4 GB). Insufficient resources for the current service count; rejected.

Consequences

Pros:

  • 48% cost reduction, from $12.59 to $6.59/month (~$72/year savings)
  • The same vCPU count (4) and RAM (8 GB) maintain service capacity
  • Storage right-sized to actual usage
  • The EU traffic allowance (20 TB) is unchanged

Cons:

  • Storage reduced from 160 GB to 80 GB
  • Older CPU generation (Rome vs Genoa)

Mitigations:

  • If storage becomes constrained, additional Hetzner volumes can be attached
  • ADR 0065: The preceding migration from Ashburn to Nuremberg
  • ADR 0032: Hetzner infrastructure management in code
← All decisions