Projekt ≠ Server
Ein Projekt ist eine abgeschottete Kiste voller Ressourcen – kein Server.
| Konto | dein Login, Rechnung, Kontaktdaten, 2FA. Ein Konto, viele Projekte. |
| Projekt | ein isolierter Bereich. Enthält mehrere Server, dazu Volumes, private Netze, Firewalls, Load Balancer, Primary IPs (Internet-Protocol-Adressen), Snapshots, SSH-Keys, Placement Groups. Eigener API-Token. Ressourcen aus verschiedenen Projekten sehen sich nicht (nur über öffentliche IP). |
| Server | eine VM (virtuelle Maschine) innerhalb eines Projekts. |
- Wofür Projekte:
prod/staging/devtrennen · pro Kunde ein Projekt · ein eigenes Projekt für „Wegwerf-Kram, den ich vergessen könnte“ (die Selbstzerstörungs-cloud-init aus container-host gehört in ein separates Projekt, damit ihr Kill-Token nur dort etwas löschen kann). - Ein
hcloud context= ein API-Token = ein Projekt.hcloud context create heimbindet an das Projekt, in dem du den Token angelegt hast. Mehrere Projekte → mehrere Contexts,hcloud context use <name>. - Rechnung: eine pro Konto, aber pro Projekt aufgeschlüsselt.
- Limits (Standard): ~10 Projekte/Konto, ~10 Server + je ~5 Volumes/LB (Load Balancer)/Netze pro Projekt – per Support erhöhbar.
- Projekt oben links im Panel umschalten (Projekt-Auswahl / „All projects“).
Ein Projekt lässt sich erst löschen, wenn es leer ist (alle Server, Volumes, Netze, Load Balancer, Primary IPs, Snapshots weg). Snapshots und ungenutzte Primary IPs kosten weiter, auch wenn kein Server läuft.
Konto, Projekt, Zugang
- Registrieren auf console.hetzner.com (Verifizierung kann bei Neukonten 1–2 Tage dauern – früh anfangen).
- 2FA einschalten: – TOTP-App, Recovery-Codes ausdrucken.
- Projekt anlegen: Startseite → New Project → Name
heim. Das Default-Projekt kannst du umbenennen. - SSH-Key hinterlegen:
– Inhalt von
~/.ssh/id_ed25519.pubeinfügen, Name z. B.laptop. (Noch keiner?ssh-keygen -t ed25519auf dem Laptop.) - API-Token (nur falls du doch die CLI / Terraform nutzt): → Read & Write. Wird nur einmal angezeigt. Der Token gilt nur für dieses eine Projekt.
Server erstellen – Feld für Feld
| Feld | Was wählen / worauf achten |
|---|---|
| Location | Nürnberg / Falkenstein / Helsinki (EU), Ashburn / Hillsboro (US), Singapur. Nähe zu dir und zu deinen Nutzern. Muss zu Volumes / Primary IP (Internet Protocol) / privatem Netz passen – die sind an eine Location gebunden. |
| Image | Ubuntu 24.04 oder Debian 12 für die Guides. „Apps“-Tab hat Fertig-Images (Docker CE, WordPress…) – für die cloud-init-Guides nicht nötig. Eigener Snapshot: Tab Snapshots. |
| Type | Shared vCPU reicht fast immer. cx = Intel/AMD (Advanced Micro Devices) x86, cax = ARM (Ampere) – ARM ist günstiger und für Container/Web top, solange alle Images arm64 haben – nur sind cx und cax oft ausverkauft. CPX22 ist der realistische Einstieg. Dedicated vCPU (ccx) nur bei Dauerlast. |
| Networking | Public IPv4 (~0,60 €/Mon, aber ohne kommst du per SSH nur über IPv6 / einen Bastion ran) + IPv6 (gratis). Haken bei Private networks, wenn du ein Netz gebaut hast (Cluster!). |
| SSH Keys | deinen Key (laptop) anhaken. Ohne Key → Root-Passwort per E-Mail (schlechter). Mehrere Keys möglich. |
| Volumes | hier direkt eins anlegen und mitmounten, oder später separat (siehe Abschnitt 5). |
| Firewall | eine bestehende Firewall anhaken. Gibt's noch keine: Server erst ohne erstellen, Firewall bauen (Abschnitt 4), dann anhängen. Ohne Firewall ist alles offen. |
| Backups | Haken = automatische tägliche Sicherung, +20 % vom Serverpreis, letzte 7, wird mit dem Server gelöscht. F-ür „Server wegwerfen“ lieber Snapshots (Abschnitt 6). |
| Placement Group | nur für HA (Hochverfügbarkeit) relevant: verteilt mehrere Server auf verschiedene physische Hosts. Für einen Server egal. |
| Labels | key=value zum Filtern – z. B. env=prod, app=blog. Firewalls und das Kill-Switch-Skript können nach Labels selektieren. |
| Cloud config | hier kommt der Inhalt der cloud-init.yaml aus den Guides rein („user data“). Läuft einmalig beim ersten Boot. Nachträglich ändern geht nicht – dann Rebuild. |
| Name | frei, z. B. dienste. Wird auch der Hostname. |
Create & Buy now → nach ~10 s läuft der Server, IPv4 steht in der
Liste. Verbinden: ssh root@<ip> (bzw. der User aus deiner cloud-init).
Der Wizard zeigt unten rechts €/Monat und €/Stunde live – inklusive IPv4, gewähltem Volume und Backups-Haken. Abgerechnet wird stundengenau, ein angefangener Monat gedeckelt auf den Monatspreis.
Firewall & Netzwerk
Cloud Firewall kostenlos
- Wirkt vor dem Server (wie eine Security Group), unabhängig von
ufw/nftablesim Server. - Inbound-Regeln anlegen: SSH
22(am besten nur deine IP als Source, oder das Tailnet), plus80/443für Web. Outbound ist per Default alles erlaubt. - Apply to: einzelne Server oder per Label Selector
(
env=prod) – dann gilt sie automatisch für jeden neuen Server mit dem Label. - Änderungen greifen sofort, kein Server-Reboot.
Ausgehender Mailversand auf Port 25 und 465 ist bei Hetzner gesperrt (Spam-Schutz), auch mit erlaubter Firewall-Regel. Mailversand nur über einen SMTP-Relay auf Port 587. Freischaltung von 25 per Support-Ticket möglich, dauert.
Private Networks kostenlos
IP-Range wählen (z. B. 10.0.0.0/16), Subnetz je Location. Beim
Server-Erstellen anhaken oder später Network → Attach Server. Für
Cluster-Traffic (k3s, OKD) – dann kann eine feste private IP vergeben werden.
Primary IPs bleibt die IP gleich?
Standard: beim Server-Erstellen legt Hetzner die IPv4 automatisch an, mit „Auto-delete: an“ – sie wird mit dem Server gelöscht und wandert zurück in Hetzners Pool. Server löschen und neu erstellen → neue Zufalls-IP (auch beim Neuaufbau aus einem Snapshot). Reboot, Herunterfahren, Rebuild und Rescale ändern die IP dagegen nicht.
Eine reservierte IPv4/IPv6, die unabhängig vom Server existiert und
bleibt – 0,50 €/Monat, egal ob angehängt oder nicht.
Beim Server-Erstellen unter Networking diese Primary IP wählen. Dann zeigen
DNS-A-Record, kubeconfig, podman system connection, Firewall-Regeln und
--tls-san dauerhaft auf dieselbe Adresse.
- Alternativ ohne extra Ressource: bei einem bestehenden Server die auto-erzeugte IP auf „Auto-delete: aus“ stellen (Server → Networking → die IP → Settings) – dann überlebt sie das Löschen und lässt sich dem neuen Server zuweisen.
- Eine Primary IP ist an eine Location gebunden – der neue Server muss in derselben Location stehen.
- Reines Wegwerf-Lab ohne Domain: weglassen, das Skript (Snapshot & Restore) setzt die Verbindung nach jedem Neuaufbau selbst.
Load Balancer
Ab ~5,4 €/Mon (LB11). Verteilt auf mehrere Server (per Label oder einzeln), Health-Checks, optional TLS-Terminierung. Für einen einzelnen Server unnötig – da macht Traefik/Caddy den Job. Pflicht für echte Multi-Node-Cluster (OKD).
Volumes
- Netzwerk-Blockspeicher, 0,0572 €/GB (Gigabyte)/Monat, min. 10 GB, bis 10 TB (Terabyte). An eine Location gebunden – muss zum Server passen.
- Create → Größe, Location, Server auswählen, Automatically
mount anhaken → Hetzner legt Dateisystem an und trägt es in
/etc/fstabein (/mnt/HC_Volume_…). - Vergrößern jederzeit (nur größer): Volume →
Resize, danach im Server
resize2fs/xfs_growfs. - Überlebt das Löschen des Servers – abtrennen, an einen neuen Server hängen. Gut, um nur die Daten zu behalten und den Server wegzuwerfen (Alternative zum Snapshot, teurer pro GB, dafür live abtrennbar).
Snapshots & Backups
Snapshot erstellen
- Voller Abzug der Server-Platte: OS (Betriebssystem), Container-Images, alle Daten, Configs. Vorher im
Server Dienste sauber stoppen +
sync. - 0,0143 €/GB/Monat (Stand 2026), nach tatsächlich belegter, komprimierter Größe. Ein Container-Host mit 3–5 GB → ~4–7 Cent/Monat.
- Verwaltet unter – bleiben, wenn du den Server löschst. Standard-Limit ~25/Projekt.
Aus Snapshot wiederherstellen
Neuen Server erstellen → Image-Tab Snapshots → den Snapshot wählen. Der neue Server bekommt eine neue öffentliche IP (außer du hängst eine Primary IP an) und einen neuen SSH-Host-Key. Details: Snapshot & Restore.
Backups-Feature
– automatisch täglich, +20 % pauschal vom Serverpreis, letzte 7, wird mit dem Server gelöscht. Gut für einen dauerhaften Server. Für Wegwerf-Server sind Snapshots richtig.
Snapshot/Backup einer laufenden Datenbank kann inkonsistent sein. Zusätzlich
logische Dumps (mysqldump --single-transaction, pg_dump) außer
Haus – siehe Mehrere Dienste auf einem Server.
Server verwalten
| Aktion | Wozu / Achtung |
|---|---|
| Power (Shutdown / Power off / Reboot) | Shutdown = sauber (ACPI), Power off = hart. Ausgeschaltet kostet fast gleich viel – nur der Serverpreis bleibt, nur ~Traffic entfällt. Sparen = löschen. |
| Graphs | CPU (Central Processing Unit), Netz, Disk-IO der letzten Std/Tage/Wochen. Erster Blick bei „langsam“. |
Console (rechts oben, >_) | Web-VNC direkt auf die VM – wenn SSH nicht mehr geht (Firewall verbockt, sshd kaputt). |
| Rescue → Enable + Reboot | bootet ein Linux-Live-System (nicht deine Platte). Zum Reparieren: mount /dev/sda1 /mnt, chroot, fixen. |
| Rebuild | Platte platt, frisches Image (oder Snapshot). Alle Daten weg. Einzige Art, die cloud-init erneut laufen zu lassen. |
| Rescale (Change type) | größer/kleiner. Nur Upgrade mit Keep disk ohne Datenverlust. Downgrade nur wenn die Disk in den kleineren Typ passt. Kurzer Reboot. |
| ISO (ISO-9660-Abbild) | ein ISO mounten (eigenes OS installieren, z. B. Fedora CoreOS für OKD). |
| Delete | Server weg, Abrechnung stoppt sofort. Snapshots und Volumes bleiben (und kosten weiter). |
Kosten im Blick
Preise sind Richtwerte. Hetzner hat 2026 zweimal erhöht (zuletzt 15. Juni: CX/CAX +30–40 %, CPX/CCX über 100 %). Aktuelle Server-Preise, alle Nebenposten, ein Rechner und Beispielrechnungen stehen zentral in Kosten & Budget.
- Es gibt kein Ausgabenlimit. Ein vergessener Server läuft und kostet, bis du ihn löschst. Der Schutz ist Selbstdisziplin bzw. das Auto-Down-Skript / die Selbstzerstörungs-cloud-init aus den Guides.
- – laufende Kosten des Monats, pro Projekt aufgeschlüsselt, plus PDF-Rechnungen.
- Was weiterkostet, auch wenn kein Server läuft: Snapshots (0,0143 €/GB/Mon), Volumes (0,0572 €/GB/Mon), reservierte Primary IPs (0,50 €/Mon), Load Balancer.
- Traffic: 20 TB/Monat inklusive (EU/US), darüber 1,19 €/TB. Für normale Web-Dienste praktisch nie ein Thema.
- Benachrichtigung einrichten: es gibt keine harte Grenze, aber du kannst
dir per E-Mail-Report / eigenem Skript (
hcloudim Cron) die aktuelle Summe schicken lassen.
Projekt-Strategie
| Aufteilung | Wann |
|---|---|
| Ein Projekt für alles | Einstieg, ein paar private Dienste. Einfachste Abrechnung, ein Token. |
prod + staging | sobald etwas „echt“ läuft – Testen ohne Risiko für die Produktion, getrennte Tokens (ein geleakter Staging-Token kann prod nicht anfassen). |
| Eigenes Projekt für Wegwerf / Selbstzerstörung | immer, wenn ein Server sich per API selbst löschen soll: der Kill-Token liegt auf dem Server – er darf nur in einem Projekt Macht haben, in dem nur Wegwerf-Server stehen. |
| Ein Projekt pro Kunde / Mandant | klare Abrechnung, klare Grenze, unabhängig kündbar, getrennte Zugriffsrechte. |
Projekt-Trennung und Server-Konsolidierung sind zwei Achsen: ein Projekt
prod kann trotzdem nur einen Server enthalten, auf dem via Traefik
fünf Dienste laufen. Trenne Projekte nach Verantwortung/Abrechnung,
Server nach Ressourcen/Blast Radius.
+ Hetzner DNS Console
dns.hetzner.com ist ein eigenes, kostenloses Produkt (nicht Teil der Cloud Console): autoritatives DNS mit Web-Oberfläche und API. Zone anlegen, Nameserver beim Registrar eintragen, Records pflegen. Alternative zu Cloudflare-DNS – ohne Proxy/CDN (Content Delivery Network), dafür simpel. Eigener API-Token unter DNS Console → API Tokens (getrennt vom Cloud-Token).
+ Console vs. CLI vs. Terraform
| Weg | Wann |
|---|---|
| Console (dieses Dokument) | einmalige Sachen, erstes Kennenlernen, schneller Blick auf Graphs/Kosten, Rescue/Console bei Störungen. |
hcloud-CLI (die meisten Guides) | alles Wiederholbare: Server hoch/runter per Skript, Kill-Switch, Snapshot-Zyklus. winget install HetznerCloud.CLI. |
| Terraform / OpenTofu | größere/mehrere identische Setups als Code, Review, Versionierung. Provider hetznercloud/hcloud. |
Alle drei reden mit derselben API und demselben Projekt – du kannst jederzeit wechseln. Ein in der Console erstellter Server lässt sich per CLI verwalten und umgekehrt.