Zum Inhalt

Ü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:

  1. Zertifikate beantragen.
  2. Nginx automatisch anpassen.
  3. HTTP auf HTTPS weiterleiten.
  4. 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.