Schritt 4: Das interne Netz (VLAN)
Ein Server-Cluster ist wie ein Team im Büro. Manchmal muss man sich Dinge zurufen können, ohne dass es die Kunden (das Internet) mitbekommen. Wir wollen eine „Privatleitung“ zwischen Server01 und Server02. Das ist sicherer und schneller für unsere Backups.
Dafür nutzen wir ein VLAN (Virtual LAN). Stell es dir vor wie eine zweite, unsichtbare Netzwerkkarte.
Server01 bekommt die interne IP:
10.0.0.1Server02 bekommt die interne IP:
10.0.0.2
Ubuntu nutzt dafür Netplan. Die Konfiguration ist mächtig, aber pingelig bei Leerzeichen (YAML-Format).
Öffne die Konfiguration:
sudo nano /etc/netplan/00-installer-config.yaml
Füge den VLAN-Abschnitt hinzu. Achtung: Dein physisches Interface (hier eth0) kann auch ens18 oder anders heißen. Prüfe das vorher mit ip a.
network:
version: 2
ethernets:
eth0: # Dein physisches Interface
dhcp4: true
vlans:
vlan10:
id: 10
link: eth0
addresses: [10.0.0.1/24] # WICHTIG: Auf Server02 hier .2 eintragen!
Speichern (STRG+O) und schließen (STRG+X). Dann aktivieren:
sudo netplan apply
Testen wir die Leitung! Tippe auf Server01: ping 10.0.0.2. Wenn es antwortet, steht die Verbindung!
Schritt 5: Docker Installation
Jetzt installieren wir den Motor. In unserer modernen Architektur installieren wir Dienste nicht mehr „fest“ auf dem Server, sondern in Containern. Das hält das System sauber.
Wir nutzen die offizielle Docker-Quelle, da die Ubuntu-Standardquellen oft veraltet sind.
1. Vorbereitung & Schlüsselbund:
sudo apt install -y ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg
2. Quelle hinzufügen:
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
3. Installation:
sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Nach diesem Block sollte der Befehl docker ps funktionieren.
Schritt 5.5: Docker Tuning (daemon.json)
Docker läuft, aber die Standard-Einstellungen sind für professionelle Setups nicht optimal. Wir müssen Docker beibringen, wie es sich im Netzwerk verhält und wie es Protokolle schreibt.
Erstelle oder bearbeite die Konfigurationsdatei:
sudo nano /etc/docker/daemon.json
Füge folgenden Inhalt ein:
{
"ipv6": true,
"fixed-cidr-v6": "fd00:1:be:a:7000::/80",
"default-address-pools": [
{
"base": "172.25.0.0/14",
"size": 25
},
{
"base": "fd00:1:be:a:7002::/80",
"size": 123
}
],
"log-driver": "json-file",
"log-opts": {
"max-size": "29m",
"max-file": "10"
}
}
- Netzwerk-Hygiene: Standardmäßig vergibt Docker Netzwerke oft wild. Mit
172.25.0.0/14reservieren wir einen riesigen Bereich, der uns sauber in /25-Subnetze aufgeteilt wird. Das reicht für über 2000 Docker-Netzwerke! - Konfliktvermeidung: Tools wie Mailcow nutzen oft fest das Netz
172.22.1.0/24. Indem wir Docker zwingen, bei 172.25.x.x zu bleiben, verhindern wir IP-Adresskonflikte, die später schwer zu debuggen sind. - Festplatten-Schutz: Container „reden“ viel. Ohne Begrenzung (
log-opts) können Log-Dateien riesig werden und den Server lahmlegen. Wir begrenzen hier auf 10 Dateien à 29MB.
Damit die Änderungen wirksam werden, starten wir Docker neu:
sudo systemctl restart docker
Schritt 6: Ordnung ist das halbe Leben
Ein typischer Anfängerfehler: docker-compose.yml Dateien liegen wild verstreut im Home-Verzeichnis (/home/user/projekt1, /home/user/test). Das wird chaotisch.
Wir etablieren einen Industriestandard: Alle Container-Daten gehören nach /opt/containers. Das macht Backups kinderleicht – wir müssen nur diesen einen Ordner sichern.
# Verzeichnis erstellen sudo mkdir -p /opt/containers # Rechte an deinen User geben (damit du kein sudo für Dateioperationen brauchst) sudo chown -R $USER:$USER /opt/containers
Fazit & Ausblick
Das Fundament steht! Wir haben Updates, Sicherheit, ein internes Netz und eine sauber konfigurierte Docker-Engine mit Log-Rotation und festen IP-Bereichen. Außerdem haben wir eine saubere Ordnerstruktur.
Damit ist die „trockene“ Arbeit erledigt. Im nächsten Teil installieren wir unseren ersten Container: Traefik, der dafür sorgen wird, dass alle unsere Dienste sicher über HTTPS erreichbar sind.

Sei der Erste der einen Kommentar abgibt