Skip to content
Back to blog

Remote Dev Server Guide Part 1: Choosing a Hetzner Dedicated Server

4 min read
View as Markdown

Most developers work on their local machine. I did too — stuck on my MacBook Pro as my only option. If I wasn't at my desk with my laptop, I couldn't code. I wanted the freedom to work from anywhere: open my iPad at a coffee shop, pull out my phone to check a build, or SSH in from a borrowed laptop. That meant my development environment couldn't live on any single device.

The solution: a Hetzner dedicated server that acts as my permanent development machine. I connect to it from my Mac, iPad, and iPhone using Termius — one environment, accessible from any device. In this series, I'll walk through the entire setup — from picking the hardware to deploying production apps with GitHub Actions.

Why Dedicated Over VPS?

Cloud VPS instances (DigitalOcean, AWS EC2, Linode) share physical hardware with other tenants. You get a slice of CPU and RAM that can fluctuate based on your neighbors. For a dev server running Docker containers, multiple Node.js processes, PostgreSQL, and Claude Code simultaneously, I wanted predictable, bare-metal performance.

Hetzner's dedicated servers give you:

  • Dedicated hardware — no noisy neighbors, consistent performance
  • Unmetered bandwidth — 1 Gbps included, no data transfer caps
  • European data centers — great latency if you're in Europe/Middle East
  • Competitive pricing — significantly cheaper than equivalent AWS/GCP instances

How to Pick Your Server

Head to the Hetzner Server Auction for the best deals on pre-configured servers. These are previously-used machines returned by other customers, often available at significant discounts. New servers are available on the main configurator if you want specific specs.

CPU: Cores Matter More Than Clock Speed

For development workloads (compiling TypeScript, running tests, building Next.js apps, running AI tools), you want at least 8 cores. Here's why:

  • bun run build for a Next.js app uses multiple cores for parallel page compilation
  • Docker runs multiple containers simultaneously
  • Claude Code + your dev servers + database all compete for CPU time

I went with the AMD Ryzen 7 3700X — 8 cores, 16 threads at 3.6 GHz. It handles everything I throw at it without breaking a sweat. The load average typically sits around 2 even with 5 concurrent SSH sessions.

RAM: 32 GB Minimum, 64 GB Ideal

Here's what my server's memory looks like on a typical day:

  • PostgreSQL instances (3 databases): ~2 GB
  • Redis (2 instances): ~500 MB
  • Node.js dev servers: ~1-2 GB each
  • Docker overhead: ~1 GB
  • Claude Code: ~500 MB
  • OS + buffers/cache: ~4 GB

That's already 10+ GB before I open a second project. With 64 GB, I never think about memory. If budget is tight, 32 GB works but you'll feel it when running multiple projects.

Disk: NVMe SSD, 500 GB+

Development workloads are I/O heavy — node_modules, Docker layers, Git operations, database writes. A spinning HDD will make everything feel sluggish. Get an NVMe SSD.

I have a 98 GB root partition (LVM) which is tight. If I were ordering again, I'd go for at least 500 GB. Docker images and node_modules folders add up fast.

My Spec Sheet

ComponentSpec
CPUAMD Ryzen 7 3700X (8c/16t @ 3.6 GHz)
RAM64 GB DDR4
DiskNVMe SSD (LVM)
OSUbuntu 24.04 LTS
LocationFinland (Hetzner)
Bandwidth1 Gbps unmetered

The Ordering Process

  1. Create a Hetzner account at hetzner.com. You'll need to verify your identity (ID + address proof).

  2. Browse the Server Auction or configure a new server. Filter by CPU generation and RAM. Sort by price.

  3. Select your OS — choose Ubuntu 24.04 LTS. It's the most stable option with the longest support window (until 2034).

  4. Choose a data center — pick whichever is geographically closest to you for lowest latency. I chose Finland since it provides good connectivity to the Middle East and Europe.

  5. Complete the order — Hetzner provisions dedicated servers within minutes to a few hours. You'll receive root credentials via email.

First Boot

Once provisioned, you'll get an email with:

  • Server IP address
  • Root password (change this immediately)
  • Rescue system credentials

SSH in for the first time:

ssh root@YOUR_SERVER_IP

Change the root password:

passwd

That's it for Part 1. In the next post, we'll set up users, install essential tools, configure the shell, and get the server ready for development work.

Series Navigation

  1. Choosing Your Server (you are here)
  2. Initial Server Setup
  3. Security with Tailscale VPN
  4. Claude Code & Development Workflow
  5. Production Deployment with GitHub Actions & PM2