Eigener Homeserver - Setup Teil 3 Asustor NAS
Schritt-für-Schritt ein Asustor NAS mit VPN, Firewall, Proxy, Gitea, Calibre einrichten.
Inhaltsverzeichnis
Vor über drei Jahren habe ich mir mein erstes privates Fertig-NAS gekauft. Eine der günstigen Optionen mit 2 GB Arbeitsspeicher und einer Intel CPU war ein Asustor AS3102T. In dieser Anleitung werden die wichtigsten Schritte zur Einrichtung beschrieben. Worauf weniger Bezug genommen wird, ist die Möglichkeit der Nutzung als Mediencenter.
Warum ein Fertig-NAS?
Zunächst könnte man sich fragen, warum man überhaupt ein schon zusammengebautes NAS kauft. Ähnliche Hardware bekommt man grundsätzlich günstiger, jedoch ist es eher die Software, die diese Geräte interessant macht. Im Gegensatz zu einer selbst gebauten Lösung oder einem Raspberry Pi, muss man sich nicht mit dem Betriebssystem beschäftigen. Viele Dienste wie Netzwerkspeicher, VPN, Proxy, Mediaserver usw. sind bereits in die Software so integriert, dass sie mit ein paar Klicks laufen. Man benötigt dazu grundsätzlich kein SSH und CLI, sondern kann das grafische User Interface nutzen.
Eigentlich muss man sich nur die Hardware sowie die Festplatte(n) kaufen und ins Netzwerk anschließen. Von den Herstellern empfehle ich Synology, QNAP oder Asustor beim Kauf in Betracht zu ziehen. Eine ähnliche Anleitung wie diese für ein Synology NAS folgt noch.
Asustor vs Synology
Grundsätzlich sind sich die Geräte beider Hersteller sehr ähnlich. Einen Unterschied gibt es in der Software. In meinem Fall konnte das Synology NAS besser mit Btrfs umgehen und das grafische User Interface wirkt etwas moderner. Jedoch hat Asustor gefühlt mehr Software von Drittherstellern im eigenen App Store. Im Internet finden sich mehr Nachrichten zu Synology als zu Asustor.
Glücklicherweise bieten beide (natürlich auch QNAP) die Möglichkeit Docker Container auszuführen. Das ist eins der besten Features, wenn man sein NAS für mehr als nur einen Netzwerkspeicher benutzen möchte.
Kaufhinweise
Worauf ist beim Kauf zu achten?
Maximale Anzahl Festplatten
Wichtig sind zum Einen die Anzahl der Festplattenslots. So gibt es 1-Bay NAS, die nur eine einzige Festplatte zulassen, aber auch 30-Bay NAS, die 30 Festplatten integrieren können. Möchte man RAID benutzen (dazu später mehr), benötigt man mindestens zwei Slots.
CPU
Wichtig ist auch die CPU. Hier sollte man meiner Meinung nach nicht nur auf die Anzahl oder Geschwindigkeit der Prozessorkerne achten, sondern insbesondere darauf, ob es um eine ARM oder x64 CPU handelt. Das Problem an ARM ist, dass die Prozessorarchitektur mit vielen Docker Images nicht kompatibel ist. Die Entwicklung von Docker Images für ARM hat jedoch (zumindest gefühlt) zugenommen.
RAM
Wünschenswert beim RAM ist, dass er erweiterbar ist. Leider findet sich diese Option häufig nicht in den günstigeren Geräten. In diesem Fall würde ich kein Gerät mit einiger als einem RAM kaufen, außer ich möchte ich es hauptsächlich als Netzwerkspeicher mit wenigen Zusatzfunktionen benutzen. Selbst 1 GB RAM kann schnell knapp werden, wenn man einige Dienste auf dem NAS laufen lässt.
Festplatten
Bevor ich das NAS ins Netzwerk anschließe, müssen die Festplatten eingebaut werden. Mein NAS hat zwei Slots, ich nutze eine 4 TB Ironwolf (Amazon Affilate-Link) Festplatte von Seagate, sowie eine kleine 64 GB SSD. Jetzt dürften einige Leute aufschreien.
RAID
Warum kein RAID? Dazu muss man natürlich grundlegend verstehen, was RAID überhaupt ist. Für zwei Festplatten gibt es grundsätzlich zwei unterschiedliche RAID-Typen, die man einsetzen könnte, RAID 0 und RAID 1.
RAID0 kombiniert beide Festplatten zu einer großen Festplatte, die Leistung wird durch die bessere Lastverteilung auf beide Festplatten gesteigert. Fällt eine der beiden Festplatten aus, sind vielleicht alle Daten weg.
Hauptmerkmal von RAID1 (das wohl häufiger in solchen NAS eingesetzt wird) ist die Redundanz von Festplatten. Es werden identische Daten auf beide Festplatten geschrieben. Fällt eine Festplatte aus, läuft das NAS mit der anderen Festplatte weiter. Man erreicht eine größere Datenverfügbarkeit und -Sicherheit. Jedoch bietet es auch einige Nachteile.
Erstens kostet es mehr Geld, sich eine zweite Festplatte zu kaufen, die für das RAID gebraucht wird, außerdem erhöhen sich auch Stromkosten und Lautstärke. Zweitens hat man dann auch nur die Hälfte des Speicherplatzes für seine Daten zur Verfügung. Drittens ist damit ein Slot durch eine redundante Festplatte besetzt. Und der meiner Meinung wichtigste Nachteil ist, dass man sich falsche Vorstellungen über die Datensicherheit macht.
RAID ist keine Sicherungskopie! RAID schützt nicht vor Fehlern, die dem Nutzer oder der Software passieren. Auch bei einem Blitzeinschlag oder einem Fehler eines Controllers des NAS bringt RAID im Zweifel wenig. RAID schützt nicht vor Malware.
Meine Kosten-Nutzen-Analyse hat für mich ergeben, dass ich lieber eine schnellere SSD als Systemspeicher einsetzen möchte. Die Leistungssteigerung ist mir wichtiger als eine erhöhte Datenverfügbarkeit. Zumal eine Sicherung in beiden Fällen unerlässlich bleibt, sofern man die Daten behalten möchte.
NAS ins Netzwerk anschließen
Nachdem sich die Festplatten im NAS befinden, schließe ich es ins Netzwerk an und schaue in meinem Router nach, welche IP-Adresse es bekommen hat und sorge dafür, dass es immer dieselbe IP-Adresse erhält.
Wenn der Router diese Funktionalität nicht bietet, lässt sich eine feste IP-Adresse auch später in der NAS Oberfläche einstellen. Anschließend muss ich das NAS kurz vom Netzwerk trennen und es wieder verbinden, damit die Änderung wirksam wird. Sobald ich die IP-Adresse des NAS im Webbrowser eingebe, erreiche ich die Konfigurationsseite.
Ersteinrichtung
Die Ein-Klick-Einrichtung wird empfohlen, aber ich weiß nicht, was da passiert. Ich wähle angepasste Einrichtung und darf mir einen Namen für das NAS sowie mein Benutzerkonto erstellen.
Danach kann man die Zeiteinstellungen ändern.
In den Netzwerkeinstellungen ist es möglich entweder die IP-Adresse vom DHCP-Server zu beziehen (also dem Router in meinem Fall) oder sie manuell festzusetzen.
Dies sollte man hauptsächlich dann machen, wenn im Router keine Möglichkeit besteht, eine feste IP-Adresse zu vergeben. Dann ist es auch sinnvoll, sich eine IP-Adresse außerhalb der DHCP-Range zu suchen.
Also wenn die Einstellungen so wie in diesem Bild sind, dann sollte man die IP-Adresse 192.168.123.x nehmen, wobei x entweder zwischen 2 und 19 oder zwischen 151 und 255 liegt.
Beim DNS kann man die DNS-Adresse des DNS-Servers eingeben oder sich eine gewöhnliche DNS-Adresse aussuchen (dazu mehr in der Set-up Anleitung der Fritz!Box) oder die Felder leer lassen.
Es folgen die Einstellungen der Laufwerke. Ich wähle wie bereits geschrieben RAID-Level Single aus. JBoD (Just a Bunch of Disks) würde dafür sorgen, dass ich ein großes Volume habe, statt 2 kleine. Ja, es ist auch möglich, die HDD als Systemplatte zu nehmen und die SSD als Cache anzuhängen. Das habe ich bereits getestet und merkte zwar teilweise eine höhere Leistung, aber ich möchte lieber das komplette System auf die SSD schieben. Bei der Wahl des Dateisystems gehen die Meinungen auseinander. Standardmäßig ist EXT4 eingestellt, jedoch bietet das jüngere Dateisystem Btrfs mehr Möglichkeiten. Leider lässt sich nur mit EXT4 ein Nutzerkontingent auf einer Festplatte festlegen. Das heißt, wenn man plant Benutzer einzurichten, die nur eine bestimmte Größe an Daten speichern dürfen, sollte man EXT4 wählen und/oder sich eine größere Systemfestplatte kaufen. Ich wähle trotzdem Btrfs und bitte meine Freunde ohne Softwareeinsatz, mein NAS nicht übermäßig mit Daten zu fluten.
Wichtig zu wissen ist auch, dass auf dieser Festplatte die standardmäßigen Home-Ordner für die Benutzer erstellt werden. Selbstverständlich kann man später weitere Ordner auf der zweiten Festplatte erstellen.
Anschließend muss man etwas warten, bis der Installationsvorgang fertig ist.
Danach kann man sein NAS registrieren, davon sollte man insbesondere dann Gebrauch machen, wenn man EZ-Connect nutzen möchte.
Wenn alles fertig ist, sollte man den „Desktop“ des Benutzerkontos sehen.
Festplatte initiieren
Im Speichermanager ist zu sehen, dass die Festplatte, auf der nicht das System installiert wurde, inaktiv ist.
Das muss geändert werden, schließlich möchte ich sie benutzen. Dazu wähle ich den Menüpunkt Laufwerk und drücke auf den Button „Erstellen“.
Dann erweiterte Einrichtung (weil ich nicht weiß, was bei Schnelleinrichtung passiert).
Danach wieder Einzel, obwohl es keinen Datenschutz bietet 😥
Danach wähle ich als Dateisystem wieder Btrfs aus. Möchte man Festplattenkontingente für Benutzer festlegen, geht das nur mit EXT4. Snapshots lassen sich aber nur mit Btrfs erstellen.
Nun sind beide Festplatten sichtbar.
Da es sich bei mir um eine IronWolf Festplatte handelt, lade ich mir das dazugehörige Programm aus der App Zentrale herunter.
Zeitplan für Festplattendoktor
Als Nächstes möchte ich, dass in einem regelmäßigen Abstand beide Festplatten geprüft werden. Ich wähle die erste Festplatte im Speichermanager aus und drücke auf Festplattendoktor.
Hier stelle ich eine monatliche Prüfung ein.
Einmal im Monat sollen auch defekte Blöcke gesucht werden (hier wähle ich bei Festplatte “Alle” aus).
Eine monatliche S.M.A.R.T.-Suche möchte ich auch.
Papierkorb einrichten
Die Home-Ordner der Benutzer werden momentan auf Laufwerk 1 (in meinem SSD) erstellt, das blöde ist, dass sich diese Einstellung nicht einfach ändern lässt. Aber ich möchte dennoch einen Papierkorb meinem Ordner hinzufügen. Dazu gehe ich in die Zugangssteuerung und drücke unter Freigabeordner beim Ordner Home auf Bearbeiten.
Hier setze ich den Haken beim Netzwerkpapierkorb.
In den Einstellungen ändere ich nun die Einstellungen von allen Papierkörben. Die Dateien, die sich darin befinden, sollen gelöscht werden, wenn sie älter als 14 Tage sind.
Sicherheitseinstellungen
Als Nächstes nehmen wir einige Einstellungen vor, die der Sicherheit betragen könnten.
Port
Unter Einstellungen/Allgemein lassen sich die HTTP/S Ports ändern, die man benutzt, um sich mit dem Asustor NAS zu verbinden.
Firewall
Als Nächstes möchte ich die Firewall aktivieren. Ich ändere den Standardeintrag auf alle Verbindungen verweigern.
Ich möchte jedoch, dass meine privaten Netzwerkbereiche 10.0.0.0 - 10.255.255.254 sowie 172.16.0.0 - 172.31.255.254 nicht geblockt werden, der zweite Bereich ist insbesondere für Docker wichtig.
Ich füge die erste Regel hinzu.
Ich füge die zweite Regel hinzu.
Ich möchte auch, dass Geräte in meinem Netzwerk auf alle Ports zugreifen können.
Sicherlich könnte man sich auch überlegen, ob man nicht alle Ports freigeben möchte, sondern nur bestimmte Dienste auswählt. Das ist mir aber an dieser Stelle zu aufwendig und ich belasse es bei alle.
Antivirenprogramm
Ich installiere mir auch das Antivirenprogramm ClamAV aus der App Zentrale.
Unter dem Aktualisierungsmenüpunkt aktualisiere ich die Datenbank.
Ich aktiviere auch die Auto-Aktualisierung in einem Intervall von 7 Tagen.
Unter den Aufgaben erstelle ich mir einen Zeitplan für den Scan aller Ordner.
2 Faktor Authentifizierung
Die Zwei-Faktor-Authentifizierung kann unter dem Menüpunkt „persönlich“ eingerichtet werden.
Man bekommt einen QR-Code angezeigt, den man beispielsweise mit der Google Authenticator-App scannen kann.
Google Authenticator - Apps on Google Play
Enable 2-step verification to protect your account from hijacking.
Windows Authenticator for Google, Blizzard, Guild Wars, Rift
Open-source Windows Authenticator supporting Google Authenticator, Microsoft and games Battle.net for World of Warcraft, Diablo III, Guild Wars 2, Rift.
Es gibt natürlich noch mehr Software, das dient nur als Beispiel.
VPN
Nun möchte ich zeigen, wie man ein VPN einrichten kann, obwohl ich persönlich dafür nicht das Asustor NAS nutze.
In der App Zentrale lade ich den VPN Server runter.
Danach muss die Firewall teilweise geöffnet werden. Ich füge die Regel für alle IP-Adressen hinzu.
Ich aktiviere in der VPN-Server App den OpenVPN-Server.
Als DNS-Server kann ich die IP-Adresse meines Raspberry Pis eingeben, damit der Adblocker auch über VPN wirksam wird. Danach muss ein neues Zertifikat erstellt werden (wenn bereits eins erstellt wurde, kann man auch das bestehende herunterladen). Sobald man die beiden Dateien beispielsweise auf das Smartphone übertragen hat, kann man sie dort in einen OpenVPN Client eingeben.
OpenVPN Connect – Fast & Safe SSL VPN Client
Offizieller sicherer Client für Access Server und alle OpenVPN-Dienste
— PlayStore Link
Eine Verbindung wird noch nicht funktionieren. Erst muss einem Nutzer oder einer Gruppe das Recht gegeben werden, OpenVPN zu nutzen.
Außerdem muss Port 1194/UDP im Router freigegeben werden.
Im OpenVPN Programm muss die Konfiguration bearbeitet werden.
Anschließend kann eine Verbindung hergestellt werden.
Hat man noch keine Domain für sein Netzwerk eingerichtet, kann man das unter Manuell verbinden mit einer DDNS in den Einstellungen nachholen oder auch den EZ-Router einrichten.
Dienste
Ich schaue mir jetzt noch beispielhaft einige Dienste an, die ich installieren möchte.
DataSync Center
Mit diesem Programm ist es möglich sein Google Drive oder Dropbox Konto mit dem NAS zu synchronisieren. Bevor ich das Programm starte, benötige ich einen neuen Ordner auf meinem NAS. In der Zugangssteuerung füge ich einen neuen Ordner hinzu.
Jetzt ist es mir auch möglich, das zweite Laufwerk auszuwählen.
Bei den Rechten wähle ich nach Benutzern aus.
Ich gebe nur meinem Benutzer die Schreib- und Leserechte.
In der DataSync App erstelle eine Zweiwege Synchronisation zu Drive. Das bedeutet, wenn ich Dateien auf meinem NAS lösche, verschwinden sie auch aus meinem Google Drive Konto.
Beim lokalen Pfad wähle ich den neu erstellten Ordner aus. Beim externen Pfad “Meine Ablage”. Es ist möglich einzustellen, dass die Synchronisation nicht zu jeder Zeit stattfinden soll.
Praktisch ist, dass ich durch diese Methode nun eine schnellere Möglichkeit bekomme, Dateien zu nutzen, die ich bei Google Drive abgelegt habe. Zudem kann ich Dateien in diesen Ordner schieben, die ich gerne in der Google Cloud sichern möchte (Speicherplatzkontingent sollte beachtet werden), um den Upload kümmert sich dann mein NAS.
Die Synchronisationsart kann auch für einzelne Ordner eingestellt werden. Auch die Synchronisationszeit lässt sich im Nachhinein ändern. Praktisch ist auch, dass mehrere Google Konten synchronisiert werden können (man sollte dann aber einzelne Ordner oder Freigabeordner anlegen).
Photo Gallery 3
Das NAS bietet eine vielversprechende Möglichkeit, Bilder vom Smartphone automatisch zu sichern. Insbesondere da Google Fotos ab Juli 2021 keinen unbegrenzten Speicherplatz für den Fotoupload in Standardqualität mehr bietet, sind solche Lösungen sehr nützlich. Leider ist es nicht möglich den automatisierten Upload-Ordner zu ändern, mein Volume 1 hat aber nicht ausreichend Speicherplatz für meine Bilder. An dieser Stelle könnte Asustor echt die Software nachbessern. Falls jemand weiß, wie ich den Standard Upload-Ordner in der Applikation ändern kann (nicht nur einen zweiten hinzufügen, zum Anzeigen von Bildern), würde ich mich sehr über einen Kommentar oder eine Nachricht freuen.
Calibre
Ich möchte eine Verwaltungssoftware für meine E-Books. In der App Zentrale findet man Calibre-Web.
Bevor man jedoch eine Drittsoftware aus dem App Central installiert, sollte man schauen, wie alt das angebotene Paket ist. Auf der Release-Seite von Calibre-Web sieht man, dass 0.6.11 tatsächlich die neuste Version vom 2. Februar 2021 ist. Also installiere ich mir das Programm direkt. Es handelt sich hierbei tatsächlich um ein Docker Paket. Für die Installation muss auch Docker-ce installiert werden. In der Zugangssteuerung sehe ich zwei neue Freigabeordner.
Docker kann meinetwegen auf Laufwerk 1 bleiben. Calibre möchte ich jedoch auf Laufwerk 2 haben. Dazu deinstalliere ich zunächst Calibre in der App Central. Erst danach kann ich das Laufwerk des Ordners wechseln.
Danach installiere ich die App wieder und starte sie. Beim Startbildschirm gebe ich “/books” als meine Datenbank ein.
Die Logindaten sind admin und admin123 als Passwort.
Im Profil sollte man dies auch gleich ändern.
Dann muss noch die Basis-Konfiguration editiert werden.
Erstens ist es nützlich die Uploads zu aktivieren, sonst gibt es keine Möglichkeit über das WebUI Bücher hinzuzufügen.
Dadurch erhält man einen Upload-Button in der Navigationsleiste.
Sobald ich ein Buch hochlade, kann ich es auch auf meinem NAS im Calibre Ordner sehen. Möchte ich Zugriff auf meine Bibliothek haben, wenn ich nicht zu Hause bin, habe ich drei Möglichkeiten. Zugriff über ein VPN als wäre man im Heimnetzwerk oder in der Firewall die Ports öffnen und im Reverse Proxy Manager (dazu mehr im nächsten Absatz) eine Domain der IP-Adresse inklusive Port 38083 zuweisen oder die Ports in der Firewall öffnen und dann im Router freigeben. Von der letzten Möglichkeit ist abzuraten.
Reverse Proxy
Hat man einen Proxy Manager nicht bereits auf einem anderen Gerät (z. B. Raspberry Pi), lässt sich einer auch auf dem NAS einrichten.
Möchte man das Asustor NAS als Reverse-Proxy Manager nutzen, müssen Port 80 und 443 im Router an das NAS freigegeben werden.
Den integrierten Proxy Manager finde ich zu einschränkend.
Um mit Docker einen neuen einzurichten, holen wir uns Portainer aus der Zentrale. (Ja, über CLI würde es sicherlich auch gehen, aber Portainer ist einfacher)
Nachdem ich die App starte, wähle ich Benutzername und Passwort. Anschließend wähle ich die Option, dass ich meine Docker-Umgebung verwalten möchte.
Im Home-Bildschirm sehe ich, dass zwei Container laufen. Das sind Portainer selbst und Calibre.
Nginx Proxy Manager benötigt die Ports 80 und 443 zum Laufen, aber das NAS sperrt den Port 443 für eigene Bedürfnisse. Man könnte jetzt den eingebauten Proxy Manager nutzen, um Anfragen auf einen neuen zu übermitteln. Aber ich möchte lieber den Weg eines zusätzlichen Netzwerks zeigen. In der Liste der Netzwerke füge ich ein neues Netzwerk hinzu.
Ich wähle einen Namen und nutze macvlan als Treiber.
Danach muss ich das Netzwerk angeben, es sollte eth0 sein. Aber ich bin mir nicht sicher. Also installiere ich mir das Monitoring-Programm Netdata.
Dort sehe ich unter “Network interfaces” mein Netzwerk, es heißt tatsächlich eth0. docker0 ist das default bridge Netzwerk in Docker.
Also trage ich das in der Konfiguration für mein neues Netzwerk ein.
Als Subnetz gebe ich den IP-Bereich meines Netzwerks an. Gateway ist die IP-Adresse meines Routers. In der IP-Range wähle ich in diesem Fall den Bereich von 152 bis 159. Das liegt außerhalb der DHCP-Range meines Routers, das heißt der kommt diesem Netzwerk nicht in die Quere.
IPv6 lasse ich unausgefüllt und erstelle das Netzwerk.
Nun füge ich noch ein Netzwerk hinzu. Diesmal nutze ich Creation statt Configuration.
Unter “Stacks” erstelle ich einen neuen Stack.
Das tolle ist, dass Portainer endlich Docker-Compose unterstützt. Also geben wir die Docker-Compose Anweisung ein.
version: "3.9"
### Networks ###
networks:
docker2:
external:
name: docker2
internal:
external: false
### Services ###
services:
nginx-proxy-manager:
container_name: nginx-proxy-manager
image: jc21/nginx-proxy-manager
restart: always
networks:
- docker2
- internal
ports:
- "80:80"
- "443:443"
- "81:81"
environment:
DB_MYSQL_HOST: npm_db
DB_MYSQL_PORT: 3306
DB_MYSQL_USER: npm
DB_MYSQL_PASSWORD: npm
DB_MYSQL_NAME: npm
DISABLE_IPV6: "true"
volumes:
- /volume1/Docker/npm/data:/data
- /volume1/Docker/npm/letsencrypt:/etc/letsencrypt
depends_on:
- npm_db
npm_db:
container_name: npm_db
image: mariadb
restart: always
networks:
- internal
environment:
MYSQL_ROOT_PASSWORD: npm
MYSQL_DATABASE: npm
MYSQL_USER: npm
MYSQL_PASSWORD: npm
volumes:
- /volume1/Docker/npm/db:/var/lib/mysql
Angepasst werden müsste der Name des Netzwerks, falls ein anderer genutzt wurde. Angepasst werden kann das Passwort. Auch das Volume kann angepasst werden, wenn man die Dateien nicht in den Docker-Ordner mounten möchte oder das Volume einen anderen Namen hat. Nun muss man etwas warten.
Ich drücke auf nginx-proxy-manager, um zu sehen, welche IP-Adresse er hat. Dies steht ganz unten.
Diese IP-Adresse inklusive Port 81 besuche ich mit meinem Browser und gelange auf diese Seite (also bei mir 192.168.123.152:81).
Hier kann ich mit admin@example.com und changeme als Passwort anmelden. Das sollte auch gleich geändert werden. Den Zugriff auf die Ports 80 und 443 muss man in der Asustor-Firewall erlauben, wenn man sie eingerichtet hat. Nun kann man im Router die Ports 80 und 443 (am besten nicht 81!) für diese IP-Adresse freigeben und hat damit seinen nginx-proxy-manager eingerichtet.
Im Ordner Docker sehe ich im Übrigen auch den neuen Ordner npm.
Git-Server
Die App Zentrale bietet Gitea als Git-Server an. Die Version ist momentan ca. 1 Monat alt, das finde ich in Ordnung.
Aber ich möchte keinen zentralen MySQL-Server einrichten, deshalb wähle ich lieber die Installation über Docker. Für die Installation sollte man seine BenutzerID und die Docker GruppenID kennen. Die BenutzerID kann in der Zugangssteuerung abgelesen werden, wenn man seinen Benutzer bearbeitet. Bei den lokalen Gruppen füge ich eine Gruppe namens docker hinzu.
Der Gruppe gebe ich nur die Zugriffsrechte für den Ordner Docker und Calibre (wobei es bei Calibre momentan egal ist).
Ich erstelle einen neuen Freigabeordner.
Dabei lege ich die Zugangsrechte nach Gruppe fest und erlaube der Docker-Gruppe den Zugriff.
Nun öffne ich Portainer und erstelle einen neuen Stack.
version: "3"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1234
- GITEA__database__DB_TYPE=mysql
- GITEA__database__HOST=db:3306
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=gitea
restart: unless-stopped
networks:
- gitea
volumes:
- /volume2/Gitea/data:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "13000:3000"
- "10022:22"
depends_on:
- db
db:
image: mariadb
container_name: gitea_db
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=gitea
- MYSQL_USER=gitea
- MYSQL_PASSWORD=gitea
- MYSQL_DATABASE=gitea
networks:
- gitea
volumes:
- /volume2/Gitea/db:/var/lib/mysql
Die Speicherorte, Passwörter und IDs können angepasst werden. Das Deployen dauert. Wenn ich anschließend die IP-Adresse des NAS inklusive Port 13000 aufrufe, sehe ich einen weißen Bildschirm. Diesmal liegt es nicht an der Firewall, sondern am Netzwerk. Ich wähle den Container gitea aus und füge bridge als Netzwerk hinzu.
Daraufhin sehe ich auf Port 13000 die Seite mit der Erstkonfiguration.
Ich lasse alles wie es ist und drücke auf installieren. Anschließend kann ich mich auf der Seite registrieren. Die Konfigurationsdatei befindet sich im Ordner Gitea/data/gitea/conf. Man kann den Container stoppen, die Datei (lokal) bearbeiten und den Container wieder starten.
Damit läuft nun auch Gitea auf dem NAS.
Backup und Snapshots
Als Letztes möchte ich noch kurz auf Snapshots und Backups eingehen.
Snapshot
Im Snapshot Center lassen sich (automatisierte) Snapshots einrichten.
Für automatische Snapshots auf das Zeitplan-Icon drücken und die gewünschten Einstellungen vornehmen.
Einen erstellten Snapshot kann man vollständig wiederherstellen, aber auch einzelne Elemente lassen sich wiederfinden, dazu den Vorschau Trigger betätigen.
Wichtig ist jedoch, dass ein Snapshot kein Backup ist, es schützt nur vor versehentlichen Löschungen oder der testweisen Installation von Programmen usw. Leider sehe ich keine Möglichkeit diese Snapshots zu exportieren. Über SSH kann ich sie nicht finden.
Also wenn jemand weiß, wo sie sind, freue ich mich über einen Kommentar.
Backup
Für eine quasi Sicherungskopie in der Cloud lassen sich wie bereits beschrieben mithilfe des Datasync-Centers beispielsweise Google Drive, Dropbox oder OneDrive nutzen.
Bessere Backup-Möglichkeiten bietet das Programm Dublicati aus der App-Zentrale.
Damit lassen sich Backups auch bei Bedarf verschlüsseln und es gibt viele Sicherungsziele.
Vielleicht gehe ich zu einem anderen Zeitpunkt näher darauf ein.
Andere Möglichkeit ohne weitere Installation ist es natürlich, die zu sichernden Ordner manuell auf einen externen Speicherort zu ziehen. Beachten sollte man dabei, dass Datenbanken sich nicht immer einfach kopieren lassen, insbesondere nicht während des Betriebs. Ich möchte nun meinen Gitea-Ordner sichern.
Das Unterverzeichnis data kann ich einfach herunterladen. Den Ordner db könnte ich zwar auch downloaden, beim Wiederherstellen könnte es aber zu Komplikationen kommen. Deshalb möchte ich mir lieber von MariaDB eine Sicherung erstellen lassen. Ich rufe Portainer auf.
Ich navigiere zur Container-Konsole von gitea_db und verbinde mich.
Dann führe ich einen MySQL Dump aus.
Der Befehl dazu lautet folgendermaßen.
/usr/bin/mysqldump --default-character-set=utf8mb4 -u benutzername --password=passwort datenbank > var/lib/mysql/backupdateiname.sql
In meinem Fall sind benutzername, password und datenbank “gitea”:
/usr/bin/mysqldump --default-character-set=utf8mb4 -u gitea --password=gitea gitea > var/lib/mysql/backupdateiname.sql
Daraufhin habe ich ein Backup im db-Ordner.
Dieses Backup kann ich downloaden. Beim Wiederherstellen der Datenbank packe ich die backup.sql in den db-Ordner und führe Folgendes aus.
cat /var/lib/mysql/backup.sql | /usr/bin/mysql --default-character-set=utf8mb4 -u benutzername --password=passwort datenbank
An dieser Stelle beende ich meine Set-up Anleitung für das Asustor NAS, sollte etwas unklar geblieben sein, freue ich mich über Kommentare 🙂