Next Hetzner Server Recommendation

Shared by @futuretrees

Updated Aug 16, 2026

Recommendation for the Next Hetzner Server

Prepared for: Omar
Current production server: Intel Xeon E5-1650 v3 · 128 GB ECC · 2×480 GB datacenter SSD
Recommended next step: Use the E5 as the always-on control plane and Targon as the elastic compute plane before buying another Hetzner server.
Best local compute option if we need one: AMD Ryzen Threadripper 2950X · 128 GB ECC · 2 TB NVMe
Premium local compute option: Intel Xeon W-2295 · 128 GB ECC · 960 GB NVMe

Executive recommendation

The recently purchased Intel Xeon E5-1650 v3 with 128 GB ECC RAM and 2×480 GB datacenter SSDs is a good fit for the persistent backend and River job system. It is not the ideal machine for every CPU-heavy task, but it does not need to be: its role should be the reliable control plane.

For heavy, bursty, isolated, or memory-intensive work, use Targon’s API-controlled confidential VMs. Targon can provide Cloud Run-like elastic execution while also offering beefier VMs, including approximately 50 GB RAM configurations, root-level VM access, encrypted storage, and hardware-attested isolation depending on the selected environment.

This changes the purchase decision: we should first connect River to Targon and measure the real workload. A second Hetzner server is still useful for predictable, always-on capacity, but it is no longer automatically necessary.

Recommended architecture

Backend API
    ↓
River + Postgres on Hetzner E5
    ↓
Classify the job
    ├── Lightweight / I/O-bound → E5 worker
    ├── CPU-heavy / memory-heavy → Targon VM
    ├── Build / test / repository task → Targon VM
    ├── High-volume always-on worker → optional Hetzner compute node
    └── Persistent service → E5 or persistent Targon deployment

Intel Xeon E5-1650 v3: production and River node

Use the first server for stable, persistent services:

  • @ditto-assistant/backend
  • Postgres
  • River job queues
  • API services
  • Job metadata and state
  • Scheduling, retries, and orchestration
  • Long-running Docker services
  • Monitoring and operational tooling
  • Lightweight or I/O-bound workers

River jobs often wait on Postgres, external APIs, model providers, webhooks, or scheduled events. Those jobs do not require a large CPU. The E5’s 128 GB ECC RAM and SSD storage make it a sensible durable node.

Avoid allowing large builds, repository analysis, or many CPU-heavy agent jobs to compete directly with Postgres and River on this machine.

Targon: elastic execution plane

Targon is useful here as an API-driven compute backend rather than merely an inference provider. The application can provision a VM, run a workload, collect logs and artifacts, and destroy or suspend the environment through the Targon API.

Good Targon workloads include:

  • Ditto Code-style repository jobs
  • Code Mode executions
  • Agent jobs
  • Dockerized builds and tests
  • Large-memory transformations
  • Parallel benchmark workers
  • Temporary development environments
  • Experimental services
  • Workloads needing stronger isolation
  • Short-lived or bursty compute

Suggested River queues:

  • default — lightweight work on the E5
  • llm_io — API- and model-provider-heavy work
  • targon — jobs dispatched to Targon VMs
  • builds — repository builds and tests
  • bench — benchmark and evaluation workloads
  • long_running — persistent workloads requiring a dedicated environment
  • maintenance — operational jobs with controlled concurrency

The E5 remains the durable coordinator. Targon supplies horsepower only when the workload needs it.

Local Hetzner compute options

Option 1: AMD Threadripper 2950X — best value local worker

  • 16 cores / 32 threads
  • 128 GB ECC RAM
  • 2 TB NVMe
  • Approximately €106.70/month net in the cited listing
  • Approximately €127/month including 19% VAT, before account-specific charges
  • Roughly 30,000 PassMark CPU Mark in the cited benchmark data

This is the best value if we want a permanently available local worker pool for:

  • High-volume builds and tests
  • DittoBench workers
  • Agent execution
  • Docker image and repository caching
  • Continuous background processing
  • Workloads where Targon startup time or network transfer is undesirable

The Threadripper is the best complement to the E5 when the priority is parallel throughput per euro.

Option 2: Intel Xeon W-2295 — premium fast compute node

  • 18 cores / 36 threads
  • 128 GB ECC RAM
  • Current cited listing: 960 GB NVMe
  • Approximately €152.70/month net for the NVMe configuration
  • Approximately €132.70/month net for a cheaper SATA configuration
  • Approximately 11,099 Geekbench 5 multicore on Server Radar’s CPU page

The W-2295 is the more interesting option if we want a serious, always-on local compute node with strong per-job responsiveness and many concurrent workers. I would choose the NVMe version, not the SATA version, for agent jobs, builds, Docker layers, repositories, and test artifacts.

It costs more than the Threadripper, but it is the better choice when we value:

  • Lower latency for individual jobs
  • Strong sustained concurrency
  • Faster local build/test cycles
  • A premium, always-on execution host
  • Independence from Targon availability

Comparison

Option Role Cores / threads RAM Storage Approx. monthly net
Existing E5-1650 v3 Production, Postgres, River 6 / 12 128 GB ECC 2×480 GB SSD Already purchased
Targon API VM Elastic, isolated burst compute Depends on VM Up to roughly 50 GB+ configurations VM-dependent Usage-based
Threadripper 2950X Best-value local worker 16 / 32 128 GB ECC 2 TB NVMe €106.70
Xeon W-2295 Premium local compute node 18 / 36 128 GB ECC 960 GB NVMe €152.70

Decision framework

Use Targon first when

  • Workloads are bursty or unpredictable.
  • We need temporary VMs rather than another permanently running server.
  • Jobs need around 50 GB of RAM or isolated environments.
  • We want to scale workers up and down through an API.
  • We are comfortable paying for compute based on usage.
  • We want the E5 protected from heavy builds and agent execution.

Buy the Threadripper when

  • We expect frequent workloads throughout the day.
  • Local NVMe caching is valuable.
  • We want the lowest-cost always-on parallel worker.
  • Targon startup time, availability, or network transfer becomes a bottleneck.
  • We want a dedicated DittoBench/build/agent worker pool.

Buy the W-2295 when

  • We want a premium, always-on compute node.
  • Individual job latency matters as much as total throughput.
  • We expect many concurrent Code Mode or Ditto Code-style jobs.
  • We want a local fallback independent of Targon.
  • The higher monthly cost is justified by utilization.

Recommended rollout

  1. Keep the E5 dedicated to backend services, Postgres, River, and orchestration.
  2. Add a River-to-Targon execution path through the Targon API.
  3. Start with controlled concurrency and explicit queues for builds, benchmarks, and agent jobs.
  4. Record provisioning time, startup latency, runtime, failure rate, network transfer, and cost per job.
  5. Reuse Targon VMs when appropriate; destroy short-lived environments after collecting artifacts.
  6. Buy a second Hetzner server only if the measured workload shows a need for always-on local capacity.
  7. If that need appears, choose the Threadripper for value or the W-2295 NVMe for premium responsiveness.

Bottom line

The E5-1650 v3 is not too light for River. It is appropriately sized as the durable control-plane server. Targon can provide the extra compute on demand through an API, including beefy confidential VMs that are useful for Code Mode, Ditto Code-style jobs, agents, builds, and benchmarks.

Therefore, the most rational next move is:

E5 for backend + Postgres + River, Targon for elastic heavy execution, and no immediate second Hetzner purchase until usage justifies it.

If we decide we need a permanent local compute pool, the Threadripper 2950X / 128 GB ECC / 2 TB NVMe is the value pick. If we want a premium fast compute node, the Xeon W-2295 / 128 GB ECC / 960 GB NVMe is the more powerful and responsive choice.

Checks before ordering a local Hetzner server

Hetzner’s Server Auction changes continuously. Verify the exact listing immediately before purchase:

  1. The listing explicitly states the expected ECC memory.
  2. The storage is NVMe if the workload involves builds, Docker, repositories, or databases.
  3. The current price and VAT treatment are acceptable.
  4. The location works for the intended deployment.
  5. IPv4 requirements and any IPv4 charge are understood.
  6. Drive health and RAID layout are checked after provisioning.
  7. The server will be sufficiently utilized to justify a fixed monthly cost.

Sources