Übersicht: Server-Software einfach erklärt¶
Dokumenttyp: Developer Playbook
Status: Draft v0.2
Stand: 2026-06-30
Prinzip: Einfache Übersicht mit Praxisbeispiel aus Immohai
Ziel¶
Diese Seite erklärt die wichtigsten Begriffe rund um die Server-Software.
Sie ist bewusst einfach geschrieben und richtet sich an Personen, die noch nicht genau wissen, was Docker, Docker Compose, Nginx, HTTPS, Certbot, Monitoring oder Logging bedeutet.
Am Ende soll klar sein:
- welche Software auf dem Server gebraucht wird,
- welche Aufgabe jede Komponente hat,
- wie die Komponenten zusammenarbeiten,
- warum Docker nicht dasselbe ist wie Nginx,
- warum HTTPS nicht dasselbe ist wie Certbot,
- warum Monitoring und Logging unterschiedliche Dinge sind,
- welche Datei in diesem Kapitel welches Thema erklärt.
Das Gesamtbild¶
Ein Server allein reicht noch nicht aus.
Auf dem Server muss Software installiert und eingerichtet werden, damit eine Webapp laufen und öffentlich erreichbar werden kann.
Vereinfacht sieht das so aus:
Ubuntu Server
↓
Docker
↓
Docker Compose
↓
Container für App und Dokumentation
↓
Nginx Reverse Proxy
↓
HTTPS mit Certbot
↓
Monitoring und Logging
Oder als Ablauf:
Docker startet Dienste.
Docker Compose verwaltet mehrere Dienste.
Nginx macht Dienste öffentlich erreichbar.
Certbot richtet HTTPS ein.
Monitoring prüft, ob alles läuft.
Logging hilft, Fehler zu verstehen.
Ein einfaches Bild¶
Man kann sich den Server wie ein Gebäude vorstellen.
Ubuntu Server = Gebäude
Docker = Maschinenräume
Container = einzelne Maschinen
Docker Compose = Betriebsplan für mehrere Maschinen
Nginx = Empfang am Haupteingang
HTTPS = verschlossene sichere Verbindung
Certbot = Dienst, der den Sicherheitsschlüssel besorgt
Monitoring = Kontrollrunde
Logging = Protokollbuch
Wenn jemand eine Website aufruft, passiert ungefähr Folgendes:
Browser
↓
Nginx am Eingang
↓
richtiger lokaler Docker-Container
↓
App oder Dokumentation
Wenn HTTPS aktiv ist, ist die Verbindung verschlüsselt.
Wenn etwas nicht funktioniert, helfen Monitoring und Logs bei der Fehlersuche.
Grundbegriffe¶
Server-Software¶
Server-Software ist die Software, die auf einem Server installiert wird, damit der Server Dienste ausführen kann.
In diesem Playbook gehören dazu vor allem:
- Docker
- Docker Compose
- Nginx
- Certbot
- Monitoring-Werkzeuge
- Logging-Mechanismen
Diese Software bildet die technische Grundlage für Webapps und Dokumentationen.
Docker¶
Docker ist eine Software, mit der Anwendungen in Containern ausgeführt werden.
Ein Container ist eine isolierte Umgebung für einen Dienst.
Beispiele:
immohai-web
immohai-docs
developer-playbook-docs
Docker hilft dabei, Dienste reproduzierbar zu starten.
Das bedeutet:
Der Dienst läuft nicht irgendwie zufällig auf dem Server,
sondern nach einer klaren technischen Beschreibung.
Docker ist besonders nützlich für:
- Webapps
- Dokumentationen
- Datenbanken
- Backend-Dienste
- Testumgebungen
Container¶
Ein Container ist ein laufender Dienst in Docker.
Beispiel:
immohai-web
Dieser Container kann zum Beispiel eine statische Website ausliefern.
Ein anderer Container kann die Dokumentation ausliefern:
immohai-docs
Container sind voneinander getrennt. Dadurch bleibt das System übersichtlicher.
Image¶
Ein Image ist die Vorlage für einen Container.
Beispiel:
nginx:latest
Daraus kann ein Container gestartet werden.
Einfach gesagt:
Image = Bauplan
Container = laufendes Exemplar
Beispiele für Images:
nginx:latest
squidfunk/mkdocs-material:latest
postgres:16
python:3.12
Docker Compose¶
Docker Compose verwaltet mehrere Docker-Container gemeinsam.
Die Konfiguration liegt in einer Datei:
docker-compose.yml
Darin steht zum Beispiel:
- welche Container gestartet werden,
- welche Images verwendet werden,
- welche Ports genutzt werden,
- welche Ordner eingebunden werden,
- wie Container heißen,
- ob Container automatisch neu starten.
Ohne Docker Compose müsste man jeden Container einzeln mit langen Befehlen starten.
Mit Docker Compose reicht oft:
docker compose up -d
docker-compose.yml¶
Die Datei docker-compose.yml ist der Betriebsplan eines Projekts.
Beispiel:
services:
web:
image: nginx:latest
container_name: immohai-web
ports:
- "127.0.0.1:8200:80"
Das bedeutet:
Starte einen Dienst namens web.
Verwende das Image nginx.
Nenne den Container immohai-web.
Mache ihn lokal auf 127.0.0.1:8200 erreichbar.
Port¶
Ein Port ist ein technischer Eingang zu einem Dienst.
Beispiele:
| Port | Bedeutung |
|---|---|
22 |
SSH |
80 |
HTTP |
443 |
HTTPS |
8100 |
Developer Playbook lokal |
8200 |
Immohai App lokal |
8201 |
Immohai Doku lokal |
Ein Server kann viele Dienste haben. Ports helfen dabei, diese Dienste zu unterscheiden.
Lokaler Port¶
Ein lokaler Port ist nur auf dem Server selbst erreichbar.
Beispiel:
127.0.0.1:8200
127.0.0.1 bedeutet:
nur dieser Server selbst
Das ist wichtig, weil Docker-Container nicht direkt öffentlich erreichbar sein sollen.
Öffentlich erreichbar ist stattdessen Nginx.
Nginx¶
Nginx ist ein Webserver.
In diesem Playbook wird Nginx hauptsächlich als Reverse Proxy verwendet.
Nginx nimmt öffentliche Anfragen entgegen:
Port 80 = HTTP
Port 443 = HTTPS
Dann leitet Nginx intern an den passenden lokalen Dienst weiter.
Beispiel:
immohai.ohaisoft.com → 127.0.0.1:8200
Nginx ist also der zentrale Eingang für Webanfragen.
Reverse Proxy¶
Ein Reverse Proxy ist ein Vermittler zwischen Internet und internen Diensten.
Der Browser spricht nicht direkt mit dem Docker-Container.
Der Browser spricht mit Nginx.
Nginx entscheidet dann:
Welche Domain wurde aufgerufen?
Welcher lokale Dienst gehört dazu?
An welchen Port muss ich weiterleiten?
Beispiel:
https://docs.immohai.ohaisoft.com
↓
Nginx
↓
http://127.0.0.1:8201
↓
immohai-docs
HTTP¶
HTTP ist das normale Web-Protokoll.
Beispiel:
http://immohai.ohaisoft.com
HTTP ist unverschlüsselt.
Für öffentliche Websites sollte HTTP nur noch verwendet werden, um auf HTTPS weiterzuleiten.
HTTPS¶
HTTPS ist die verschlüsselte Variante von HTTP.
Beispiel:
https://immohai.ohaisoft.com
HTTPS schützt die Verbindung zwischen Browser und Server.
Das ist wichtig für:
- Sicherheit
- Vertrauen
- moderne Browser
- Formulare
- Logins
- API-Anfragen
Ohne HTTPS zeigen Browser häufig Warnungen an.
Zertifikat¶
Ein HTTPS-Zertifikat bestätigt, dass eine Domain gültig abgesichert ist.
Der Browser prüft dieses Zertifikat.
Wenn es passt, wird die Verbindung als sicher angezeigt.
Wichtig:
Zertifikate und private Schlüssel dürfen nicht in Git gespeichert oder öffentlich dokumentiert werden.
Let's Encrypt¶
Let's Encrypt ist eine kostenlose Zertifizierungsstelle.
Sie stellt HTTPS-Zertifikate aus.
Für private und kleinere professionelle Projekte ist Let's Encrypt meistens eine sehr gute Lösung.
Certbot¶
Certbot ist ein Programm auf dem Server.
Certbot richtet HTTPS-Zertifikate von Let's Encrypt ein.
Certbot kann:
- Zertifikate beantragen.
- Nginx automatisch anpassen.
- HTTP auf HTTPS weiterleiten.
- Zertifikate automatisch erneuern.
Einfach gesagt:
HTTPS ist die sichere Verbindung.
Let's Encrypt stellt das Zertifikat aus.
Certbot richtet das Zertifikat auf dem Server ein.
Monitoring¶
Monitoring bedeutet: prüfen, ob alles läuft.
Monitoring beantwortet Fragen wie:
Ist die Website erreichbar?
Laufen die Container?
Läuft Nginx?
Funktioniert HTTPS?
Ist genug Speicherplatz frei?
Monitoring sagt also:
Etwas funktioniert oder funktioniert nicht.
Beispiele:
curl -I https://immohai.ohaisoft.com
docker compose ps
sudo nginx -t
df -h
Logging¶
Logging bedeutet: Ereignisse und Fehler werden protokolliert.
Logs beantworten Fragen wie:
Was ist passiert?
Wann ist es passiert?
Welche Fehlermeldung gab es?
Welcher Dienst war betroffen?
Logging hilft zu verstehen, warum etwas nicht funktioniert.
Beispiele:
docker compose logs --tail=100
sudo tail -n 100 /var/log/nginx/error.log
sudo journalctl -u nginx --no-pager -n 100
Unterschied zwischen Monitoring und Logging¶
Monitoring und Logging sind nicht dasselbe.
| Begriff | Frage | Beispiel |
|---|---|---|
| Monitoring | Läuft es? | Website antwortet nicht |
| Logging | Warum läuft es nicht? | Container ist abgestürzt |
Einfach gesagt:
Monitoring erkennt das Problem.
Logging erklärt das Problem.
Wie alles zusammenspielt¶
Beispiel: Developer Playbook¶
Docker Compose startet:
developer-playbook-docs
Der Container läuft lokal auf:
127.0.0.1:8100
Nginx leitet weiter:
playbook.ohaisoft.com → 127.0.0.1:8100
Certbot stellt HTTPS bereit:
https://playbook.ohaisoft.com
Beispiel: Immohai App¶
Docker Compose startet:
immohai-web
Der Container läuft lokal auf:
127.0.0.1:8200
Nginx leitet weiter:
immohai.ohaisoft.com → 127.0.0.1:8200
Certbot stellt HTTPS bereit:
https://immohai.ohaisoft.com
Beispiel: Immohai Dokumentation¶
Docker Compose startet:
immohai-docs
Der Container läuft lokal auf:
127.0.0.1:8201
Nginx leitet weiter:
docs.immohai.ohaisoft.com → 127.0.0.1:8201
Certbot stellt HTTPS bereit:
https://docs.immohai.ohaisoft.com
Aktueller Stand im Praxisbeispiel¶
| Dienst | Öffentliche URL | Lokaler Port | Container |
|---|---|---|---|
| Developer Playbook | https://playbook.ohaisoft.com |
127.0.0.1:8100 |
developer-playbook-docs |
| Immohai App | https://immohai.ohaisoft.com |
127.0.0.1:8200 |
immohai-web |
| Immohai Dokumentation | https://docs.immohai.ohaisoft.com |
127.0.0.1:8201 |
immohai-docs |
Typische Reihenfolge¶
Die Server-Software wird normalerweise in dieser Reihenfolge eingerichtet:
1. Docker installieren
2. Docker Compose verwenden
3. Container lokal starten
4. lokale Ports testen
5. Nginx installieren
6. Nginx als Reverse Proxy einrichten
7. HTTP öffentlich testen
8. Certbot installieren
9. HTTPS aktivieren
10. Monitoring prüfen
11. Logs bei Fehlern auswerten
Welche Datei erklärt was?¶
| Datei | Thema |
|---|---|
00-uebersicht.md |
einfache Begriffserklärung und Gesamtbild |
01-docker.md |
Docker, Container, Images, Docker-Grundlagen |
02-docker-compose.md |
mehrere Container mit docker-compose.yml verwalten |
03-nginx.md |
Nginx als Webserver und Reverse Proxy |
04-ssl.md |
HTTPS, Let's Encrypt und Certbot |
05-monitoring.md |
Zustände und Erreichbarkeit prüfen |
06-logging.md |
Logs lesen und Fehler analysieren |
Häufige Missverständnisse¶
Ist Docker die Website?¶
Nein.
Docker startet den Container, in dem die Website oder App läuft.
Die Website selbst ist der Inhalt oder die Anwendung im Container.
Ist Docker Compose dasselbe wie Docker?¶
Nein.
Docker ist die Container-Technik.
Docker Compose ist ein Werkzeug, um mehrere Docker-Dienste gemeinsam zu verwalten.
Ist Nginx die App?¶
Nein.
Nginx ist der Vermittler.
Die App läuft dahinter in einem Docker-Container.
Ist HTTPS dasselbe wie Certbot?¶
Nein.
HTTPS ist die verschlüsselte Verbindung.
Certbot ist das Werkzeug, das die nötigen Zertifikate einrichtet.
Ist Nginx dasselbe wie Certbot?¶
Nein.
Nginx nimmt Webanfragen entgegen und leitet sie weiter.
Certbot richtet Zertifikate für HTTPS ein und kann Nginx dabei automatisch anpassen.
Muss jeder Docker-Container öffentlich erreichbar sein?¶
Nein.
Im empfohlenen Setup sind Docker-Container nur lokal erreichbar.
Öffentlich erreichbar ist Nginx.
Reicht es, wenn Docker läuft?¶
Nein.
Für eine öffentlich erreichbare Website müssen mehrere Ebenen funktionieren:
Docker
Nginx
DNS
HTTPS
Firewall
Reicht es, wenn die öffentliche URL funktioniert?¶
Nicht ganz.
Auch wenn die URL funktioniert, sollte man prüfen:
- laufen die Container stabil?
- funktioniert Certbot Renewal?
- ist genug Speicherplatz frei?
- gibt es Fehler in den Logs?
Merksatz¶
Docker startet die Dienste.
Docker Compose organisiert mehrere Dienste.
Nginx macht die Dienste öffentlich erreichbar.
HTTPS schützt die Verbindung.
Certbot richtet HTTPS ein und erneuert Zertifikate.
Monitoring zeigt, ob alles läuft.
Logging zeigt, warum etwas nicht läuft.