DigitalOcean vs Hetzner Cloud
Both rent plain Linux VMs that you set up and run yourself. DigitalOcean bills per second and adds GPUs, more regions and managed services, while Hetzner Cloud bills every started hour, has lower list prices on its cheapest servers, and does not allow nested virtualization.
The companies and products
DigitalOcean
DigitalOcean is a general-purpose cloud, and Droplets are its Linux virtual machines.
A Droplet is a Linux VM you rent by size, with root, a public IP, local SSD and a monthly transfer allowance. You pick an image, then install and run your own software on it, next to DigitalOcean products like Kubernetes, managed databases, load balancers and cloud firewalls. It is a server host, not an agent sandbox, so this page compares the two where they overlap: giving an agent its own Linux machine. DigitalOcean also sells two separate products in preview, Harness Runtime for agents and MicroVMs, which are not Droplets.
Hetzner Cloud
Hetzner is a German hosting company founded in 1997; Hetzner Cloud rents virtual servers, storage and networking by the hour.
A Hetzner Cloud server is a Linux VM picked from shared vCPU lines (cost-optimized CX and CAX, regular CPX) or dedicated vCPU (CCX), with local NVMe disk, a public IP and up to 20 TB of traffic in the EU. You add volumes, private networks, firewalls and load balancers, and run everything yourself through the Console, the Cloud API, the hcloud CLI or Terraform. It is general infrastructure, not an agent sandbox, so this page compares the two where they overlap: giving an agent its own Linux machine.
Which use cases each one fits
For each use case, Battleships prices every sandbox provider on the same workload and sorts them from the cheapest monthly bill up. “39th cheapest of 368” means 38 of the other 367 providers run that workload, with every feature it needs, for less. “With limits” means the provider runs it but misses something, so it is listed after every full match. Open a use case for its whole ranking and what each provider misses.
| Use case and its workload | DigitalOcean: price rank | Hetzner Cloud: price rank | boat: price rank |
|---|---|---|---|
| Software factory 100 at once · 4 vCPU / 8 GB · 2,200 sessions of 8 h a month Both give an agent a full VM with root and Docker, but Hetzner Cloud cannot run nested VMs and a new DigitalOcean team gets only 3 Droplets at once; boat has /dev/kvm, snapshots and coding agents built in. | 134th of 367, with limits $1,187 a month | 46th of 367, with limits $287 a month | 3rd cheapest of 367 $634 a month |
| Always-on AI employees 50 machines 24/7 · 2 vCPU / 4 GB | 35th of 366, with limits $1,429 a month | 94th of 366, with limits $325 a month | 5th cheapest of 366 $657 a month |
| Code interpreter bursts 100 at once · 1 vCPU / 2 GB · 200,000 sessions of 1 min a month DigitalOcean fits short runs better than Hetzner Cloud: it bills per second with a 60 second minimum, while Hetzner bills every started hour in full. | 63rd of 345, with limits $60 a month | 156th of 345, with limits $649 a month | 186th of 345, with limits $2,000 a month |
| Sandboxes for your users 300 at once · 2 vCPU / 4 GB · 30,000 sessions of 23 min a month Both need a limits raise first: a new DigitalOcean team runs 3 Droplets at once and Hetzner reviews server limit requests by hand, while boat allows 100 to 2,000 sandboxes by plan. | 54th of 361, with limits $421 a month | 46th of 361, with limits $314 a month | Cheapest of 361 $209 a month |
| RL rollouts 1,000 at once · 2 vCPU / 4 GB · 1,000,000 sessions of 3 min a month | 31st of 360, with limits $1,786 a month | 104th of 360, with limits $6,490 a month | 34th of 360, with limits $2,000 a month |
| Agent evals 250 at once · 4 vCPU / 8 GB · 15,000 sessions of 20 min a month | 106th of 364, with limits $357 a month | 51st cheapest of 364 $1,010 a month | 10th cheapest of 364 $200 a month |
| CI runners 40 at once · 8 vCPU / 16 GB · 6,000 sessions of 12 min a month A ten-minute CI job is billed as a full hour on Hetzner Cloud and by the second on DigitalOcean; on both you run the runner software and the clean-up yourself. | 146th of 377, with limits $171 a month | 83rd cheapest of 377 $788 a month | 4th cheapest of 377 $86 a month |
| 24/7 dev boxes 1 machine 24/7 · 4 vCPU / 8 GB All three fit a 24/7 dev box: DigitalOcean and Hetzner Cloud are classic always-on servers with a monthly price cap, and boat keeps the disk with snapshots every minute. | 39th cheapest of 368 $48 a month | 32nd cheapest of 368 $42 a month | 18th cheapest of 368 $26 a month |
| Computer-use agents 50 at once · 4 vCPU / 8 GB · 20,000 sessions of 15 min a month Neither DigitalOcean nor Hetzner Cloud ships a desktop, so you install the desktop, the browser and VNC yourself; boat streams a 60fps desktop with Chromium and computer use. | 117th of 369, with limits $263 a month | 134th of 369, with limits $320 a month | 6th cheapest of 369 $200 a month |
| Browser-use agents 50 at once · 2 vCPU / 4 GB · 30,000 sessions of 10 min a month | 56th of 367, with limits $147 a month | 227th of 367, with limits $312 a month | 7th cheapest of 367 $200 a month |
| Scraping & bots (startup scale) 50 at once · 1 vCPU / 2 GB · 100,000 sessions of 3 min a month | 88th of 346, with limits $175 a month | 157th of 346, with limits $62 a month | 6th cheapest of 346 $90 a month |
| Mass scraping & bots (undetectable) 1,000 at once · 1 vCPU / 2 GB · 3,000,000 sessions of 2 min a month | 69th of 338, with limits $1,786 a month | 45th of 338, with limits $1,248 a month | 71st of 338, with limits $1,800 a month |
| Parallel red teaming 200 at once · 2 vCPU / 4 GB · 5,000 sessions of 30 min a month Many short parallel machines suit DigitalOcean's per-second billing better than Hetzner's hourly rounding, once your team has a higher Droplet limit. | 22nd of 360, with limits $199 a month | 114th of 360, with limits $52 a month | 2nd cheapest of 360 $200 a month |
| GPU eval jobs 10 at once · 8 vCPU / 32 GB · 500 sessions of 30 min a month Only DigitalOcean rents GPUs here, with Nvidia and AMD GPU Droplets; Hetzner Cloud and boat have none. | Can't run it | Can't run it | Can't run it |
| macOS agents 5 at once · 4 vCPU / 8 GB · 1,000 sessions of 20 min a month | Can't run it | Can't run it | Can't run it |
Key features
| Feature | DigitalOcean | Hetzner Cloud | boat |
|---|---|---|---|
| What you get | A general Linux VM (Droplet) you set up and run yourself | A general Linux VM you set up and run yourself | A sandbox API for agents, on full VMs |
| Isolation | Every Droplet is a full VM with its own kernel | Every server is a full VM with its own kernel | Every sandbox is a full VM with its own kernel |
| CPU speed (Node.js build-and-test, 4 vCPU / 8 GB) | No comparable measurement; Basic plans share hyper-threads with other Droplets | 8.88 runs/s on a shared CX33; CPX and CCX were not measured | 26.69 runs/s on dedicated AMD Ryzen 9 9950X (Zen 5) hosts |
| Docker and nested virtualization | Root and Docker; nested VMs are mentioned in the live migration docs but not listed as a feature | Root and Docker; nested virtualization is "not possible on cloud server" | Docker, root, systemd and /dev/kvm on every machine, documented |
| Billing unit | Per second with a 60 second minimum, capped at 672 hours a month | Every started hour billed in full, with a monthly cap | Per second, spent from the usage credit of a monthly plan from $20 |
| Stopping | A powered-off Droplet is billed in full until you destroy it | A powered-off server is billed in full until you delete it | A stopped sandbox costs nothing and keeps its disk |
| Snapshots and backups | On-demand snapshots billed by size; paid scheduled backups from every 4 hours to weekly | Snapshots you take yourself, or daily backups in 7 slots for 20% of the server price | Automatic snapshots every minute and on stop |
| Fork | Take a live snapshot, then create new Droplets from it (disk, no memory) | Take a snapshot, then create a new server from it (disk, no memory; shutting down first is recommended) | Fork a running sandbox in one call (disk, no memory) |
| Machines at once | A new team gets 3 Droplets; 100 at Tier 5, unlocked by prepayment, paid invoices or a request | Per-project limits are not published; raised by a support request reviewed by hand | 100 to 2,000 sandboxes by plan |
| Reaching the machine | Public IPv4 and IPv6 on any port; HTTPS needs your own certificates or a load balancer | Public IPv4 and IPv6 on any port; HTTPS needs your own certificates or a paid load balancer | HTTPS URLs for up to 50 ports, token-protected; raw TCP; own IP |
| Coding agents, desktop and keys | None on Droplets; the separate Harness Runtime preview runs agents in microVMs; secrets go on the server | None; you install and drive agents yourself, for example over SSH, and put secrets on the server | Claude Code, Codex, OpenCode and more preinstalled with a prompt, steer and events API; 60fps desktop with Chromium; AI credentials proxy for any HTTPS API |
| Cloud around the server | Managed databases, Kubernetes, load balancers, VPC and free firewalls with outbound rules | Volumes, private networks, load balancers and free firewalls with outbound rules | A sandbox product; open internet on every plan, no provider-side egress allowlist |
| GPUs | Nvidia and AMD GPU Droplets, on demand, reserved or spot | None in Hetzner Cloud | None |
| Regions | 13 regions in the US, Canada, Europe, Asia and Australia | Germany and Finland, plus Ashburn, Hillsboro and Singapore | EU only: Germany, Finland, France |
Every feature Battleships tracks (43)
| Feature | DigitalOcean | Hetzner Cloud | boat |
|---|---|---|---|
| Full VM (own kernel) | Yes | Yes | Yes |
| Docker inside | Yes | Yes | Yes |
| Nested virtualization | Yes | No | Yes |
| Root | Yes | Yes | Yes |
| Systemd | Yes | Yes | Yes |
| Desktop GUI | No | No | Yes |
| Browser | No | No | Yes |
| Computer-use API | No | No | Yes |
| SSH | Yes | Yes | Yes |
| Persistent disk | Yes | Yes | Yes |
| Pause/resume | No | Yes | Yes |
| Automatic snapshots | No | No | Yes |
| Fork/clone | Yes | Yes | Yes |
| Live fork (no pause) | Yes | Yes | Yes |
| Memory fork | No | No | No |
| Custom image (Docker or snapshot) | Yes | Yes | Yes |
| ≥24 h sessions | Yes | Yes | Yes |
| Idle auto-stop | No | No | No |
| Wake on request | No | No | No |
| HTTPS preview URLs | No | No | Yes |
| Raw TCP inbound | Yes | Yes | Yes |
| Public IPv4 | Yes | Yes | No |
| Egress allowlist | Yes | Yes | No |
| Secret proxy | No | No | Yes |
| Secret proxy for any API | No | No | Yes |
| Preinstalled agents | No | No | Yes |
| Agent harness API | No | No | Yes |
| MCP server | Yes | No | No |
| GPU | Yes | No | No |
| Windows | No | No | No |
| Arm64 | No | Yes | No |
| Self-hosting | No | No | No |
| BYOC | No | No | No |
| Open source | No | No | No |
| Scoped API keys | Not published | Not published | Yes |
| Spend limits | No | No | Yes |
| Usage per sandbox (API) | Yes | No | Yes |
| Audit logs | Not published | Not published | No |
| SSO | Yes | No | No |
| SOC 2 | Yes | No | No |
| HIPAA | Yes | No | No |
| EU data residency | Yes | Yes | Yes |
| Zero data retention | Not published | Not published | Yes |
Performance
In StarSling's public benchmark at 4 vCPU / 8 GB, boat did 26.69 Node.js build-and-test runs per second on its own hosts. A shared Hetzner CX33 did 8.88 runs per second in an earlier run, about a third of boat's speed; Hetzner's CPX and dedicated CCX servers were not measured. DigitalOcean Droplets have no comparable measurement.
Node.js build-and-test loop at 4 vCPU / 8 GB, higher is better. Measured with the open hpc-sandbox-benchmarks suite. Hetzner Cloud measured on: Shared vCPU, Cost-Optimized (CX, Intel/AMD), EU. DigitalOcean has no published run in this suite yet, so there is no like-for-like number to compare.
Pricing in five scenarios
Each bill is priced from the providers' public price lists by the open Battleships engine, with the cheapest plan that runs the scenario.
| Scenario | DigitalOcean, a month | Hetzner Cloud, a month | boat, a month |
|---|---|---|---|
| One coding agent, workdays 4 vCPU / 8 GB, 50 GB disk, 8 hours a day, 22 days a month, files kept between days | $13 · Pay as you go | $3 · Pay-as-you-go (postpaid) · with limits | $20 · $20/mo |
| One agent that never stops 4 vCPU / 8 GB, 50 GB disk, running 24/7 all month | $48 · Pay as you go | $10 · Pay-as-you-go (postpaid) · with limits | $26 · $20/mo |
| 50 agents in parallel 50 machines of 4 vCPU / 8 GB at once, 8-hour sessions, 1,100 sessions a month, Docker inside | $629 · Pay as you go · with limits | $141 · Pay-as-you-go (postpaid) · with limits | $317 · $20/mo × 3 seats |
| Sandboxes for your users 2 vCPU / 4 GB, 30,000 sessions of 10 minutes a month, up to 300 at once | $179 · Pay as you go · with limits | $312 · Pay-as-you-go (postpaid) · with limits | $200 · $100/mo × 2 seats |
| 1,000 short jobs at once 2 vCPU / 4 GB, 1,000 at once, 3 minutes each, 200,000 jobs a month | $357 · Pay as you go · with limits | $2,080 · Pay-as-you-go (postpaid) · with limits | $2,000 · $2000/mo · with limits |
DigitalOcean: Each Droplet size has a fixed hourly price, billed per second with a 60 second minimum and capped at 672 hours a month. Billing runs from create to destroy, including while the Droplet is powered off, and snapshots and backups cost extra.
Hetzner Cloud: Hetzner bills each server by the hour, rounding every started hour up, with a monthly cap, until you delete it, even when it is off. The prices here use the cheapest shared CX servers, which are currently out of stock; the CPX and CCX servers you can order today cost more per hour.
Hetzner Cloud: You pick a monthly plan from $20, and all of it becomes usage credit spent per second on running sandboxes. A stopped sandbox costs nothing and keeps its disk.
Limits in those scenarios
A new DigitalOcean team can run only 3 Droplets at once, Basic shared plans up to $48, so 50 agents in parallel or sandboxes for your users need a higher tier first; Tier 5 allows 100. Hetzner does not publish its server limits, reviews each raise by hand, and every scenario here is priced on its CX line, which Hetzner marks as currently unavailable. Short jobs on Hetzner are also billed a full hour each. On boat the limit is 100 to 2,000 sandboxes by plan plus starts per minute, so the 1,000-job burst is queued and does not fit either.
| Scenario | DigitalOcean | Hetzner Cloud | boat |
|---|---|---|---|
| One coding agent, workdays | None that bite |
| None that bite |
| One agent that never stops | None that bite |
| None that bite |
| 50 agents in parallel |
|
| None that bite |
| Sandboxes for your users |
|
| None that bite |
| 1,000 short jobs at once |
|
|
|
Which one should you use?
Use DigitalOcean when
you want per-second billing, GPUs, regions in North America, Asia or Australia, or servers next to managed databases and Kubernetes.
- Per-second billing. Useful for short or bursty jobs: Droplets bill per second with a 60 second minimum, where Hetzner rounds every started hour up.
- GPUs and more regions. Useful if you need Nvidia or AMD GPUs, or servers in Canada, India or Australia, which Hetzner Cloud does not offer.
- Managed services next to the server. Useful if the machine must sit beside managed databases and Kubernetes clusters in one private network and one account.
Use Hetzner Cloud when
you want low-priced long-lived servers in Europe, big dedicated machines or lots of included traffic, and do not need nested virtualization.
- Lower list prices on the cheapest servers. Useful for long-running servers in Europe, as long as the CX line, currently out of stock, is back.
- Big dedicated machines. Useful for heavy single machines: dedicated CCX servers go up to 48 vCPU and 192 GB of memory.
- Lots of included traffic in the EU. Useful for data-heavy servers: each EU server includes 20 TB of outbound traffic, and extra traffic costs $1.20 per TB.
Where boat fits
DigitalOcean and Hetzner Cloud are general clouds, and boat is not trying to be one: it has no GPUs, no managed databases and runs only in the EU. If what you are really running is agents, each needing its own Linux machine that starts ready, pauses for free and can be copied, boat does that part for you on full VMs.
Free stops and a disk saved every minute
Both clouds bill a powered-off machine in full, so an idle agent keeps costing money. The workaround is to snapshot, delete and recreate by script, losing changes since the last snapshot. boat saves every minute and stops for free.
Agents, a desktop and a key proxy built in
Droplets and Hetzner servers start as empty OS images, so you install, update and supervise each agent, desktop and API key yourself, and the agent can read any key you put there. boat ships them and keeps keys outside.
Nested virtualization and a faster CPU
Hetzner Cloud cannot run VMs inside a server, and DigitalOcean does not list nested virtualization as a feature. boat documents /dev/kvm on every machine, and measured about three times the CPU speed of a Hetzner CX33.
Use boat when the machines are for agents: a full VM each with /dev/kvm, coding agents, a desktop and HTTPS ports built in, snapshots every minute, fork while running, and stops that cost nothing. Compare it one to one: boat vs DigitalOcean and boat vs Hetzner Cloud.
Questions people ask
Is DigitalOcean cheaper than Hetzner Cloud?
On list prices for long-running servers, no: one agent that never stops comes to $48 a month on DigitalOcean against $10 on Hetzner's CX servers, and boat comes to $26. But the CX line is currently out of stock, and for 300 short user sandboxes Hetzner's hourly rounding brings it to $312 against $179 on DigitalOcean and $200 on boat.
Which is faster, DigitalOcean or Hetzner Cloud?
There is no comparable measurement for DigitalOcean Droplets. A shared Hetzner CX33 did 8.88 Node.js build-and-test runs per second at 4 vCPU / 8 GB, against 26.69 for boat on dedicated AMD Ryzen 9 9950X hosts.
Can DigitalOcean and Hetzner Cloud run Docker and nested VMs?
Both run Docker, since each machine is a full VM with root. Hetzner's server FAQ says nested virtualization is not possible on cloud servers, and DigitalOcean mentions nested VMs only in its live migration docs, not as a listed feature. boat documents Docker, systemd and /dev/kvm on every machine.
Do I pay for a powered-off server on DigitalOcean or Hetzner?
Yes, on both. A Droplet or a Hetzner server is billed in full until you destroy or delete it, so to stop paying you snapshot it, delete it and create it again later. On boat, a stopped sandbox costs nothing and keeps its disk.
Which has more regions and GPUs?
DigitalOcean: 13 regions across the US, Canada, Europe, Asia and Australia, and Nvidia and AMD GPU Droplets. Hetzner Cloud runs in Germany, Finland, Ashburn, Hillsboro and Singapore, with no GPUs. boat runs only in the EU and has no GPUs.
Is boat SOC 2 compliant?
SOC 2 is in progress. We're open about where we stand: live status at status.ascii.dev and our data retention policy at docs.boat.dev/data-retention.
Try boat
Install the CLI, then run boat new.
7-day free trial
More comparisons
- boat vs DigitalOcean
- boat vs Hetzner Cloud
- AWS EC2 vs DigitalOcean
- Google Compute Engine vs DigitalOcean
- Azure Virtual Machines vs DigitalOcean
- Oracle Cloud vs DigitalOcean
- DigitalOcean vs Vultr
- DigitalOcean vs Linode
- DigitalOcean vs Scaleway
- DigitalOcean vs OVHcloud
- DigitalOcean vs IONOS Cloud
- DigitalOcean vs Contabo