TrueNAS erforschen

TrueNAS SCALE Fangtooth 25.04 [release]

TrueNAS Scale hat einen neuen, für mich interessanten Release. Aktuell nutze ich eher Proxmox, nutze dessen Hypervisor Stärken jedoch kaum. Ich kann mir vorstellen, dass ein gutes Filesystem (ZFS) in Kombination mit Docker Compose basiertem Hosting für mich ausreicht. Mal sehen.

Der Youtube Channel ServersatHome gibt einen guten Überblick aus Nutzerperspektive über TrueNAS. Er hat ein Video zum Release veröffentlicht. {{ youtube(id="p3P36jbxmvw" }}

Hardware

Die Hardware ist ein kleiner Seeedstudio Single Board Computer mit zwei 2TB NVME SSDs. Als Storage Pool "Tank" ist ein Raid1, also ein ZFS Mirror konfiguriert. Damit habe ich einen sehr schnellen 2 TB Pool, bei dem eine SSD ausfallen darf. Weil es nur ein kleiner SBC ist, habe ich diese TrueNAS Installation "littlenas" getauft.

Erste App: Tailscale

Ich werde TrueNAS auch von außerhalb meines Netzwerks erreichen wollen. Bisher habe ich mehr Netbird genutzt. Tailscale ist noch weiter verbreitet, es gibt auch hier in TrueNAS eine Community maintained App. Deswegen gebe ich Tailscale eine Chance. Eine Dokumenation gibt es auch. Das ist ein guter Start.

Hierfür habe ich mir von ServersatHome abgeschaut, eigene Datasets zu erstellen. Unter tank/apps werde ich je App ein Dataset erstellen und bei Bedarf darunter weitere. Das Web-UI hat bei Tailscale einen Storage path für State erfragt. Entsprechend liegt gibt es jetzt ein Dataset tank/apps/tailscale/state.

Ansonsten bin ich der Anleitung gefolgt und mit wenigen Klicks läuft tailscale: littlenas in Tailscale

App über Tailscale Netzwerk erreichbar machen

Ich will einen praktikablen Weg finden, die Apps, die ich per Tailscale Web-UI installiere, erreichbar zu machen. Manche nur im internen Netzwerk, andere sogar von außen. Ich starte intern und mit einer simplen App.

IT Tools als Test Service

Das ist ein Sammelsurium aus vielen kleinen Tools, die man als Nerd gut brauchen kann. Es braucht keinen Storage, ist also perfekt zum Testen. Laut Standard Konfiguration ist das Web-UI von IT Tools auf Port 30063 zu erreichen:

IT Tools per http IT Tools per http und tailscale ip IT Tools per http und tailscale domain

Tailscale serve

Tailscale serve dient dazu, innerhalb des Tailscale Netzwerks einzelne Services erreichbar zu machen. Das ist genau das, was ich brauche. Also ab zur Dokumenation. Es gibt auch ein gutes Video dazu.

Das würde für einen Service funktionieren, aber ich will mehrere Services mit dieser TrueNAS Installation nutzen. Auch hierfür gibt es eine Lösung mit Docker und einem tollen Erklärvideo:

Wenn man in TrueNAS in die App geht, kann man mit "Convert to custom app" direkt die compose.yaml Datei editieren. Diese Funtkion nutze ich um einen Tailscale container zu ergänzen. Es geht schief und ist schwer zu debuggen. Da ich es simpel halten will, recherchiere ich weiter. Im Endeffekt kann sind aus meiner Sicht zwei Möglichkeiten plausibel:

  • Einen Docker Management Service aufsetzen mit dem Nachteil, die Apps so nicht nutzen zu können.
  • Versuchen, eine Reverse Proxy in Kombination mit dem Tailscale Netzwerk zu nutzen. In diese Richtung recherchiere ich jetzt.

littlenas über Tailscale mit einem Let's Encrypt Zertifikat ausstatten

Die Dokumenation erläutert die Notwendigkeit, mittels

tailscale cert

ein Let's Encrypt Zertifikat zu besorgen. Das Mache ich direkt im Web-UI von TrueNAS in der Shell des Tailscale Containers. Ok komisch, ich habe sowohl am Windows Mini PC als auch am iPhone Tailscale aktiv. Das iPhone erkennt das Zertifikat und damit die sichere https Verbindung. Der Windows Mini PC nicht. Naja mal schauen, ob das so bleibt. Vermutlich ist nur irgendwas gecached.

Neue Entdeckung: TSDProxy

TSDProxy vereinfacht den Prozess services und Docker container im Tailscale Netzwerk erreichbar zu machen. Der große Vorteil in meinem Szenario: Ich kann weiterhin die Apps von TrueNAS nutzen und die notwendigen Docker Labels für TSDProxy im TrueNAS Web-UI setzen. So die Idee. Mal schauen ob es klappt.

TSDProxy Container deployen

In der Dokumenation wird ein compose.yaml vorgeschlagen. Dies nutze ich mit leichten Anpassungen, mittels "Custom App" und Install via YAML.

services:
  tsdproxy:
    image: almeidapaulopt/tsdproxy:1
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /mnt/tank/apps/tsdproxy/data:/data
      - /mnt/tank/apps/tsdproxy/config:/config
    restart: unless-stopped
    ports:
      - "8080:8080"

Durchs Anstarten der App (=des Docker compose stacks) wird unter config ein File tsdproxy.yaml erstellt. Dort ergänze ich unter providers/default einen Tailscale authKey, den ich als mehrmals nutzbar (Reusable) und vergänglich (Ephemeral) konfiguriert habe. Das mache ich, weil ich nur alle 90 Tage einen neuen Key generieren will und durchs Ephemeral verschwindet ein über diesen authKey validierter Service automatisch aus dem Tailscale Netzwerk.
Per Web-UI restarte ich die TSDProxy App. Status ist Running.

Service mit TSDProxy im Tailscale Netzwerk erreichbar machen

Ich installiere nochmal per TrueNAS Web-UI die App IT Tools. Unter "Labels Configuration" ergänze ich:

SchlüsselWertContainer
tsdproxy.enabletrueit-tools

IT Tools als Maschine im Tailscale UI

Was noch nicht passt, sind der Maschinen Name, damit die Domain und noch kein https. Also weitere Labels ergänzen:

SchlüsselWertContainer
tsdproxy.nameittoolsit-tools

IT Tools als Maschine im Tailscale UI mit Name ittools

Und jetzt ist der Service mit https unter einem Domainnamen zu erreichen: IT Tools per https und tailscale domain

Das ist richtig gut! Und ab jetzt ist jeder neuer Service mit nur 2-3 Labels erreichbar im Tailscale Netzwerk!

App vom Internet erreichbar machen

Als nächstes will ich feststellen, inwiefern die Erreichbarkeit von außen über Tailscale funnel funktioniert. Also weiteres Label ergänzt:

SchlüsselWertContainer
tsdproxy.funneltrueit-tools

Am iPhone kann ich die Domain während ich aus dem WLAN ausgeloggt bin und der Tailscale Client deaktiviert ist erreichen. Das ist sehr einfach.

Fazit

Mit den Storage Funktionen und Sync/Backup/Restore habe ich mich noch nicht beschäftigt. Das ist Kern von TrueNAS und dafür ist es bekannt. Damit kann ich davon ausgehen, dass das gut ist.

Für mich neu sind die Apps und deren einfaches Management in Verbindung mit Tailscale. Die Konfiguration im Web-UI ist logisch und ich spare mir Reverse Proxy, kann ohne eigene registrierte Domain die Tailscale Domain nutzen und die Apps sogar aus dem Internet erreichbar machen, ohne mich um Port Forwarding, DNS oder andere zwar interessante, aber für Anfänger eher schwierig zu verstehenden Themen, beschäftigen zu müssen.

Ich werde weitere Apps installieren und meine bestehenden Services hierher migrieren.

Matthias