Remote Dev Server Guide Part 1: Choosing a Hetzner Dedicated Server
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 buildfor 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
| Component | Spec |
|---|---|
| CPU | AMD Ryzen 7 3700X (8c/16t @ 3.6 GHz) |
| RAM | 64 GB DDR4 |
| Disk | NVMe SSD (LVM) |
| OS | Ubuntu 24.04 LTS |
| Location | Finland (Hetzner) |
| Bandwidth | 1 Gbps unmetered |
The Ordering Process
-
Create a Hetzner account at hetzner.com. You'll need to verify your identity (ID + address proof).
-
Browse the Server Auction or configure a new server. Filter by CPU generation and RAM. Sort by price.
-
Select your OS — choose Ubuntu 24.04 LTS. It's the most stable option with the longest support window (until 2034).
-
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.
-
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
- Choosing Your Server (you are here)
- Initial Server Setup
- Security with Tailscale VPN
- Claude Code & Development Workflow
- Production Deployment with GitHub Actions & PM2