0. Vorbereitung für den NVMe-Boot (WICHTIG!)
Bevor wir die Hardware zusammenbauen, müssen wir den Raspberry Pi für den Start von einer NVMe-SSD vorbereiten. Dieser Schritt ist entscheidend und muss als Erstes durchgeführt werden, da der Pi standardmäßig nicht von der PCIe-Schnittstelle bootet.
Logik zuerst: Vorbereiten, dann zusammenbauen!
Wir führen diese Schritte mit einem minimalen Setup durch: nur der Raspberry Pi 5 mit Strom und einer SD-Karte. Den NVMe-HAT und die SSD bauen wir erst ein, nachdem der Pi konfiguriert ist.
Konfigurationsschritte
- Mit SD-Karte booten: Starte deinen Raspberry Pi 5 mit einem aktuellen Raspberry Pi OS auf einer SD-Karte.
- PCIe-Port aktivieren: Öffne ein Terminal und bearbeite die Konfigurationsdatei mit
sudo nano /boot/firmware/config.txt. Füge die folgende Zeile ganz am Ende hinzu, um den PCIe-Port zu aktivieren:dtparam=pciex1
- Bootreihenfolge ändern: Jetzt bringen wir dem Pi bei, die NVMe-SSD als primäres Startlaufwerk zu verwenden. Führe
sudo rpi-eeprom-config --editaus und ändere die ZeileBOOT_ORDERwie folgt ab:BOOT_ORDER=0xf416
Diese Einstellung bedeutet: Versuche zuerst NVMe (
6), dann SD-Karte (1) und zuletzt USB (4). So hast du immer ein Fallback. - Änderungen übernehmen: Speichere die Dateien und fahre den Raspberry Pi mit
sudo shutdown nowherunter. Jetzt ist er bereit für die neue Hardware.
1. Hardware zusammenbauen & auswählen
Ein Home Server steht und fällt mit der richtigen Hardware. Der Raspberry Pi 5 bringt endlich PCIe mit - das verändert alles! Hier sind meine erprobten Hardware-Empfehlungen für 2025:
Warum NVMe-SSD?
Eine NVMe-SSD ist bis zu 20x schneller als eine SD-Karte! Das bedeutet: Schnellere Container-Starts, bessere Datei-Performance und höhere Langlebigkeit bei intensiver Nutzung.
🔗 Affiliate-Offenlegung & Transparenz
Ehrlichkeit first: Auf dieser Seite verwende ich sogenannte Affiliate-Links, diese sind mit einem gekennzeichnet, damit du diese direkt erkennen kannst.
Für dich entstehen keine zusätzlichen Kosten! Wenn du über einen solchen Link einkaufst, erhalte ich möglicherweise eine kleine Provision vom Anbieter. Der Preis für dich bleibt gleich.
Meine Empfehlungsrichtlinie: Ich empfehle nur Hardware und Tools, die ich selbst verwende oder getestet habe und von denen ich überzeugt bin. Authentizität über Profit - immer.
Rechtlicher Hinweis: Als Amazon-Partner verdiene ich an qualifizierten Verkäufen. WolfCoder.de ist Teilnehmer des Amazon-Partnerprogramms.
Raspberry Pi 5 Basis-Setup
Das Herzstück deines Home Servers - getestet in der Praxis
Raspberry Pi 5 8GB
Die 8GB-Version ist Pflicht für Docker-Container mit Datenbanken und Media-Servern. Deutlich mehr Leistung als der Pi 4.
✓ Vorteile
- +8GB RAM für anspruchsvolle Container
- +PCIe-Slot für NVMe-SSDs
- +Deutlich schneller als Pi 4
- +Ideal für Docker & Home Server
✗ Nachteile
- -Höherer Stromverbrauch
- -Höherer Preis
Offizielles Raspberry Pi 5 USB-C Netzteil 27W
Das offizielle 27W-Netzteil ist unverzichtbar. Billige Alternativen führen zu Leistungsdrosselung und instabilen Systemen.
✓ Vorteile
- +Garantiert ausreichend Leistung
- +Keine Unterspannungswarnungen
- +Hochwertige Verarbeitung
NVMe-SSD Setup
Bis zu 20x schneller als SD-Karten - der Gamechanger für Performance
Crucial P3 Plus 1TB NVMe SSD
Meine getestete Empfehlung für den Pi 5. Perfekte Balance aus Performance und Preis, ideal für Docker und Home Server.
✓ Vorteile
- +Perfekt für Docker & Datenbanken
- +Getestet mit Pi 5
- +Sehr gutes Preis-Leistungs-Verhältnis
- +Zuverlässig im 24/7 Betrieb
✗ Nachteile
- -Wird bei Dauerlast etwas warm
SanDisk Extreme 32GB microSD Card
Perfekt für die Ersteinrichtung und zum Testen. Später kannst du einfach auf die NVMe-SSD umziehen.
✓ Vorteile
- +Ideal für Ersteinrichtung
- +Schnell austauschbar
- +Kein HAT erforderlich
- +Backup-Option
✗ Nachteile
- -Langsamer als NVMe-SSD
- -Nicht für Dauerbetrieb
M.2 HAT & Gehäuse
Professionelle Lösung für NVMe-Integration mit optimaler Kühlung
GeeekPi Raspberry Pi 5 Aluminiumgehäuse mit M.2 Support
Meine Empfehlung: Super Gehäuse mit Platz für das M.2-HAT und aktiver Kühlung. Perfekt für 24/7 Betrieb.
✓ Vorteile
- +Alles-in-einem-Lösung
- +Sehr gute Kühlung
- +Hochwertige Verarbeitung
- +Einfache Montage
- +stylisch und modern
GeeekPi N04 M.2 NVMe SSD Shield
Perfekt für schnellen NVMe-Speicher am Pi 5. Wichtig: Nicht alle SSDs sind kompatibel - die Crucial P3 Plus läuft bei mir super stabil im 24/7 Betrieb.
✓ Vorteile
- +Einfache Installation
- +Alle Montageteile dabei
- +Kompatibel mit Pi 5 Gehäusen
- +Ersatzteile inklusive
- +Status-LEDs für Aktivität
✗ Nachteile
- -Besseres PCIe-Kabel empfohlen (ASIN: B0D78FMKNW)
- -Nicht alle SSDs kompatibel (WD oft problematisch)
- -Anleitung etwas knapp
💡 Meine Hardware-Philosophie
Qualität vor Preis: Ich empfehle nur Hardware, die ich selbst verwende oder ausgiebig getestet habe. Ein Home Server läuft 24/7 - da zahlt sich Qualität aus.
Praxis-orientiert: Alle Empfehlungen basieren auf realen Projekten, nicht auf Datenblättern. Wenn ich sage "funktioniert perfekt", dann läuft es bei mir seit Monaten stabil.
Langlebig & Wartungsarm: Ich setze auf Hardware, die sich in der Praxis bewährt hat. Lieber einmal richtig investieren als später Probleme beheben müssen.
Kompatibilitäts-Hinweise 2025
Vermeiden: WD Blue SN550/580, WD Black SN850 - diese SSDs haben bekannte Probleme mit dem Pi 5.
Bewährt: Samsung 990 EVO, Crucial P3 Plus, Kioxia Exceria G2 - diese laufen stabil.
Firmware: Stelle sicher, dass dein Pi 5 die neueste Firmware hat (Januar 2025 oder neuer).
2. OS Installation
Der Schlüssel zu einem schnellen Home Server: Das Betriebssystem direkt auf die NVMe-SSD! Seit 2024 ist das deutlich einfacher geworden. Hier die bewährte Methode:
🔧 Hardware vorbereiten
- NVMe-SSD in den USB-Adapter: Verbinde deine NVMe-SSD mit dem USB-Adapter und stecke ihn an deinen Computer.
- Raspberry Pi Imager herunterladen: Die neueste Version von der offiziellen Raspberry Pi Website.
- M.2 HAT montieren: Falls noch nicht geschehen, baue den M.2 HAT an deinen Pi 5.
💾 OS mit Raspberry Pi Imager flashen
- OS wählen: Raspberry Pi OS (other) → Raspberry Pi OS Lite (64-bit)
- Storage wählen: Deine NVMe-SSD (über USB-Adapter angeschlossen)
- Einstellungen (Zahnrad-Symbol):
- Hostname: z.B. "homeserver"
- SSH aktivieren (mit Passwort-Authentifizierung)
- Benutzername: z.B. "pi" + sicheres Passwort
- WLAN optional (Ethernet empfohlen)
- Locale: Deutschland, Zeitzone: Europe/Berlin
- Kopiervorgang starten: Klicke auf "Start". Alle Daten auf der NVMe-SSD werden überschrieben. Der Vorgang dauert einige Minuten.
- Abschließen: Wenn der Kopiervorgang beendet ist, schließe das Programm und entferne deine NVMe-SSD im USB-Adapter.
🚀 Ersten Boot vorbereiten
- NVMe-SSD einbauen: USB-Adapter entfernen, SSD in den M.2 HAT einbauen
- Verkabelung prüfen: FPC-Kabel richtig verbunden? HAT fest montiert?
- Boot-Priorität (falls nötig): Moderne HAT+ Module werden automatisch erkannt
🔌 Erster Start & Grundkonfiguration
Verbinde deinen Pi mit Ethernet (empfohlen) oder WLAN und starte ihn. Verbinde dich dann per SSH:
# SSH-Verbindung aufbauen ssh pi@homeserver.local # oder falls das nicht funktioniert: ssh pi@IP-ADRESSE # System vollständig aktualisieren sudo apt update && sudo apt full-upgrade -y # NVMe-Performance prüfen lsblk # Du solltest nvme0n1 sehen # NVMe-Speed testen (optional) sudo hdparm -t /dev/nvme0n1 # Erwarte 400-900 MB/s je nach SSD # System neustarten sudo reboot
Anpassen der Partitionsgröße
Nach dem Neustart wirst du mit lsblk sehen, dass deine Hauptpartition (z.B. nvme0n1p2) noch nicht die volle Größe der SSD nutzt. Dies lässt sich aber sehr einfach über sudo raspi-config korrigieren.
Führe sudo raspi-config aus und navigiere durch das Menü:
6 – Advanced Options A1 – Expand Filesystem
Bestätige die Auswahl mit OK, wähle dann Finish und bestätige den Neustart mit YES.
Nach dem Neustart wirst du sehen, dass der gesamte Speicherplatz deiner NVMe-SSD zur Verfügung steht.
3. Docker & Docker Compose Installation
Docker ist das Herzstück deines Home Servers. Es isoliert Anwendungen in sauberen "Containern" und macht Updates, Backups und Wartung zum Kinderspiel.
# Docker mit dem offiziellen Installations-Skript curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh # Benutzer zur Docker-Gruppe hinzufügen (WICHTIG!) sudo usermod -aG docker $USER # Docker Compose Plugin installieren sudo apt-get install docker-compose-plugin -y # Cleanup rm get-docker.sh # WICHTIG: Jetzt ausloggen und wieder einloggen! logout
Neuanmeldung erforderlich!
Nach dem `usermod`-Befehl musst du dich komplett ab- und wieder anmelden, damit die Docker-Gruppe aktiv wird.
# Docker-Funktionalität prüfen
docker --version
docker compose version
# Test-Container ausführen
docker run hello-world
# Verzeichnisstruktur anlegen
mkdir -p ~/docker/{portainer,jellyfin,nextcloud,duplicati}
mkdir -p ~/docker/data/{media,downloads,documents}4. Portainer: Deine Docker-Zentrale
Portainer ist deine grafische Schaltzentrale für Docker. Statt kryptischer Kommandozeilen-Befehle verwaltest du Container, Networks und Volumes bequem im Browser.
# Zum Portainer-Verzeichnis wechseln
cd ~/docker/portainer
# Docker Compose Datei erstellen
cat > docker-compose.yml << EOF
version: '3.8'
services:
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
restart: unless-stopped
ports:
- "9000:9000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
environment:
- TZ=Europe/Berlin
volumes:
portainer_data:
EOF
# Portainer starten
docker compose up -dPortainer einrichten
1. Browser öffnen: http://IP-DEINES-PI:9000
2. Admin-Account erstellen mit sicherem Passwort
3. "Docker" (lokale Docker-Installation) wählen
4. Environment-Name: z.B. "HomeServer-Pi5"
5. Essential Services & Container
Jetzt kommt der spannende Teil: Wir installieren die wichtigsten Services für deinen Home Server. Alle Services sind produktiv getestet und laufen stabil auf dem Pi 5.
🎬 Jellyfin Media Server
cd ~/docker/jellyfin
cat > docker-compose.yml << EOF
version: '3'
services:
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
restart: unless-stopped
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Berlin
volumes:
- ./config:/config
- ./cache:/cache
- ~/docker/data/media:/media:ro
ports:
- 8096:8096
devices:
- /dev/dri:/dev/dri
group_add:
- "105"
EOF
# Media-Verzeichnisse erstellen
mkdir -p ~/docker/data/media/{movies,tv,music}
# Jellyfin starten
docker compose up -dJellyfin Ersteinrichtung
1. Öffne im Browser: http://IP-DEINES-PI:8096
2. Solltest du nach einem Server gefragt werden, nimm dieselbe IP:8096. Dann einfach nochmal im neuen Tab http://IP-DEINES-PI:8096 aufrufen
3. Wähle deine Sprache (Deutsch) und erstelle einen Admin-Account
4. Medien-Bibliotheken einrichten:
- Filme:
/media/movies - Serien:
/media/tv - Musik:
/media/music
5. Hardware-Beschleunigung aktivieren:
- Dashboard → Wiedergabe
- Hardware-Beschleunigung: "Video4Linux2 (V4L2)"
- VA-API-Gerät: "/dev/dri/renderD128"
6. Empfohlene Einstellungen:
- Automatische Konvertierung nur bei Bedarf
- Metadaten-Downloads aktivieren
- Remote-Zugriff nur mit HTTPS (später einrichten)
☁️ Nextcloud - Deine eigene Cloud
cd ~/docker/nextcloud
cat > docker-compose.yml << EOF
version: '3'
services:
nextcloud:
image: nextcloud:latest
container_name: nextcloud
restart: unless-stopped
ports:
- 8080:80
volumes:
- ./data:/var/www/html
- ~/docker/data/documents:/var/www/html/data
environment:
- SQLITE_DATABASE=nextcloud
- NEXTCLOUD_ADMIN_USER=admin
- NEXTCLOUD_ADMIN_PASSWORD=sicheres_passwort_hier
EOF
docker compose up -dNextcloud Ersteinrichtung
1. Öffne im Browser: http://IP-DEINES-PI:8080
2. Wenn du die Fehlermeldung "Zugriff über eine nicht vertrauenswürdige Domain" siehst:
- Verbinde dich per SSH mit deinem Pi
- Öffne die Nextcloud-Config:
sudo nano ~/docker/nextcloud/data/config/config.php - Füge deine IP oder Domain zur
trusted_domainsListe hinzu:
'trusted_domains' => array( 0 => 'localhost', 1 => 'IP-DEINES-PI', // Deine Pi IP-Adresse 2 => 'deine-domain.de' // Optional: Deine Domain ),
STRG + O, bestätige mit EnterSTRG + X3. Melde dich mit den vordefinierten Admin-Zugangsdaten an:
- Benutzername:
admin(aus docker-compose.yml) - Passwort: Das in docker-compose.yml gesetzte
NEXTCLOUD_ADMIN_PASSWORD
4. Empfohlene Einstellungen nach dem Login:
- Einstellungen → Verwaltung → Grundeinstellungen:
- Zeitzone: Europe/Berlin
- Hintergrundaufgaben: Cron (empfohlen)
- Standard-Telefon-Region: DE
5. Sicherheitseinstellungen:
- Einstellungen → Verwaltung → Sicherheit
- Zwei-Faktor-Authentifizierung aktivieren
- Brute-Force-Schutz aktivieren
- Sichere HTTP-Header aktivieren
6. Empfohlene Apps installieren:
- Kalender & Kontakte für Synchronisation
- Collabora Online für Office-Dokumente
- Talk für Video-Chats
Wichtig: Ändere nach der Ersteinrichtung die Standard-Port-Weiterleitung (8080) auf einen anderen Port oder richte einen Reverse-Proxy mit SSL ein.
💾 Duplicati Backup System
cd ~/docker/duplicati
cat > docker-compose.yml << EOF
version: "2.1"
services:
duplicati:
image: lscr.io/linuxserver/duplicati:latest
container_name: duplicati
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Berlin
- SETTINGS_ENCRYPTION_KEY=dein_sicherer_schluessel_hier
- DUPLICATI__WEBSERVICE_PASSWORD=dein_login_passwort_hier
volumes:
- ./config:/config
- ~/backups:/backups
- ~/docker:/source/docker:ro
ports:
- 8200:8200
restart: unless-stopped
EOF
# Backup-Verzeichnis erstellen
mkdir -p ~/backups
docker compose up -dDuplicati Ersteinrichtung
1. Konfiguriere die Zugangsdaten in der docker-compose.yml:
- Setze
SETTINGS_ENCRYPTION_KEYauf einen sicheren Schlüssel - Setze
DUPLICATI__WEBSERVICE_PASSWORDauf dein gewünschtes Login-Passwort - WICHTIG: Keine Leerzeichen nach den = Zeichen!
2. Starte Duplicati neu: docker compose up -d
3. Öffne im Browser: http://IP-DEINES-PI:8200
4. Melde dich mit deinem konfigurierten Passwort an
5. Erstelle ein neues Backup:
- Klicke auf "Neues Backup hinzufügen"
- Wähle "Backup konfigurieren"
- Vergib einen Namen für das Backup
- Wähle als Verschlüsselung "AES-256" und setze ein sicheres Passwort
- Wähle als Speicherort z.B. einen lokalen Ordner oder Cloud-Speicher
- Wähle die zu sichernden Ordner aus (z.B. /source/docker für deine Container-Daten)
- Lege den Backup-Zeitplan fest (z.B. täglich um 2 Uhr nachts)
Services sind bereit!
• Portainer: http://IP:9000 - Docker-Management
• Jellyfin: http://IP:8096 - Media Server
• Nextcloud: http://IP:8080 - Cloud Storage
• Duplicati: http://IP:8200 - Backup System
6. Sicherheit & Updates
Ein Home Server ohne Sicherheit ist wie ein offenes Scheunentor. Diese Maßnahmen schützen deinen Server vor den häufigsten Bedrohungen:
🔥 UFW Firewall einrichten
# UFW Firewall installieren und konfigurieren sudo apt install ufw -y # Standard-Regeln: Eingehend blockieren, Ausgehend erlauben sudo ufw default deny incoming sudo ufw default allow outgoing # SSH erlauben (WICHTIG: Vor dem Aktivieren!) sudo ufw allow ssh # Docker-Services erlauben sudo ufw allow 9000 # Portainer sudo ufw allow 8096 # Jellyfin sudo ufw allow 8080 # Nextcloud sudo ufw allow 8200 # Duplicati # Firewall aktivieren sudo ufw enable # Status prüfen sudo ufw status verbose
🔒 Automatische Updates
# Unattended-upgrades für Sicherheitsupdates
sudo apt install unattended-upgrades -y
# Konfiguration aktivieren
sudo dpkg-reconfigure -plow unattended-upgrades
# Update-Skript für Docker-Container erstellen
cat > ~/update-containers.sh << 'EOF'
#!/bin/bash
echo "Updating all Docker containers..."
cd ~/docker
for dir in */; do
if [ -f "$dir/docker-compose.yml" ]; then
echo "Updating $dir"
cd "$dir"
docker compose pull
docker compose up -d
cd ..
fi
done
echo "Cleaning up old images..."
docker image prune -f
EOF
chmod +x ~/update-containers.shAutomatische Updates erklärt
Was ist unattended-upgrades?
Das Ubuntu unattended-upgrades Paket installiert automatisch wichtige Sicherheitsupdates ohne manuelle Intervention. Es ist seit Ubuntu 16.04 standardmäßig aktiviert und wird von Canonical empfohlen.
Warum automatische Updates?
- Sicherheit: Kritische Sicherheitslücken werden automatisch geschlossen
- Zeitersparnis: Keine manuellen Update-Checks nötig
- Stabilität: Nur Sicherheitsupdates, keine Feature-Updates
- Empfehlung: Canonical aktiviert es standardmäßig auf allen Ubuntu-Systemen
Was wird aktualisiert?
- Nur Sicherheitsupdates aus den offiziellen Ubuntu-Repositories
- Kernel-Updates nur bei kritischen Sicherheitslücken
- Keine Feature-Updates oder Major-Version-Upgrades
- Automatische Bereinigung alter Kernel-Versionen
Docker-Container Updates:
- Das Update-Skript lädt neue Container-Images herunter
- Startet Container mit den neuen Images neu
- Bereinigt alte, ungenutzte Images automatisch
- Empfohlen: Monatlich oder bei wichtigen Sicherheitsupdates ausführen
Wichtige Sicherheitshinweise zu Updates
Automatische Neustarts:
- Standardmäßig werden keine automatischen Neustarts durchgeführt
- Bei Kernel-Updates kann ein manueller Neustart nötig sein
- Prüfe regelmäßig mit
sudo checkrestartwelche Services neu gestartet werden müssen
Risiken und Best Practices:
- Testumgebung: Teste Updates immer zuerst auf einem separaten System
- Backups: Sichere wichtige Daten vor Updates
- Monitoring: Überwache das System nach Updates auf Stabilität
- Rollback-Plan: Halte alte Kernel-Versionen für Notfälle bereit
- Zeitplan: Führe Updates zu Zeiten geringer Nutzung durch
Update-Zeitplan konfigurieren:
- Updates laufen standardmäßig täglich mit zufälliger Verzögerung (0-30 Minuten)
- Konfiguration in
/etc/apt/apt.conf.d/20auto-upgrades - Docker-Container-Updates: Manuell oder per Cron-Job (z.B. sonntags um 2 Uhr)
Monitoring und Logs:
- Update-Logs:
/var/log/unattended-upgrades/ - Status prüfen:
sudo unattended-upgrade --dry-run --debug - E-Mail-Benachrichtigungen konfigurierbar
🎉 Herzlichen Glückwunsch!
Du hast erfolgreich einen vollwertigen Home Server mit deinem Raspberry Pi 5 aufgebaut! Von NVMe-Performance über Docker-Container bis hin zur Sicherheit - dein Server ist bereit für den produktiven Einsatz.
Was du erreicht hast:
- ⚡ Performante NVMe-SSD Installation mit 10-50x Geschwindigkeitsboost
- 🐳 Docker-Container-Management mit Portainer GUI
- 🎬 Media Server mit Jellyfin für Filme und Musik
- ☁️ Eigene Cloud mit Nextcloud für Dateien und Synchronisation
- 💾 Automatisches Backup-System mit Duplicati
- 🔒 Gehärtete Sicherheit mit UFW Firewall und Updates
Nächste Schritte:
- Reverse Proxy mit Nginx Proxy Manager für HTTPS
- VPN-Server mit WireGuard für sicheren Remote-Zugriff
- Monitoring mit Grafana und Prometheus
- Home Assistant für Smart Home Integration