JHJonas Hagenlocher

Mein NAS-System mit TrueNAS, Docker & GitLab Webhooks

Cover

Motivation: Warum ein eigenes NAS?

SATA-Adapter für NAS

Ich hatte noch zwei 4 TB WD-Festplatten aus meiner alten MyCloud EX2 übrig. Die Original-Software war sehr eingeschränkt (kein WebDAV, kaum Erweiterbarkeit) und das Gerät war zudem ziemlich laut. Auch der Stromverbrauch lag mit ca. 25 W dauerhaft recht hoch.

Deshalb habe ich ein eigenes Setup gebaut, in dem nicht nur meine Daten flexibler verwaltet werden, sondern auch mein Blog und weitere Dienste laufen. Als Basis dient ein Dell Wyse 5070 Thin Client mit aktuell 4 GB RAM (Upgrade auf 16 GB geplant) und einer 256 GB SSD von Intenso.

Überblick

In diesem Beitrag beschreibe ich den Aufbau meines eigenen NAS-Systems auf Basis eines stromsparenden Mini-PCs, wie ich TrueNAS verwende und Docker-Container für verschiedene Services betreibe. Außerdem erkläre ich, wie mein Blog automatisch aktualisiert wird, wenn Änderungen im GitLab-Repository stattfinden. Zusätzlich gehe ich auf Themen wie AdGuard Home, die Wahl der richtigen Festplatten für NAS, Home Assistant und die Datenmigration von ext4 auf ZFS ein.


Hardware (Beispiel: Mini-PC)

Beispielkonfiguration:

  • Kompakter x86-Mini-PC (Dell Wyse 5070)
  • 4-Kern-CPU (z. B. Intel J-Serie)
  • 8–16 GB RAM (aktuell 4 GB, Upgrade geplant)
  • 256 GB SSD (Intenso, für Container und System)
  • 2× 4 TB WD Red HDDs (aus MyCloud EX2, für Daten)
  • Erweiterung über USB/SATA möglich

HDDs neben Wyse 5070

<!-- Mini-PC front/back images removed because original files are not present. -->

Warum WD Red?

WD Red Festplatten sind speziell für den Dauerbetrieb in NAS-Systemen ausgelegt. Sie bieten eine hohe Zuverlässigkeit, sind leise und für RAID-Setups optimiert. Für ein NAS sind sie daher deutlich besser geeignet als Desktop-HDDs.


TrueNAS SCALE

TrueNAS SCALE ist eine leistungsstarke Open-Source-NAS-Distribution, die speziell für den Einsatz als Heim- oder Small-Business-Server entwickelt wurde. Sie basiert auf Linux und bringt viele Enterprise-Features mit, die sonst nur in teuren Storage-Lösungen zu finden sind. Besonders hervorzuheben ist das Dateisystem ZFS, das für seine Zuverlässigkeit, Datenintegrität und Flexibilität bekannt ist.

Was macht TrueNAS besonders?

  • ZFS-Dateisystem: ZFS bietet Snapshots, Datasets, Kompression, Deduplizierung und eine extrem hohe Datensicherheit. Snapshots ermöglichen es, den Zustand des Systems zu einem bestimmten Zeitpunkt wiederherzustellen – ideal als Schutz vor versehentlichem Löschen oder Ransomware.
  • Intuitive Web-Oberfläche: Die Verwaltung erfolgt komplett über eine moderne, übersichtliche Weboberfläche. Hier lassen sich Pools, Freigaben, Benutzer, Netzwerke und Apps einfach konfigurieren.
  • App-Ökosystem & Docker: TrueNAS SCALE unterstützt Apps und Docker-Container nativ. So können beliebige Dienste wie Portainer, AdGuard Home, Nextcloud oder Plex direkt installiert und verwaltet werden. Die Integration ist nahtlos und Updates lassen sich komfortabel über die Oberfläche einspielen.
  • Virtualisierung: Neben Containern können auch virtuelle Maschinen (VMs) direkt in TrueNAS betrieben werden. Das ist praktisch, wenn man z.B. Home Assistant als eigene VM laufen lassen möchte.
  • Netzwerkfreigaben: TrueNAS unterstützt alle gängigen Protokolle wie SMB (Windows-Freigaben), NFS, iSCSI und WebDAV. So können verschiedene Geräte und Betriebssysteme einfach auf die Daten zugreifen.
  • Benutzer- und Rechteverwaltung: Die Rechtevergabe ist sehr granular möglich. Für jeden Ordner und jede Freigabe lassen sich eigene Benutzer und Gruppen mit individuellen Zugriffsrechten anlegen.
  • Erweiterbarkeit: Über das App-System und die Community lassen sich viele weitere Dienste nachinstallieren. Auch Backups, Replikation und Monitoring sind möglich.
  • Hardware-Kompatibilität: TrueNAS SCALE läuft auf Standard-x86-Hardware und ist damit sehr flexibel. Es unterstützt viele RAID-Setups, Hot-Spares und kann mit wenig Aufwand erweitert werden.

Warum nicht Unraid?

Ich habe mich bewusst gegen Unraid entschieden, obwohl es eine beliebte Alternative ist. Für eine Unraid-Lizenz mit unbegrenzten Laufwerken werden einmalig 249 $ fällig (Preise Stand 13.06.2025). Zwar erhält man dafür lebenslange Updates, aber TrueNAS bietet als Open-Source-Lösung einen ähnlichen Funktionsumfang komplett kostenlos. Gerade für ein privates oder semi-professionelles Setup ist das ein großer Vorteil. Zudem überzeugt mich bei TrueNAS die native ZFS-Integration und die starke Community.

Fazit zu TrueNAS:

TrueNAS SCALE vereint professionelle Storage-Features mit einer einfachen Bedienung und ist damit ideal für ambitionierte Heimnutzer und kleine Unternehmen. Die Kombination aus ZFS, Container- und VM-Support sowie der starken Community macht es zu einer der besten NAS-Lösungen im Open-Source-Bereich.


Datenmigration: Von ext4 zu ZFS

Um meine Daten von einer alten ext4-Partition auf das neue ZFS-System zu migrieren, bin ich wie folgt vorgegangen:

  1. Eine der 4 TB-HDDs als ZFS-Pool in TrueNAS initialisiert.

  2. Die zweite HDD temporär als ext4 gemountet.

  3. Daten mit rsync kopiert:

    tmux  # stabile Shell-Session
    rsync -aHv --progress /mnt/alt/ /mnt/ziel/
    
  4. In TrueNAS für die wichtigsten Ordner eigene Datasets angelegt (z. B. Fotos, Backups, Medien).

  5. Nach erfolgreicher Migration die zweite HDD ebenfalls als ZFS formatiert und als Mirror zum Pool hinzugefügt (RAID1). So sind die Daten ohne Ausfallzeit und ohne Datenverlust gespiegelt.


Docker & Portainer

<!-- Portainer screenshot removed (file not present). -->

Ich verwalte meine Container mit Portainer, das lokal im Netzwerk erreichbar ist. Die Container und das System laufen auf der schnellen 256 GB SSD, während die Daten auf den HDDs liegen. Das sorgt für schnelle Zugriffe und eine klare Trennung von System und Daten.

Aktuell betriebene Container:

  • 📘 Next.js Blog (per GitLab verwaltet)
  • 🛡️ AdGuard Home (DNS-Filterung und Werbeblocker im gesamten Netzwerk)

AdGuard Home

AdGuard Home läuft als Container auf dem NAS und filtert Werbung sowie Tracker für alle Geräte im Netzwerk. Die Integration ist einfach, da TrueNAS SCALE Docker-Container direkt unterstützt. Die Konfiguration erfolgt über eine Weboberfläche und bietet umfangreiche Statistiken und Filtermöglichkeiten.


GitLab Deployment mit Webhooks

Mein Blog wird bei jedem Push auf den main-Branch neu gebaut.

Schrittweise Umsetzung:

  1. SSH-Key für NAS-User erzeugen:

    ssh-keygen -t ed25519
    
  2. Public-Key bei GitLab unter Deploy Keys hinzufügen

  3. Repo klonen:

    git clone git@gitlab.com:<nutzer>/<repo>.git
    
  4. Docker-Stack über docker-compose.yml in Portainer anlegen

  5. Webhook-URL in Portainer generieren (Beispiel lokal):

    https://<lokale-ip>:<port>/api/stacks/webhooks/<uuid>
    
  6. Webhook in GitLab hinzufügen unter: Settings > Webhooks

  7. Optional: Extern erreichbar machen (z. B. Cloudflare Tunnel)


Cloudflare Tunnel

Um Dienste wie den Webhook von extern sicher erreichbar zu machen, nutze ich einen Tunnel über Cloudflare. So wird z. B. der Portainer-WebHook von außen via HTTPS angesprochen, ohne dass Ports am Router offen sind.


Screenshot-Galerie

<!-- TrueNAS and ZFS screenshots removed (files not present). -->

Fazit

Mein aktuelles NAS-System erfüllt zuverlässig folgende Funktionen:

  • ✅ Datenablage und Snapshots (ZFS)
  • ✅ Werbeblockierung im Netzwerk mit AdGuard Home
  • ✅ Container-Management über Portainer
  • ✅ Automatisiertes Blog-Deployment über GitLab & Webhooks
  • ✅ Zugriff von außen über Cloudflare Tunnel

Nächste Schritte (geplant)

  • Backup auf externe USB-Platte automatisieren
  • Snapshots auf anderes Gerät replizieren
  • Weitere Dienste containerisiert betreiben (z. B. Monitoring)
  • Home Assistant als VM oder auf separater Hardware integrieren

Hinweise

Dieser Beitrag dient als schematische Darstellung meines NAS-Setups. Alle sensiblen Informationen wurden anonymisiert.