Build a better NAS

Ob QNAP oder Synology beide NAS Hersteller sind wenig optimal. Keine vernünftigen VMs und keine Erweiterbarkeit. Also habe ich ein PC gebaut mit Truenas, Nextcloud und Letsencrypt Zertifikat

 · 3 min read

Build a better NAS mit Truenas Nextcloud und lets encrypt

Warum kein QNAP oder Synology?

Ich hatte mehrmals ein QNAP oder Synology mit einer Nextcloud aufgesetzt. Ergebnis war verdammt viel Arbeit lässt sich aber nicht mehr updaten. Das letzte QNAP Nas dem ich eine Nextcloud spendiert hatte benötigte noch Mysql 5.6, das diesjährige Update auf eine neuere Version von Nextcloud spuckte sofort Fehler. Im Endeffekt gab es ein Update aber nur bis zur letzten Release der Version von Nextcloud. Als IT Dienstleister ist das Update viel zu teuer, mit der Proprietären Software kommt man nicht sehr weit wenn man Dateien im Geschäftsumfeld tauschen will.


Preisvergleich Qnap, Synology und Truenas

Aber ist das Synology und Qnap nicht viel günstiger? Preis Leitungsmäßig definitiv nicht.

Was Kostet mich ein Synology Diskstation DS420j? (288€)

Was kostet ein QNAP TS-431K? (280€)

Was kostet ein eigenbau? AMD Ryzen 3 3200G (91€), MSI A320M-A Pro (60€), G.Skill 8GB DDR4-2133 (19€), LC Power PRO-924B 420W (62€), Intenso SATA III Top 128GB (15€) = 247 €


Wenn man die Arbeit zum Zusammenbauen rechnet wäre man dennoch teurer, aber Preis/Leistung ist dennoch um Welten besser. Man bekommt einen Ryzen 3 im Gegensatz zu einer Minicpu, mehr RAM und man kann den PC noch immer erweitern. Um den SATA-Port für das Betriebssystem nicht zu verschwenden kann man auch ein Mainboard mit m.2 kaufen.


Ein Performancevergleich lass ich, denn es kommt eh nichts Gutes dabei raus ;)


Los geht's

Als erstes Laden wir TrueNAS Scale von https://www.truenas.com herunter und installieren die ISO. Bei mir aktuell wäre es die Version TrueNAS SCALE 22.02.4. Vermutlich gibt es genug tuorials um ISOs auf ein USB-Stick zu flashen, ein Tool Wäre https://rufus.ie/de/

Nach der Installation gibt es sinnvolle Einstellungen wie ein Mailkonto einzurichten um bei ein Festplattenausfall benachrichtigt zu werden.

Rechts oben -> Zahnrad -> E-Mail -> Hier wird euer Mailaccount eingestellt

Als Nächstes erstellen wir ein Pool unter Speicher, meiner nennt sich HDDs.

Hinten bei den drei vertikalen Punkten von HDDs fügen wir weitere Datasets hinzu. Einmal nextcloud-data, nextcloud-db, nginx-data und zum Schluss nginx-letsencyrpt

Als nächstes gehen wir auf Apps hier bekommt sofort die Abfrage in welchem Pool die Container gespeichert werden sollen. Diese wählen wir entsprechend unseren Container aus, im Anschluss wird ein Dataset ix-applications erstellt.

Am Ende haben wir also folgendes Bild:


Dann erstellen wir die Docker Container, also Apps -> Available Applications -> Nextcloud -> installieren

Hier vergeben wir einen Containernamen im nächsten Reiter den zukünftigen Nextcloud Hostnamen, Benutzernamen und Passwort. Kein Zertifikat!


Dann kommen die Environment Variablen. Hier gibt es keine Doku, kann man sich aber alle unter den nextcloud-data/config Ordner anschauen.

Als kleine Auswahl aus der reverse-proxy.config.php:

OVERWRITEHOST

OVERWRITEPROTOCOL

OVERWRITECLIURL

OVERWRITEWEBROOT

OVERWRITECONDADDR

TRUSTED_PROXIES


In den Environment variablen fügen wir die OVERWRITECLIURL hinzu und schreiben den endgültigen URL rein. https://cloud.example.com Das Protokoll muss auch auf https umgestellt werden sonst wird man nicht auf das Dashboard weitergeleitet

OVERWRITECLIURL = https://cloud.example.com

OVERWRITEPROTOCOL= https


Unter Speicher geben wir folgende Pfade an:

Wenn man eine M.2 SSD wie ich verwendet will man die Datenbank evtl. auf der SSD laufen lassen. Hier müsstet ihr per SSH einen Ordner erstellen und entsprechend per Hand eintragen. ACHTUNG!! Diese Daten sind werden aber nur durch das Backupdir gesichert.

Den Cronjob würde ich aktivieren und auf */5 * * * * setzen, das ist der normale Crontab aus Nextcloud.


Mit den erstellen würde die Nextcloud schon laufen. Der Hostname muss allerdings auf den Server zeigen. Mit den OVERIDEHOST wird auch der Port 9001 überschrieben also sollte man hier schon über eine Portfreigabe darauf zugreifen.


Jetzt kommen wir zum Let's Encrypt Zertifikat.

Unter Apps gibt es rechts oben auch ein Launch Docker Image, das Image geben wir wieder einen Namen, wie z.B. Proxy oder nginx-proxy.

Image repository ist jc21/nginx-proxy-manager

Unter Port forwarding habe ich folgende Ports eingetragen:

Der Port 9081 ist der Administrator Port die anderen beiden leitet ihr einfach von eurem Router weiter.

Router eingehend Port 80 auf die 9080 Port 443 eingehend auf Port 9443. Das Zielgerät ist euer TrueNAS.

Speicher ist entsprechend so konfiguriert:


Jetzt müssen wir nur noch euren Proxy sagen wohin er soll und welcher Name das ist.

Also geht ihr auf euer TrueNAS Port 9081 z.B. http://truenas:9081 Initial ist der Benutzername admin@example.com und Passwort: changeme

Als erstes müsst ihr die Zugangsdaten ändern, im Anschluss fügt ihr ein Proxyhost hinzu.


Wenn ihr speichert erstellt der Proxy ein Zertifikat und eure Nextcloud ist mit Let's encrypt gesichert. Der Proxy hört nur auf die URL, wenn die URL nicht auf den Proxy zeigt, wird er ihn nicht weiterleiten. Das aufrufen von http://truenas:9080 oder https://truenas:9443 wird euch nur eine Fehlerseite anzeigen.



No comments yet.

Einen Kommentar hinzufügen
"Strg + Enter" um Kommentar hinzuzufügen