TrueNAS erforschen
Erforschen von TrueNAS aus dem Blickwinkel eines neuen Benutzers.
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:

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:

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.
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
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üssel | Wert | Container |
|---|---|---|
| tsdproxy.enable | true | it-tools |

Was noch nicht passt, sind der Maschinen Name, damit die Domain und noch kein https. Also weitere Labels ergänzen:
| Schlüssel | Wert | Container |
|---|---|---|
| tsdproxy.name | ittools | it-tools |

Und jetzt ist der Service mit https unter einem Domainnamen zu erreichen:

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üssel | Wert | Container |
|---|---|---|
| tsdproxy.funnel | true | it-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