When Hetzner Goes Down: A Survival Guide for Your Team
It's 4 AM in Berlin. Your Hetzner dedicated server is running five services: your main app, an API, a background worker, a database, and a reverse proxy. The database ran out of disk space 2 hours ago. The background worker is dead. The API returns 500 on every request. The main app shows a connection error page. The reverse proxy is the only thing still healthy — it's dutifully serving error pages to every visitor. Your server's CPU and network metrics in Hetzner's panel look normal.
What Happens on Your Team
The Self-Hosted Developer
Chose Hetzner for the price — €4/month for a cloud server that costs $20 elsewhere. Set up nginx, deployed the app, and moved on. Three weeks later, the app crashed from an unhandled exception. Nginx is still running, returning 502 for every request. The developer finds out 2 days later when checking analytics shows a traffic cliff.
The real cost: Cheap servers are great until you realize the cost savings come with a responsibility trade: you're your own ops team. There's no managed runtime catching crashed processes, no auto-restart, no alert when your app stops responding.
What they should have had: An external monitor checking the app URL — not just the server IP. When the app crashes but nginx keeps running, the monitor sees 502 errors and fires an alert. The developer fixes it in minutes instead of discovering it days later.
The European Startup Team
Running production on Hetzner Cloud in Falkenstein for GDPR compliance and low latency for European users. A planned maintenance window from Hetzner reboots their server. The app doesn't auto-start after reboot because nobody configured a systemd service. The site is down from 3 AM to 9 AM.
The real cost: Hetzner announces maintenance windows in advance via email, but the maintenance itself happens automatically. If your application isn't configured to auto-start after a server reboot, you're relying on a human to manually restart it — and humans aren't available at 3 AM.
What they should have had: Two things: a systemd service for auto-restart (fixes the root cause), and external monitoring (catches it if auto-restart fails). The monitor alerts at 3:05 AM. Even if nobody acts until morning, they know exactly when the outage started and can configure auto-start to prevent it next time.
The Ops Engineer Managing Multiple Servers
Manages 8 Hetzner servers running different services. One server's SSL certificate expired on a Saturday. The server is running fine — nginx is healthy, the app is responding — but browsers block all HTTPS connections with a scary security warning. Users see a "Your connection is not private" page.
The real cost: SSL expiration doesn't cause a server-level failure. Everything looks healthy from the server side. But from the user side, the site is effectively down. Without monitoring that checks from the outside through HTTPS, this failure is invisible until someone reports it.
What they should have had: HTTPS monitoring on every domain. When the certificate expires, the external monitor's HTTPS request fails with a certificate error. The alert fires immediately. The ops engineer renews the cert in minutes instead of losing a weekend of traffic.
Why Monitor Hetzner?
Hetzner gives you raw servers at great prices, but that means you're responsible for everything running on them. There's no managed application monitoring, no auto-restart for crashed processes, and no proactive notification when your app stops responding. If your process dies at 2 AM, nobody knows until someone checks.
What to Monitor
your-server-ip-or-domainYour application's public URLyour-domain.com/healthApplication health check endpointyour-domain.com/api/statusAPI status for backend servicesWhat You Should Actually Do
- 1Monitor your application URL, not just the server IP — nginx returning 502 for a crashed app won't show up in server-level monitoring
- 2Add a /health endpoint that checks all dependencies (database, cache, external services) — a running web server doesn't mean a working application
- 3Set up auto-restart for your application process using systemd — then monitor to verify auto-restart actually works
- 4Track response times to catch disk space issues, memory pressure, and database slowdowns before they cause crashes
- 5Monitor HTTPS specifically if you manage your own SSL certificates — certificate expiration is invisible from the server side
Hetzner's Official Status Page
Hetzner publishes real-time status at status.hetzner.com. Monitoristic doesn't replace this — it complements it. The official page tells you when Hetzner reports an issue. Your own monitor tells you when your connection is affected, often before the status page updates. You also get push alerts instead of checking a webpage manually.
Hetzner offers incredible value — European data centers, competitive pricing, reliable hardware. But the value proposition is bare metal: you get the server, you run everything on it. There's no application-level monitoring, no managed restarts, no proactive alerts. External monitoring is the minimum operations layer you need to run production workloads on Hetzner responsibly.
Related Reading
Skip the panic. Know in 60 seconds.
Start Monitoring Hetzner →Plans from $5/month · 14-day money-back guarantee