惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
T
Tenable Blog
D
DataBreaches.Net
GbyAI
GbyAI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
腾讯CDC
V
Visual Studio Blog
B
Blog
雷峰网
雷峰网
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
I
InfoQ
M
MIT News - Artificial intelligence
有赞技术团队
有赞技术团队
T
Tailwind CSS Blog
The Cloudflare Blog
L
LangChain Blog
MongoDB | Blog
MongoDB | Blog
Vercel News
Vercel News
Cloudbric
Cloudbric
L
Lohrmann on Cybersecurity
博客园 - 司徒正美
T
The Exploit Database - CXSecurity.com
Google DeepMind News
Google DeepMind News
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Attack and Defense Labs
Attack and Defense Labs
Martin Fowler
Martin Fowler
SecWiki News
SecWiki News
T
Threat Research - Cisco Blogs
J
Java Code Geeks
Cyberwarzone
Cyberwarzone
Forbes - Security
Forbes - Security
Spread Privacy
Spread Privacy
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
大猫的无限游戏
大猫的无限游戏
O
OpenAI News
D
Darknet – Hacking Tools, Hacker News & Cyber Security
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Schneier on Security
Schneier on Security
S
Security @ Cisco Blogs
酷 壳 – CoolShell
酷 壳 – CoolShell
The Hacker News
The Hacker News
H
Help Net Security
Y
Y Combinator Blog
C
Cybersecurity and Infrastructure Security Agency CISA
T
Tor Project blog
量子位
U
Unit 42
S
SegmentFault 最新的问题
V
V2EX
D
Docker

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python) The Hidden Cost of AI Systems Nobody Talks About. undefined vs undeclared, and how typeof behaves Switching from file-based jobs to NATS/Kafka in Rust without changing code io_uring Adventures: Rust Servers That Love Syscalls Why Agentic AI is Killing the Traditional Database The POUR principles of web accessibility for developers and designers Quantum Neural Network 3D — A Deep Dive into Interactive WebGL Visualization How To Install Caveman In Codex On macOS And Windows Automation Pipeline Reliability: Why Your Workflow Breaks When Nobody Is Watching I Built an 'Open World' AI Coding Agent — It Works From ANY Folder From Freelancing to Product: A Tech Service Company's SaaS Transformation China's AI Giants: Adding Tencent Hunyuan & ByteDance Doubao to AI University (74 Providers) On the Vibe Coders and Their Lies clerk: Auto-Summarize Your Claude Code Sessions AI Weekly — 2026/04/10–04/17 | The Model Lockdown Is Here, but the Toolchain Is the Real Battleground AI 週報 — 2026/04/10–2026/04/17 模型封鎖潮來了,但工具鏈才是真戰場 Maybe this is how Open-Source apps are born... 🚀 Fine-Tune LLMs with LoRA and QLoRA: 2026 Guide tRPC v11 + Next.js App Router: End-to-End Type Safety Without the Boilerplate ShadCN UI in 2026: Why I Stopped Installing Component Libraries and Started Owning My Components SaaS Billing in React Server Components: Stripe + Supabase Without a Single `useEffect` Join our DEV Weekend Challenge — $1,000 in Prizes Across TEN winners! Submissions Due April 20 at 6:59 AM UTC. Implementing FSRS Spaced Repetition in Flutter + Supabase — Adding Memory Science to an AI Learning App "I Texted My Localhost From the Train — Claude Code Fixed the Bug Before I Got Home" I Built a Sales Prep AI and It Went Deeper Than Expected Design to Code #2: One JSON, Eleven Outputs Solving the 100M-Row Problem: A Summary Table Pattern for High-Volume Push Notification Logs Flutter Web With Wasm: What Actually Changes For Developers I Built 50 Royalty-Free Soundtracks for My Side Project in a Weekend Using AI Music Generation The Vibe Coding Security Checklist: 7 Things to Check Before You Ship Stop Letting Googlebot Guess Fix Your React App's SEO Right Desconstruindo o Streaming do LinkedIn: Como Criar um Engine de Extração de Vídeo de Alta Performance com HLS e FFmpeg (EDA Part-1) EDA (Exploratory Data Analysis) Explained With Real Life — Why Looking at Your Data Is the Most Important Step in Machine Learning Brand Relationship Management at Scale: Our 4-Touch Outreach System for 200+ Brands Why String.fromEnvironment() Might Return an Empty String in Dart JGuardrails 1.0.0 — Hardening Java LLM Apps Against Jailbreaks, Toxicity, and Prompt Injection Plan and Schedule a Full Week of Threads Content From One Claude Conversation Coding Cat Oran Ep3, Five Tables Changed Everything Updated: BFF Pattern I'm done watching freelancers get buried by 200 proposals. So I'm building the alternative. This is my first post BFS Algorithm in Java Step by Step Tutorial with Examples Tracking LLM Pricing Monthly: An Open Dataset for 22 AI Models How We Measure Content ROI on a Comparison Site: Revenue Attribution Without Perfect Data Introducing Nova AI Ops: The AI-Native Operating System for SRE Teams I built a free desktop video downloader for Windows — Grabbit How Talkie OCR Helps Vision-Impaired & Dyslexic Users Read the World Around Them VRCFaceTracking安装和iPhone面捕配置教程,有bug Even CrowdStrike Can't See Your Agents The Automation Gold Rush: What n8n Workflows and Claude Are Opening Up for Developers Right Now
I've been monitoring 5 VPS providers from Helsinki for 30 days — here's the actual data
byteguard · 2026-06-24 · via DEV Community

Originally published on byte-guard.net.

Affiliate disclosure. This post contains affiliate links for Contabo. If you sign up through them I may earn a small commission at no cost to you. All benchmark data below comes from my own infrastructure — it was collected before any affiliate relationship existed.

Most VPS comparison posts are written by people who have never paid a bill to any of the providers they're reviewing. You can usually tell in the first paragraph: the specs are scraped from a marketing page, the "benchmarks" are six years old, and every provider turns out to be "great for beginners."

This one is different. I run the blog you're reading right now on a Hetzner CPX22 in Helsinki. I run my automation stack on a Contabo VPS in Germany. Both have been running continuously since early April 2026. Uptime Kuma has been checking the blog every 60 seconds since day one — that's over 46,000 health checks at this point. For the three providers I don't directly operate (Vultr, Linode/Akamai, and DigitalOcean), I ran latency probes from the Hetzner server to each provider's nearest European test endpoint.

The result is one post with actual numbers.


Methodology — what's real and what's probed

Directly operated (real uptime data):

  • Hetzner CPX22, Helsinki — production blog host since April 7, 2026. Uptime Kuma checks blog.byte-guard.net and byte-guard.net every 60 seconds.
  • Contabo Cloud VPS 10, Germany — private automation server (N8N, WireGuard) since ~April 18. No automated monitor, but zero unplanned restarts observed over 22 days.

Probed from Hetzner Helsinki (latency only, no uptime data):

  • Linode/Akamai — 50-packet ICMP probe to speedtest.frankfurt.linode.com
  • Vultr — 50-packet probe to fra-de-ping.vultr.com (Frankfurt) and ams-nl-ping.vultr.com (Amsterdam)
  • DigitalOcean — ICMP blocked from external; HTTP probes also refused. No latency data available — I note this explicitly rather than substituting a different data source.

All latency probes were run on 2026-05-10 from the Hetzner VPS (Helsinki, Finland). Results will vary from other origins — I'm measuring specifically from Finland to European datacenters.


Uptime — the headline number

Hetzner (33 days, 46,934 checks)

Monitor Uptime % Avg response Min Max Down events
blog.byte-guard.net 99.9787% 90.4 ms 19 ms 441 ms 0
byte-guard.net 99.9808% 95.4 ms 19 ms 438 ms 0
tools.byte-guard.net 99.9864% 20.6 ms 9 ms 114 ms 5
cve.byte-guard.net 99.9916% 152.2 ms 9 ms 30,502 ms 3
paste.byte-guard.net 99.9888% 20.7 ms 9 ms 99 ms 4

Data period: 2026-04-07 to 2026-05-10. Checks every 60 seconds.

The 33-day uptime on the main blog is 99.9787% — effectively zero downtime for the monitoring period. Every observed "down" event on the tools subdomain was transient (single-check failures that resolved on the next poll), consistent with brief container restart spikes rather than genuine outages.

The cve.byte-guard.net max response of 30,502 ms is a real outlier — a cold-start latency spike on a FastAPI container that hadn't handled a request in a while. It's not a Hetzner problem; it's a Python process that was sleeping. The avg of 152 ms is the steady-state number.

The internal monitoring numbers (tools/paste/cve) look faster than the blog because Uptime Kuma checks them from within the same server — Docker network latency, not public internet.

Contabo (22 days)

I don't have automated uptime monitoring on the Contabo server since it doesn't run a public-facing service. Direct observation: zero unplanned reboots in 22 days. The server's uptime output as of May 10:

11:23:29 up 21 days, 18:10, 1 user, load average: 0.09, 0.04, 0.01

Load average of 0.09 on a 4-vCPU box running N8N, Redis, and WireGuard is exactly what you'd expect from a lightly-loaded automation server.

Vultr, Linode, DigitalOcean

I don't run servers on these providers. For uptime, I won't invent numbers — check their status pages, Linode status, and DigitalOcean status directly if historical uptime matters to your decision. All three are generally regarded as 99.9%+ providers in practice, but I'm not going to copy-paste a claim I can't verify.


Latency — probed from Helsinki

All tests run from the Hetzner CPX22 in Helsinki. Results are 50-packet ICMP probes (ping -c 50 -q). The "jitter" column is the mdev value — standard deviation of round-trip times, which matters for real-time workloads.

Provider Datacenter Avg latency Jitter (mdev) Packet loss
Linode/Akamai Frankfurt 22.8 ms 0.23 ms 0%
Hetzner Helsinki (local) 23.6 ms 0.21 ms 0%
Vultr Frankfurt 27.1 ms 1.08 ms 0%
Vultr Amsterdam 27.9 ms 0.14 ms 0%
Contabo Germany (our server) 34.1 ms 2.83 ms 0%
DigitalOcean Frankfurt ICMP blocked

Tested 2026-05-10. Probe source: Hetzner Helsinki. All providers probed via publicly documented test endpoints.

Three things stand out:

1. Linode Frankfurt is marginally faster to Helsinki than Hetzner Helsinki. Not by much — 22.8 ms vs 23.6 ms — and the jitter is essentially identical (0.23 vs 0.21 ms). Both routes are stable and consistent. If you're building a latency-sensitive service and your users are in Northern/Central Europe, Linode Frankfurt is a legitimate option.

2. Vultr's jitter varies by datacenter. Frankfurt (27.1 ms avg, 1.08 ms jitter) is noticeably bumpier than Amsterdam (27.9 ms avg, 0.14 ms jitter), even though the average round-trip times are close. For most self-hosting workloads this won't matter. For anything that cares about consistency (WebRTC, real-time APIs, game servers), pick Amsterdam if Vultr is your provider.

3. Contabo has the highest jitter by a wide margin. At 2.83 ms mdev, the round-trip times to our Contabo server swing considerably more than the other providers. This matches what the self-hosting community generally observes about Contabo's shared CPU architecture — they pack more tenants per host, which introduces scheduling noise. The absolute latency (34.1 ms) is also higher than the others, partly because our Contabo server is in Germany rather than Finland, and partly because of the higher jitter floor.

DigitalOcean: their Frankfurt datacenter blocks ICMP from external hosts and doesn't run an HTTP speedtest endpoint. This isn't unusual for large providers, but it does mean I have no latency numbers for them from Helsinki. If you need to benchmark DO, you'll need to spin up an instance and test from there.


Pricing (verified May 2026)

Closest equivalent plans across all five providers — chosen for comparability, not cherry-picking:

Provider Plan vCPU RAM Storage Bandwidth Price/mo
Hetzner CPX22 3 AMD 8 GB 80 GB NVMe 20 TB €8.98
Contabo Cloud VPS 10 4 8 GB 75 GB NVMe Unlimited* €4.50
Linode/Akamai Linode 8GB 4 8 GB 160 GB SSD 5 TB $48
Vultr Regular 4GB† 2 4 GB 80 GB SSD 3 TB $20
DigitalOcean Basic 8GB 4 8 GB 160 GB SSD 5 TB $48

Contabo "unlimited" = fair use policy, 200 Mbit/s port. Check their current ToS.

†Vultr's 8 GB shared-CPU plan runs $120/mo — their pricing tier jumps sharply above 4 GB. The 4 GB plan is shown as the practical entry point. Verified May 2026.

The Hetzner/Contabo pricing gap vs the US-headquartered providers is stark. Linode and DigitalOcean both land at $48/month for 8 GB — more than 5× Hetzner's €8.98. Vultr's shared tier is cheaper but the RAM ceiling is lower before the price jumps significantly. The European providers have the pricing advantage for a reason: Hetzner and Contabo own their hardware and run their own datacenters, while Vultr/DO/Linode tend to mark up leased capacity. You pay for the global footprint and polished API/dashboard experience with the US providers.


Provider summary

Hetzner — best for most self-hosters in Europe

Thirty-three days of real production data gives me something useful to say about this one: it just works. The uptime numbers speak for themselves. The dashboard is clean, provisioning takes under a minute, the console doesn't require JavaScript gymnastics, and the €8.98/month CPX22 is genuinely hard to beat on price-to-performance for European users.

The one gap: limited non-European coverage. If your users are in Asia-Pacific or you need multiple regions, Hetzner's reach (Germany, Finland, US-East, US-West, Singapore) is narrower than the US providers.

What I run on it: Ghost blog, Nginx Proxy Manager, Uptime Kuma, three FastAPI subdomains. All in Docker. No issues.

Contabo — best for secondary infrastructure on a budget

At €4.50/month for 4 vCPU and 8 GB RAM, Contabo offers a spec sheet that nothing else at this price comes close to. The tradeoffs are real: higher latency (34 ms from Helsinki vs 23 ms from Hetzner), noticeably more jitter (2.83 ms mdev), and an older CPU generation that benchmarks lower on compute-intensive tasks.

For automation workloads, VPNs, or anything that's not handling real-time user traffic, the jitter doesn't matter. My N8N instance runs fine on it. I'd buy it again for the same use case. I'd reach for Hetzner first for anything user-facing.

Affiliate link: Contabo Cloud VPS 10 — the plan I actually pay for.

Linode/Akamai — surprising latency from Finland, expensive everywhere

Linode Frankfurt is the closest provider to Helsinki that isn't Hetzner itself — 22.8 ms avg vs Hetzner's 23.6 ms, with 0.23 ms jitter. That result surprised me. The network is clean.

The problem is the price. At $48/month for 8 GB RAM (verified May 2026), you're paying 5× Hetzner for equivalent specs, and 10× Contabo. The value proposition for European self-hosters is weak unless you need Linode's specific compliance certifications or managed Kubernetes. For US-based users, they're a reasonable choice — competitive pricing in USD, good support reputation, solid API.

Vultr — global footprint, inconsistent in Europe

Vultr's Frankfurt datacenter had more jitter (1.08 ms mdev) than I'd expect from a premium provider — not terrible, but noticeably worse than Linode Frankfurt or Hetzner Helsinki over the same probe window. Amsterdam was much cleaner (0.14 ms mdev) if you're in Western Europe. Pricing is comparable to Linode: expensive for European users compared to Hetzner/Contabo.

Where Vultr makes sense: hourly billing, 30+ global regions, and a fast API for ephemeral workloads. If you're spinning up test environments programmatically and need regions outside Europe, Vultr is a solid choice.

DigitalOcean — the safe default you're probably already using

I have less to say about DO than the others because their Frankfurt endpoint actively blocked my probes. Not a red flag — just means I can't contribute latency data here. DO's reputation is strong: excellent documentation, the most polished dashboard of the five, and a massive community ecosystem. The price premium is real (~$48/month for 8 GB vs Hetzner's €8.98), but the developer experience has historically been worth it for people who value that.

If you're already on DigitalOcean and happy, staying there is fine. If you're choosing fresh and your workload fits in Europe, you're leaving significant money on the table compared to Hetzner.


The decision matrix

If you... Pick
Self-host in Europe, want best price/performance Hetzner
Need the cheapest possible plan with usable specs Contabo (with jitter tradeoff)
Need global regions + hourly billing Vultr or DigitalOcean
Need US-based infrastructure with good EU presence Linode/Akamai
Value polished DX above all else DigitalOcean

What's next

This post covers the 30-day mark. I'll revisit the Hetzner uptime data at 90 days and add a Contabo automated monitor between now and then.

If you want the tools that generated some of this data — SSL/header scanner, DNS propagation checker — they're free at tools.byte-guard.net. Built them for this kind of audit work.

Questions or different numbers from your own setup? I'm enim on the usual channels — always interested in seeing what the same benchmark looks like from a different origin.