← Übersicht  ·  Skripte & Dateien  ·  Selbst-Hosten auf Hetzner · Checkliste

Grundausstattung

Was man zusätzlich zu den Schritt-für-Schritt-Anleitungen einrichten sollte – und was typischerweise vergessen wird, bis es weh tut. Haken bleiben im Browser gespeichert.

0 / 0
kritisch – zuerst wichtig optional / je nach Setup
Wenn du nur drei Dinge machst: 2FA aufs Hetzner-Konto · Tailscale und Port 22 zumachen · ein Backup außerhalb von Hetzner.

01 Konto & Zugänge

Der Hetzner-Account ist der Generalschlüssel. Wer da reinkommt, löscht alles.

2FA auf console.hetzner.com aktivieren

Ohne 2FA reicht ein geleaktes Passwort, um alle Server, Snapshots und Backups zu löschen.

Wie: Security → Two-Factor Auth. Recovery-Codes ausdrucken (nicht nur im Passwort-Manager, siehe Abschnitt 11).

2FA auch bei Proton, Cloudflare, Domain-Registrar

Dieselbe Logik – jeder dieser Zugänge kann deine Dienste übernehmen oder die Domain entführen.

API-Token wie ein Passwort behandeln

Der Token steht im Klartext in %APPDATA%\hcloud\cli.toml. Read&Write = Vollzugriff aufs Projekt.

Wie: pro Zweck einen eigenen Token, ungenutzte löschen, nie in Git/Screenshots. Für Skripte reicht oft ein Projekt nur für diese Server.

Getrennte Hetzner-Projekte für getrennte Zwecke

Begrenzt den Schaden: ein Token/Projekt für Wegwerf-Labs, eins für dauerhafte Dienste (WordPress, Vaultwarden).

AVV (Auftragsverarbeitungsvertrag) mit Hetzner abschließen

DSGVO (Datenschutz-Grundverordnung): sobald personenbezogene Daten verarbeitet werden (jede Website mit Besuchern), brauchst du einen Auftragsverarbeitungsvertrag.

Wie: in der Hetzner-Console unter Rechtliches / Datenschutz – fertig zum Akzeptieren, kostenlos.

02 Zugang zum Server

Ziel: SSH (Secure Shell) ist gar nicht erst im öffentlichen Internet erreichbar.

Tailscale (kostenlos) auf allen Servern – dann Port 22 zu

Löst das nervige „SSH nur auf meine Heim-IP, aber die ändert sich“ aus allen Anleitungen. Der Server ist von außen unsichtbar.

Wie: curl -fsSL https://tailscale.com/install.sh | shtailscale up. Danach in der Cloud-Firewall die Regel für Port 22 löschen und über die Tailscale-IP per SSH.

alle Guides
Ohne Tailscale: SSH-Regel auf die eigene IP (Internet Protocol), und aktuell halten

So steht es in den Guides. Bei wechselnder Heim-IP musst du die Regel nachziehen – ein Grund mehr für Tailscale.

Nicht-root-User mit sudo für dauerhafte Server

Die Guides arbeiten als root (ok für Wegwerf-Server). Für WordPress/Vaultwarden: eigener User, PermitRootLogin no.

Wie: adduser deploy && usermod -aG sudo deploy, SSH-Key kopieren, testen, dann root-Login abschalten.

fail2ban, wo ein Login öffentlich ist

SSH (falls doch offen), WordPress-Login, Vaultwarden-Login, CloudPanel/Panel-Ports.

Wie: apt install fail2ban. Für Vaultwarden/WordPress gibt es fertige Filter (Doku der jeweiligen Projekte).

03 Updates & Betrieb

Automatische Sicherheitsupdates fürs OS (Betriebssystem)

Ungepatchte Server werden automatisiert übernommen. Ist in den Guides erwähnt, aber wirklich Pflicht.

Wie: Ubuntu/Debian apt install unattended-upgrades. RHEL (Red Hat Enterprise Linux)/CentOS dnf install dnf-automatic + Timer aktivieren.

Log-Größen begrenzen (Docker + journald)

Disk-voll ist die #1-Todesursache selbstgehosteter Boxen – oft durch endlos wachsende Container-Logs.

Wie: /etc/docker/daemon.json: {"log-driver":"json-file","log-opts":{"max-size":"10m","max-file":"3"}} + systemctl restart docker. journald: SystemMaxUse=500M in /etc/systemd/journald.conf.

Ein Reverse-Proxy für alle Dienste

Wenn du mehr als einen Dienst hostest: nicht pro Dienst ein Caddy. Einer macht TLS (Transport Layer Security) + Routing nach Hostname.

Wie: Caddy, Traefik oder Nginx Proxy Manager (Web-GUI). Und: mehrere Dienste auf einen CPX22 statt N Server – spart real Geld.

ARM (cax) nehmen, wenn gerade verfügbar

Günstiger bei gleicher Leistung, fast alle offiziellen Images können arm64 – aber cx und cax sind oft ausverkauft. Default bleibt cpx, ARM ist der Gluecksfall.

04 Monitoring & Alarme

Sonst merkst du erst nach einem Tag, dass etwas down oder die Platte voll ist.

Uptime-Monitoring von außen

Prüft alle 1–5 Min, ob die Seite/der Dienst antwortet, und schickt eine Mail/Push wenn nicht.

Wie: UptimeRobot (gratis) oder Better Stack – oder selbst gehostet Uptime Kuma (Docker, ein Container).

Ressourcen-Monitoring auf dem Server

CPU (Central Processing Unit), RAM (Random Access Memory), Platte, Netzwerk, Container – sichtbar statt raten.

Wie: Netdata (Ein-Zeilen-Installer, sofort Dashboard) oder ctop/htop für schnell.

Alarm bei >85 % Plattenbelegung

Volle Platte = Datenbank-Korruption, Dienst tot, kein Login mehr.

Wie: Netdata-Alarm, oder ein cron-Einzeiler mit df + Mail/Webhook.

Hetzner hat kein Ausgabenlimit

Ein vergessener großer Server / Cluster läuft, bis du ihn löschst.

Wie: für Wegwerf-Server das nächtliche Auto-Teardown aus den Guides. Für Dauerdienste die „Usage“ in der Console im Blick behalten.

05 Backups

Regel 3-2-1: 3 Kopien, 2 Medien, 1 außer Haus. Und: getestet.

Ein Backup außerhalb von Hetzner

Snapshots und Hetzner-Backups liegen alle bei Hetzner. Konto gesperrt/gekapert = alles weg.

Wie: restic oder borg nach Backblaze B2 (~6 $/TB/Monat) oder auf ein NAS (Network Attached Storage) zu Hause. Täglich per cron. Betrifft v.a. Vaultwarden-DB und WordPress (DB + Uploads).

Backup einmal wiederherstellen – testen

Ungetestetes Backup = kein Backup. Restore auf einen Wegwerf-Server.

.env, compose-Dateien, Configs sichern

Damit ein Wiederaufbau Minuten statt Stunden dauert.

Wie: in ein privates Git-Repo (ohne Secrets) + die Secrets separat im Passwort-Manager. Oder alles verschlüsselt in den vault.html-Tresor.

Snapshot ≠ Backup verstanden

Snapshot: manuell, 0,0143 €/GB (Gigabyte)/Monat, bleibt bis du löschst, Server-Löschen entfernt ihn nicht. Backups-Feature: +20 % pauschal, 7 Tage, wird mit dem Server gelöscht.

06 Domain & DNS

Domain: Auto-Renew an + Zahlungsmittel hinterlegt

Abgelaufene Domain = Seite und Mail tot, im schlimmsten Fall schnappt sie sich jemand.

SPF (Sender Policy Framework) + DKIM (DomainKeys Identified Mail) + DMARC (Domain-based Message Authentication, Reporting and Conformance) setzen

SPF/DKIM stehen in den WordPress-/Vaultwarden-Guides. DMARC fehlt oft – ohne DMARC ist Spoofing deiner Domain leicht und die Zustellrate leidet.

Wie: TXT (Text-Record) _dmarc.deine-domain = v=DMARC1; p=quarantine; rua=mailto:dmarc@deine-domain. Erst p=none zum Beobachten, dann verschaerfen.

CAA-Record + DNSSEC (DNS Security Extensions)

CAA (Certification Authority Authorization): nur Let’s Encrypt darf Zertifikate für deine Domain ausstellen. DNSSEC: schützt vor DNS-Faelschung.

Wie: CAA 0 issue "letsencrypt.org". DNSSEC am Registrar/bei Cloudflare mit einem Klick.

PTR (Pointer-Record) / rDNS – nur bei Direkt-Mailversand

Die Guides nutzen SMTP-Relays (Port 25 ist bei Hetzner gesperrt), dann irrelevant. Falls doch direkt: PTR in der Hetzner-Console pro IP setzen.

07 TLS & Netzwerk

Automatische Zertifikats-Erneuerung prüfen

Caddy/CloudPanel/cert-manager erneuern selbst – einmal nachsehen, dass es klappt (Ablaufdatum im Browser).

Cloudflare Free davor

CDN (Content Delivery Network), Caching, DDoS-Schutz, Rate-Limiting, versteckt die Server-IP. Für öffentliche Seiten fast immer sinnvoll.

Wenn deine Domain schon bei Cloudflare liegt (z. B. seb4u.com, DNS + Registrar): nur den A-Record anlegen und den Proxy (orange Wolke) einschalten. Noch besser: Cloudflare Tunnel (cloudflared) – gar keine offenen Ports, der Server dialt raus.

IPv6 (Internet Protocol Version 6) aktivieren

Hetzner gibt ein /64 gratis. Für rein interne Server sparst du damit die IPv4 (~0,50 €/Monat).

Privates Netz bei mehreren Servern

DB-Server ohne öffentliche IP, Bastion davor, Cluster-Traffic nicht übers Internet.

Wie: hcloud network create – steht in den k3s-/OKD-Guides.

08 Container-Hardening

Rootless für Dauerdienste

Defense in depth – ein Ausbruch aus dem Container ist dann kein root. Podman kann das nativ, Docker mit Rootless-Setup.

RAM/CPU-Limits pro Container

Sonst kann ein Container (Speicherleck, Last) die ganze Box lahmlegen.

Wie: in compose mem_limit/cpus bzw. deploy.resources.

Image-Updates – mit Backup davor

Sicherheitsfixes wandern nur mit neuen Images rein. Automatik (Watchtower, podman auto-update) kann aber auch etwas brechen.

Wie: docker compose pull && docker compose up -d alle paar Wochen, nach Backup. docker image prune -a hält den Cache klein.

09 Kubernetes-Extras (k3s / OKD)

cert-manager + echte Domain statt sslip.io

Für echtes, vertrauenswürdiges TLS auf Ingress/Routes.

Storage-Lösung bei mehreren Nodes

k3s local-path reicht für 1 Node. Multi-Node: Longhorn oder NFS. OKD (OpenShift Kubernetes Distribution): LVMS (LVM Storage Operator).

etcd-/DB-Backup des Clusters

k3s: /var/lib/rancher/k3s/server/db/ bzw. etcd-Snapshots. OKD: cluster-backup.sh.

requests/limits + NetworkPolicies

Ohne requests/limits plant der Scheduler blind. NetworkPolicies = Pods dürfen nicht beliebig miteinander reden.

10 Rechtliches (DE, öffentliche Seiten)

Vor allem für die WordPress-Seite. Fehlt es, drohen Abmahnungen.

Impressum

Bei einer öffentlichen deutschen Website gesetzlich Pflicht (DDG). Auch bei privaten Seiten mit „geschäftsmäßigem“ Charakter.

Wie: Impressums-Generator (z. B. von eRecht24 / activeMind), als eigene Seite verlinkt im Footer.

Datenschutzerklärung

DSGVO-Pflicht, sobald du Daten von Besuchern verarbeitest (Server-Logs zählen schon).

Wie: Generator, dann an dein tatsächliches Setup anpassen (Hosting, Analytics, Fonts, Embeds, Kontaktformular).

Cookie-/Consent-Banner – nur wenn nötig

Pflicht bei Analytics, Maps, YouTube-Embeds, externen Fonts u. ae. Nicht nötig, wenn die Seite technisch nur das Nötigste lädt.

Tipp: Fonts lokal einbinden, Embeds erst nach Klick laden – dann brauchst du oft gar kein Banner.

11 Recovery & Runbook

Zirkelschluss vermeiden

Hetzner-Login im Passwort-Manager, Passwort-Manager läuft auf Hetzner – wenn Hetzner weg ist, kommst du an nichts mehr.

Wie: Hetzner-, Proton-, Cloudflare-, Registrar-Zugang + deren 2FA-Recovery-Codes zusätzlich offline (ausgedruckt, an einem sicheren Ort).

Ein Runbook „wie baue ich alles neu auf“

Die Guides + das Git-Repo sind schon 90 %. Ergänzen: wo liegen die Secrets, wo die Backups, welche Domains, welche Konten, in welcher Reihenfolge.

Notfallzugriff für eine Vertrauensperson

„Falls mir etwas passiert“. Proton Pass und Bitwarden haben Emergency-Access. Alternativ ein versiegelter Umschlag.

⌂ Cockpit