Dein eigener Server — von null online
Von „ich habe keinen Server" bis zum ersten eigenen Dienst live unter Domain — sicher. Roter Faden: erst eine Website online bringen, dann n8n als echten Dienst. In 10 Stufen, ab null.
Worum geht's?
Ein eigener Server klingt nach „nur für Profis" — ist es aber nicht. Für ein paar Euro im Monat mietest du einen VPS (virtuellen Server), den du komplett selbst kontrollierst: deine Daten, dein Standort, deine Regeln.
Du lernst hier den kompletten Weg von null: Server mieten → per SSH einloggen & absichern → Domain verbinden → Reverse Proxy mit HTTPS → einen echten Dienst betreiben → ihn mit Updates, Backups & Monitoring am Laufen halten. Docker (aus dem ersten Workshop) nutzen wir nur kurz als Werkzeug — im Fokus steht der Server.
Dieses Portal ist beides: Live-Präsentation für den Workshop und Selbstlern-Kurs zum Durchklicken. Dein Fortschritt wird lokal gespeichert.
? Für wen ist ein eigener Server wichtig?
Überall, wo man Dienste datensouverän selbst betreiben will — raus aus der Abo- und US-Cloud-Abhängigkeit.
🗺️ Von null bis online — die Reise
Zwei Phasen: erst der schnelle, sichtbare Win (eine Website live), dann der echte Dienst.
Phase 1 (Stufen 1–7): Server steht, erste Website sicher live unter deiner Domain. Phase 2 (8–10): echter Dienst (n8n) + sauberer Betrieb.
🧵 Roter Faden: erst Website, dann n8n
🪜 Die 10 Stufen
Was ist ein VPS — und warum ein eigener Server?
Ein eigener virtueller Server für ein paar Euro im Monat — und wann sich das gegenüber Shared Hosting oder großer Cloud lohnt.
1 Was ist ein VPS?
VPS = Virtual Private Server: ein eigener, virtueller Server in einem Rechenzentrum, den du komplett kontrollierst — rund um die Uhr online, mit eigener IP-Adresse und vollem Root-Zugriff.
2 VPS vs. Shared Hosting vs. große Cloud
Drei Wege, etwas online zu betreiben — der VPS ist der Sweet Spot aus Kontrolle und Einfachheit.
3 Was du brauchst
✓ Geschafft, wenn du …
VPS mieten & einrichten
In wenigen Minuten zum eigenen Ubuntu-Server — hier am Beispiel Hostinger, übertragbar auf Hetzner & Co.
1 Provider wählen & VPS bestellen
Es gibt viele gute Anbieter. Wir zeigen den Ablauf an Hostinger — bei Hetzner, Netcup & Co. ist er fast identisch.
- Plan: ein kleiner VPS reicht zum Start — 1–2 vCPU, ~4 GB RAM, etwas SSD.
- Betriebssystem: Ubuntu LTS (Long-Term-Support) — stabil, riesige Community, das nutzen wir hier.
- Standort: ein EU-Rechenzentrum (z. B. Deutschland) — gut für Datenschutz & Latenz.
- Nach dem Bestellen bekommst du die IP-Adresse + erste Zugangsdaten (root-Passwort oder Key).
Hostinger VPS ansehen ↗ (Affiliate-Link — unterstützt FL Pro, kostet dich nichts extra)

Versionsstand: Hostinger-Oberfläche · Stand Juni 2026 (UIs ändern sich).
2 Was du jetzt in der Hand hast
Nach dem Bestellen hast du drei Dinge: eine IP-Adresse (z. B. 203.0.113.10), einen Benutzer (meist root) und ein Passwort oder einen Key. Damit loggst du dich gleich per SSH ein (Stufe 3).
✓ Geschafft, wenn du …
Erster Zugang per SSH & SSH-Keys
Sicher auf den Server einloggen — und Passwörter durch Schlüssel ersetzen.
1 Was ist SSH — und der erste Login
~/.ssh/config, Tunnel & Härtung Schritt für Schritt.SSH (Secure Shell) ist eine verschlüsselte Verbindung, über die du den Server aus der Ferne im Terminal bedienst — als säßest du davor.
Der Login-Befehl ist überall gleich — ssh ist in Windows 10/11, macOS und Linux eingebaut:
ssh ist seit Windows 10 dabei.ssh ist vorinstalliert.ssh ist vorinstalliert.
yes bestätigen, dann das Provider-Passwort.2 SSH-Keys statt Passwort
Passwörter kann man raten. Ein SSH-Schlüsselpaar ist deutlich sicherer — und bequemer (kein Tippen mehr).
authorized_keys)Beim Login beweist dein privater Key, dass der öffentliche auf dem Server zu dir gehört — ohne dass je ein Passwort übers Netz geht.
ssh-copy-id fehlt manchmal — dann den Inhalt von ~/.ssh/id_ed25519.pub manuell in die Datei ~/.ssh/authorized_keys auf dem Server kopieren.
ssh-keygen erzeugen, öffentlichen Key per ssh-copy-id auf den Server bringen, danach loggt ssh root@… ohne Passwort ein.3 Bequemer Login mit ~/.ssh/config
Statt jedes Mal IP und Benutzer zu tippen, gib deinem Server einen Namen:
Host meinserver
HostName 203.0.113.10
User root
IdentityFile ~/.ssh/id_ed25519
ssh meinserver. Das Abschalten des Passwort-Logins (nur noch Key) machen wir in Stufe 4 — erst wenn der Key-Login sicher klappt, sonst sperrst du dich aus.✓ Geschafft, wenn du …
Server absichern
Die nicht verhandelbaren Basics, bevor irgendwas online geht: Updates, ein sudo-User statt root, Swap als RAM-Airbag, Firewall — plus die Docker-Falle, die fast alle übersehen.
1 System aktualisieren & eigener Benutzer
Zuerst alle Pakete aktuell — dann weg vom root-Dauerbetrieb: ein eigener Benutzer mit sudo-Rechten.
max ein (ssh-copy-id max@…) und logge dich künftig als max ein — sudo nur, wenn nötig, nicht mehr dauerhaft als root.2 Swap: der RAM-Airbag für kleine Server
Günstige VPS starten oft mit 1–2 GB RAM. Läuft der Speicher voll, schlägt der Linux-OOM-Killer zu und beendet Prozesse ohne Vorwarnung — im Zweifel genau deinen n8n-Container. Eine Swap-Datei ist der Airbag: nicht schnell, aber sie verhindert den Absturz.
htop (Stufe 10) dauerhaft vollen RAM, ist das der Hinweis auf das nächstgrößere VPS-Paket — nicht auf mehr Swap.3 root- & Passwort-Login abschalten
Sobald der Key-Login als max klappt: Passwort- und root-Login aus.
PermitRootLogin no PasswordAuthentication no
sudo systemctl restart ssh. Ab jetzt kommt nur noch rein, wer den passenden Key hat.4 Firewall, fail2ban & Auto-Updates
Nur die Ports offen, die du brauchst — der Rest dicht.
ufw lässt nur SSH (22), HTTP (80) und HTTPS (443) durch. Dienste wie n8n oder Datenbanken bleiben intern — erreichbar nur über den Reverse Proxy (Stufe 7).
sudo systemctl status unattended-upgrades. So bleibt der Server auch ohne dein Zutun gepatcht.5 Achtung Falle: Docker geht an ufw vorbei
Der am häufigsten übersehene Punkt beim Self-Hosting: Docker schreibt eigene Firewall-Regeln und umgeht ufw. Ein Container, den du mit -p 5432:5432 startest, ist von außen erreichbar — obwohl ufw status nur 22/80/443 anzeigt.
Port-Mappings (-p / ports:) landen in Dockers eigener NAT-Kette — die greift vor den ufw-Regeln. ufw status lügt also nicht, es sieht Docker-Traffic schlicht nicht.
-p 127.0.0.1:8080:8080 — dann ist er nur vom Server selbst erreichbar.✓ Geschafft, wenn du …
Phase-1-Win: erste Website live
Dein erstes Erfolgserlebnis — eine statische Seite über die Server-IP, ausgeliefert von einem nginx-Container.
1 Eine Seite ausliefern
Wir nehmen einen winzigen nginx-Container (Docker kennst du aus Workshop 1) und legen ihm deine HTML-Dateien hinein.
http://203.0.113.10 (deine Server-IP) öffnen — deine Seite ist live! 🎉2 Was hier passiert
-v ~/site:/usr/share/nginx/html:ro— dein Ordner landet (nur lesbar) im Container, wo nginx ihn ausliefert.-p 80:80— Port 80 (HTTP) des Servers zeigt auf den Container. Darum erreichst du die Seite direkt über die IP.--restart unless-stopped— der Container kommt nach einem Reboot von selbst wieder.
http. Als Nächstes geben wir der Seite eine richtige Domain (Stufe 6) und HTTPS (Stufe 7).✓ Geschafft, wenn du …
Domain verbinden (DNS)
Aus der nackten IP wird eine echte Adresse — wie DNS funktioniert und wie du den A-Record setzt.
1 Wie DNS funktioniert
DNS ist das Telefonbuch des Internets: es übersetzt deine Domain in die IP-Adresse deines Servers.
Ein A-Record verknüpft die Domain mit der IPv4-Adresse deines Servers (AAAA = IPv6).
2 Den A-Record setzen
Im DNS-Bereich deines Domain-Anbieters legst du Einträge an, die auf deine Server-IP zeigen:
Typ Name Wert A @ 203.0.113.10 # die Hauptdomain A www 203.0.113.10 # www-Variante A n8n 203.0.113.10 # Subdomain für später (Stufe 8)
@ steht für die Domain selbst. Subdomains wie n8n legst du gleich mit an — die brauchen wir für den echten Dienst.| Typ | Name | Zeigt auf | TTL |
|---|---|---|---|
| A | @ | 203.0.113.10 | 3600 |
| A | www | 203.0.113.10 | 3600 |
| A | n8n | 203.0.113.10 | 3600 |
ping deinedomain.de prüfst du, ob schon deine IP zurückkommt.✓ Geschafft, wenn du …
Reverse Proxy & HTTPS
Eine zentrale Tür für alle Dienste — mit automatischem HTTPS. Wir nehmen den Nginx Proxy Manager.
1 Warum ein Reverse Proxy?
Niemand soll Ports tippen. Ein Reverse Proxy nimmt alle Anfragen auf 80/443 entgegen, kümmert sich um HTTPS und verteilt nach Domain an den richtigen Dienst.
n8n.deinedomain.de
n8n :5678
Eine Tür (Port 443) für alles. Pro Domain/Subdomain ein „Proxy-Host" → der passende Container. Das Zertifikat holt der Proxy automatisch.
2 Nginx Proxy Manager starten
NPM ist ein Reverse Proxy mit einfacher Web-Oberfläche — ideal zum Einstieg.
services: npm: image: jc21/nginx-proxy-manager:latest restart: unless-stopped ports: [ "80:80", "443:443", "81:81" ] # 81 = Admin-Web-UI volumes: [ "./data:/data", "./letsencrypt:/etc/letsencrypt" ]
docker compose up -d erreichst du die Admin-Oberfläche unter http://203.0.113.10:81 — das Standard-Login beim ersten Start sofort ändern!3 Proxy-Host + HTTPS anlegen
In der NPM-Oberfläche legst du pro Domain einen „Proxy Host" an — und holst das Zertifikat mit zwei Klicks.
- Domain Names:
deinedomain.de - Forward Hostname/Port: der Website-Container (z. B.
web:80) — im selben Docker-Netz wie NPM - SSL-Tab: „Request a new SSL Certificate" + „Force SSL" → Let's-Encrypt-Zertifikat, automatisch erneuert

web:80, dann im SSL-Tab ein Let's-Encrypt-Zertifikat anfordern und „Force SSL" aktivieren — die Seite ist danach unter https:// erreichbar.-p 80:80 mehr) — der Proxy hört auf 80/443 und leitet intern an den Container weiter.✓ Geschafft, wenn du …
Der echte Dienst: n8n
Phase 2: ein dauerhafter, nützlicher Dienst neben der Website — n8n als zweite Subdomain hinter denselben Proxy.
1 n8n als Container starten
Jetzt der echte Dienst. n8n startest du wie in Workshop 1 — mit einem Volume für die Workflows und im selben Docker-Netz wie der Proxy.
services: n8n: image: docker.n8n.io/n8nio/n8n restart: unless-stopped environment: N8N_HOST: n8n.deinedomain.de WEBHOOK_URL: https://n8n.deinedomain.de/ volumes: [ "n8n_data:/home/node/.n8n" ] networks: [ web ] volumes: { n8n_data: {} } networks: { web: { external: true } }
n8n_data hält deine Workflows. networks: web ist dasselbe Netz, in dem auch der Nginx Proxy Manager läuft (einmalig mit docker network create web anlegen) — so erreicht der Proxy n8n über den Namen n8n.-p nach außen! n8n bekommt keinen offenen Port — erreichbar wird es nur über den Proxy (Stufe 7). Genau so soll es sein: die Firewall bleibt zu.2 Hinter den Proxy hängen
Wie in Stufe 7 — nur eine zweite Subdomain. In NPM einen neuen Proxy-Host anlegen:
- Domain Names:
n8n.deinedomain.de(der A-Record dafür steht schon aus Stufe 6) - Forward Hostname/Port:
n8n:5678 - SSL: Let's-Encrypt-Zertifikat anfordern + „Force SSL"
Der n8n-Workflow-Editor — über die eigene Domain mit gültigem Zertifikat erreichbar.
https://n8n.deinedomain.de. Genau so betreibt FL Pro seine Dienste.✓ Geschafft, wenn du …
Updates & Backups
Den Dienst aktuell und sicher zurückrollbar halten — mit Watchtower für n8n und automatischen Backups als Sicherheitsnetz.
1 Updates: System + Container
Zwei Ebenen aktuell halten: das Betriebssystem und deine Container.
unattended-upgrades aus Stufe 4 automatisch erledigen.)2 Watchtower: n8n automatisch aktuell
n8n bringt fast im Wochentakt Updates — die von Hand zu ziehen, nervt. Watchtower übernimmt das automatisch.
services: watchtower: image: containrrr/watchtower restart: unless-stopped volumes: [ "/var/run/docker.sock:/var/run/docker.sock" ] command: --cleanup --schedule "0 0 4 * * *" # täglich 04:00 Uhr
--cleanup räumt alte Images weg.:next), Changelog im Blick (Major-Versionen können DB-Migrationen bringen). Watchtower braucht den Docker-Socket = privilegiert. Darum immer zusammen mit automatischem Backup (§3) — dann ist ein misslungenes Update kein Drama.3 Backups als Sicherheitsnetz
Gerade mit Auto-Updates gilt: ein nächtliches Backup, das du zurückspielen kannst. Und zwar weg vom Server — ein Backup auf derselben SSD stirbt mit dem Server.
.tgz. Restore = Volume aus dem tar wiederherstellen — so ist ein kaputtes Update jederzeit umkehrbar.Zwei Ebenen: der Snapshot beim Provider rettet den ganzen Server (1-Klick-Restore im hPanel), die tar-Backups retten einzelne Dienste — und wandern automatisiert auf ein zweites Gerät. Faustregel 3-2-1: 3 Kopien, 2 verschiedene Orte, 1 davon außer Haus.
| Snapshot | Erstellt | Typ | |
|---|---|---|---|
| vps-auto-2026-07-21 | 21.07.2026, 03:00 | Automatisch (wöchentlich) | Wiederherstellen |
| vor-n8n-update | 14.07.2026, 18:42 | Manuell | Wiederherstellen |
✓ Geschafft, wenn du …
Monitoring & gesund halten
Läuft alles? Ein Blick-Dashboard für die Verfügbarkeit plus die wichtigsten Server-Checks im Terminal.
1 Uptime-Kuma: dein Status-Dashboard
Uptime-Kuma prüft regelmäßig, ob deine Dienste erreichbar sind — mit hübschem Dashboard, Statusseite und Alerts (E-Mail/Telegram).
deinedomain.de und n8n.deinedomain.de an. Fällt etwas aus, bekommst du sofort eine Nachricht.2 Server-Gesundheit per CLI
Für den schnellen Blick brauchst du kein extra Tool — vier Befehle reichen.
3 Docker-Logs: die unterschätzte Plattenfalle
Klassiker nach ein paar Wochen Betrieb: df -h zeigt 100 %, obwohl du „nichts" installiert hast. Schuld sind meist Container-Logs — Docker schreibt sie standardmäßig unbegrenzt mit.
{
"log-driver": "json-file",
"log-opts": { "max-size": "10m", "max-file": "3" }
}
sudo systemctl restart docker; die Grenze gilt für neu erstellte Container (bestehende: docker compose up -d --force-recreate).4 Sicherheits-Recap & wie es weitergeht
Die sechs Dinge, die deinen Server sicher halten — als Merkliste fürs Gewissen:
-p nach außen — ufw greift dort nicht (Stufe 4).✓ Geschafft, wenn du …
Portainer: Docker im Browser
Alle Container, Logs und Stats auf einen Blick — ohne Terminal. Das Cockpit für deinen Server.
1 Was ist Portainer?
Portainer ist eine Weboberfläche für Docker: Du siehst alle laufenden Container, Images, Volumes und Netzwerke, kannst Dienste per Klick starten, stoppen und neu starten — und liest Logs direkt im Browser.
>_ Console eine Shell im Container.docker stats im Terminal.2 Installation
Portainer läuft selbst als Container. Wichtigster Teil: der Mount des Docker-Sockets — darüber steuert Portainer dein Docker.
3 Rundgang: die wichtigsten Ansichten
Drei Bereiche nutzt du im Alltag am häufigsten — alles erreichbar über die Seitenleiste nach dem Klick auf deine „local"-Umgebung.
>_ Console — und die Buttons Start/Stop/Restart.web-Netz aus Stufe 7/8 — und welche Container darin miteinander reden dürfen.docker ps, docker logs -f, docker stats) funktionieren immer — auch dann, wenn die Weboberfläche mal nicht erreichbar ist.4 Sicherheit: der Socket ist heilig
Wer /var/run/docker.sock kontrolliert, ist praktisch root auf dem Server. Portainer ist damit ein hochwertiges Ziel — behandle es entsprechend.
-p 9000:9000 wäre ein Fehler) — Zugriff nur über HTTPS via NPM.-p veröffentlichtes Portainer wäre sofort offen im Netz.✓ Geschafft, wenn du …
Server-Spickzettel
Die wichtigsten Befehle zum Mitnehmen. (Zählt nicht für den Fortschritt.)
▶ SSH & Dateien
ssh user@serverssh-keygen -t ed25519ssh-copy-id user@serverscp datei user@server:~~/.ssh/configssh name.nano datei🧩 Server & Docker
sudo apt update && upgradesudo ufw statussystemctl status <dienst>docker compose up -ddocker compose pulldf -h · htopfree -hdocker system df★ Gute Gewohnheiten
- SSH-Keys statt Passwort, kein root-Login, Firewall an.
- Dienste nur hinter dem Reverse Proxy — kein offener Port nach außen. Achtung: Docker umgeht ufw bei
-p-Mappings — im Zweifel an127.0.0.1binden. - Swap auf kleinen VPS als RAM-Airbag; Docker-Logs per
daemon.jsonbegrenzen. - Automatische Backups (mit Offsite-Kopie), bevor du Auto-Updates (Watchtower) anschaltest — und den Restore einmal testen.
- Secrets in eine
.env, nie im Klartext in geteilte Dateien.
Quiz
13 Fragen quer durch die Stufen. Ab 10 richtigen Antworten schaltest du dein Zertifikat frei.
Dein Zertifikat
Glückwunsch! Trage deinen Namen ein und drucke das Zertifikat (oder speichere als PDF).