← Übersicht · Skripte & Dateien · Selbst-Hosten auf Hetzner · Checkliste
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.
Der Hetzner-Account ist der Generalschlüssel. Wer da reinkommt, löscht alles.
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).
Dieselbe Logik – jeder dieser Zugänge kann deine Dienste übernehmen oder die Domain entführen.
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.
Begrenzt den Schaden: ein Token/Projekt für Wegwerf-Labs, eins für dauerhafte Dienste (WordPress, Vaultwarden).
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.
Ziel: SSH (Secure Shell) ist gar nicht erst im öffentlichen Internet erreichbar.
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 | sh → tailscale up. Danach in der Cloud-Firewall die Regel für Port 22 löschen und über die Tailscale-IP per SSH.
So steht es in den Guides. Bei wechselnder Heim-IP musst du die Regel nachziehen – ein Grund mehr für Tailscale.
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.
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).
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.
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.
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.
cax) nehmen, wenn gerade verfügbarGü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.
Sonst merkst du erst nach einem Tag, dass etwas down oder die Platte voll ist.
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).
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.
Volle Platte = Datenbank-Korruption, Dienst tot, kein Login mehr.
Wie: Netdata-Alarm, oder ein cron-Einzeiler mit df + Mail/Webhook.
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.
Regel 3-2-1: 3 Kopien, 2 Medien, 1 außer Haus. Und: getestet.
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).
Ungetestetes Backup = kein Backup. Restore auf einen Wegwerf-Server.
.env, compose-Dateien, Configs sichernDamit 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: 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.
Abgelaufene Domain = Seite und Mail tot, im schlimmsten Fall schnappt sie sich jemand.
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 (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.
Die Guides nutzen SMTP-Relays (Port 25 ist bei Hetzner gesperrt), dann irrelevant. Falls doch direkt: PTR in der Hetzner-Console pro IP setzen.
Caddy/CloudPanel/cert-manager erneuern selbst – einmal nachsehen, dass es klappt (Ablaufdatum im Browser).
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.
Hetzner gibt ein /64 gratis. Für rein interne Server sparst du damit die IPv4 (~0,50 €/Monat).
DB-Server ohne öffentliche IP, Bastion davor, Cluster-Traffic nicht übers Internet.
Wie: hcloud network create – steht in den k3s-/OKD-Guides.
Defense in depth – ein Ausbruch aus dem Container ist dann kein root. Podman kann das nativ, Docker mit Rootless-Setup.
Sonst kann ein Container (Speicherleck, Last) die ganze Box lahmlegen.
Wie: in compose mem_limit/cpus bzw. deploy.resources.
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.
sslip.ioFür echtes, vertrauenswürdiges TLS auf Ingress/Routes.
k3s local-path reicht für 1 Node. Multi-Node: Longhorn oder NFS. OKD (OpenShift Kubernetes Distribution): LVMS (LVM Storage Operator).
k3s: /var/lib/rancher/k3s/server/db/ bzw. etcd-Snapshots. OKD: cluster-backup.sh.
Ohne requests/limits plant der Scheduler blind. NetworkPolicies = Pods dürfen nicht beliebig miteinander reden.
Vor allem für die WordPress-Seite. Fehlt es, drohen Abmahnungen.
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.
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).
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.
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).
Die Guides + das Git-Repo sind schon 90 %. Ergänzen: wo liegen die Secrets, wo die Backups, welche Domains, welche Konten, in welcher Reihenfolge.
„Falls mir etwas passiert“. Proton Pass und Bitwarden haben Emergency-Access. Alternativ ein versiegelter Umschlag.