Dieser Artikel ist Teil der Reihe selbstgebauter Ubuntu 20.04 Homeserver/NAS


Nextcloud hat sich mittlerweile zum Quasi-Standard für selbstgehostete Cloudanwendungen entwickelt. Nextcloud kann uneingeschränkt kostenlos genutzt werden.

Anzeige:

In Nextcloud können Kalender und Kontakte gespeichert und mit dem Smartphone synchronisiert werden. So kann man Dienste wie Google Calender komplett ersetzen. Außerdem gibt es einen Deskop-Client, mit welchem man Dateien über mehrere Computer synchronisieren kann, ganz so, wie man es beispielsweise von Dropbox kennt. Eine offizielle Smartphone-App für Android und iOS ermöglicht es, auch von unterwegs sicher auf alle seine Daten zuzugreifen. Außerdem unterstützt die App den automatischen Bilderupload, sodass Fotos, die mit dem Smartphone gemacht werden automatisch auf den Homeserver übertragen werden.

Nextcloud ist mittlerweile als Snap-Paket für Ubuntu verfügbar, was die Installation und Einrichtung extrem vereinfacht. Wer die volle Kontrolle haben möchte, kann weiterhin den Weg der manuellen Installation und Konfiguration gehen, wie er in der alten Anleitung für Ubuntu 18.04. beschrieben ist [Homeserver/NAS mit Ubuntu 18.04: Teil 5, Nextcloud]. Dieser Weg funktioniert auch unter Ubuntu 20.04.

Da diese Anleitung bewusst möglichst einsteigerfreundlich sein soll, wird Nextcloud als Snap-Paket installiert. Damit reduziert sich die Installation auf einige wenige Kommandos und Nextcloud ist direkt einsatzbereit und fertig konfiguriert.

Nextcloud als Snap-Paket installieren

Mit folgendem Befehl wird Nextcloud installiert.

sudo snap install nextcloud

Die Installation von Nextcloud ist damit abgeschlossen. Die Benutzeroberfläche kann über die IP-Adresse des Homeservers bereits von jedem Computer im Heimnetz aufgerufen werden. In diesem Beispiel über http://192.168.30.153.

Allerdings sollte man Nextcloud noch nicht einsetzen, sondern zuerst weitere Konfigurationen vornehmen.

Übrigens: Die Nextcloud-Installation aus dem Snap-Paket befindet sich unter /var/snap/nextcloud/current.

Nextcloud konfigurieren

Bevor man Nextcloud im Browser aufrufen und verwenden kann, müssen ein paar zusätzliche Konfigurationen vorgenommen werden.

Anzeige:

Datenverzeichnis von Nextcloud auf das RAID verschieben

Wenn wir nun anfangen Nextcloud zu verwenden, werden alle Daten auf der Systemplatte gespeichert. Dies ist natürlich nicht gewollt, da die Daten bei einem Festplattenausfall verloren wären. Stattdessen muss Nextcloud nun vor der ersten Nutzung so konfiguriert werden, dass das Datenverzeichnis auf dem RAID gespeichert wird.

Snaps werden in einer gesicherten Umgebung ausgeführt und dürfen aus Sicherheitsgründen nur auf bestimmte Verzeichnisse zugreifen. Sie können jedoch so konfiguriert werden, dass sie auch auf Daten in /media und /mnt zugreifen können, da hier normalerweise Wechseldatenträger eingebunden werden. Damit Nextcloud überhaupt auf das RAID-System unter /mnt/storage Zugriff bekommt, muss folgender Befehl ausgeführt werden. Zugriff auf alle anderen Order auf der Festplatte wird weiterhin vom System verhindert.

sudo snap connect nextcloud:removable-media

Zuerst wird das Datenverzeichnis auf dem RAID angelegt und die korrekten Benutzerrechte gesetzt.

sudo mkdir -p /mnt/storage/nextcloud/data

sudo chown -R root:root /mnt/storage/nextcloud/data

sudo chmod 0770 /mnt/storage/nextcloud/data

Nun wird die Konfigurationsdatei angepasst, in welcher steht, wo Nextcloud das Datenverzeichnis einrichten soll.

sudo nano /var/snap/nextcloud/current/nextcloud/config/autoconfig.php

Hier wird die Zeile mit „directory“ angepasst und der Pfad zum Datenverzeichnis auf dem RAID eingetragen.

 // ...
 'directory' => '/mnt/storage/nextcloud/data',
 // ...

Jetzt wird der PHP-Service neu gestartet, damit Nextcloud die geänderten Daten übernimmt.

sudo snap restart nextcloud.php-fpm

Nextcloud verwenden

Die eigene Nextcloud auf dem Homeserver kann nun von jedem beliebigen Browser aufgerufen werden, indem man http:// gefolgt von der IP-Adresse des Homeservers im Browser eingibt. Beispielsweise http://192.168.30.153.

Zuerst wird man aufgefordert einen Administratoraccount für Nextcloud einzurichten. Hier kann ein beliebiger Benutzername und Passwort vergeben werden. Außerdem bietet Nextcloud an, beliebte Apps und Zusatzfunktionen wie Kalender und Kontakte gleich automatisch mitzuinstallieren. Ich empfehle, diesen Haken zu setzen. Stellt sich heraus, dass man manche Funktionen nicht benötigt, können die dazugehörigen Apps später mit einem Klick wieder deinstalliert werden.

Nextcloud im Webbrowser aufrufen

Nachdem die Installation abgeschlossen ist, kann Nextcloud grundsätzlich bereits genutzt werden. Allerdings ist der Aufruf bisher nur über eine unverschlüsselte Verbindung möglich. Dadurch ist eine sichere Nutzung über das Internet natürlich nicht möglich. Aus diesem Grund wird als Nächstes die Verschlüsselung eingerichtet.

Vertrauenswürdige Domain hinzufügen

Damit Nextcloud sowohl über die IP-Adresse, als auch über die in der Grundkonfiguration festgelegte DynDNS-Domain aufgerufen werden kann, muss diese noch als vertrauenswürdige Domain zu Nextcloud hinzugefügt werden. Dies geschieht mit folgendem Befehl, wobei der Domainname natürlich an das eigene Setup angepasst werden muss.

Anzeige:
sudo snap run nextcloud.occ config:system:set trusted_domains 1 --value=mimashome.ddns.net

Verschlüsselungszertifikat erstellen

Um problemlos eine verschlüsselte Verbindung über das Internet zu ermöglichen, wird ein kostenloses Verschlüsselungszertifikat von Let’s Encrypt eingerichtet. Auch dies ist mit dem Snap-Paket mit einem Befehl erledigt.

Achtung: Bei diesem Schritt überprüft ein externer Server von Let’s Encrypt, ob die Nextcloud Installation auch wirklich über die angegebene Domain erreichbar ist. Nur wenn dies der Fall ist, wird das Verschlüsselungszertifikat ausgestellt. Der Homeserver muss also unbedingt über Port 80 und 443 aus dem Internet erreichbar sein, wie in der Grundkonfiguration beschrieben.

sudo /snap/bin/nextcloud.enable-https lets-encrypt

Im ersten Schritt weist das Tool nochmal auf die genannten Voraussetzungen hin. Außerdem wird auf die Nutzungsbedingungen von Let’s Encrypt hingewiesen, die man akzeptieren muss, wenn man das Zertifikat erstellen und nutzen möchte.

Wenn alle Voraussetzungen erfüllt sind und man die Bedingungen akzeptiert, bestätigt man dies, indem man „y“ eingibt und Enter drückt.

Anschließend wird man nach einer E-Mail-Adresse gefragt. An diese Adresse wird z.B. ein Hinweis gesendet, wenn das Zertifikat abläuft, weil die automatische Erneuerung nicht funktioniert hat.

Nun muss der Domainname eingegeben werden, für den das Zertifikat erzeugt werden soll. In diesem Fall also die DynDNS-Adresse.

Damit sind alle benötigten Eingaben gemacht. Mit der Entertaste werden die Eingaben bestätigt, anschließend versucht Let’s Encrypt über die angegebene Internetadresse eine Verbindung zum Homeserver aufzubauen, um sicherzustellen, dass man auch wirklich über die Rechte an der Domain verfügt. Wenn dies funktioniert, wird das Verschlüsselungszertifikat ausgestellt und automatisch eingerichtet.

Let's Encrypt Zertifikat einrichten

Wenn alles geklappt hat, lässt sich Nextcloud nun über eine verschlüsselte Verbindung aufrufen, indem man https:// vor der DynDNS-Adresse im Browser eingibt. Der Webbrowser zeigt dann ein verschlossenen Schloss vor der Domain an.

Verschlüsselte Verbindung zu Nextcloud eingerichtet

Updates für Nextcloud einspielen

Wenn Updates für Nextcloud verfügbar sind, muss das Snap-Paket aktualisiert und Nextcloud neu gestartet werden. Dies geschieht mit folgenden Kommandos.

sudo sudo snap refresh nextcloud
sudo nextcloud.occ upgrade

sudo snap restart nextcloud

Samba-Freigaben in Nextcloud einbinden

Damit man über Nextcloud auch auf die Dateien zugreifen kann, die über die lokalen Netzwerkfreigaben auf dem Homeserver gespeichert wurden, müssen diese Ordner noch in Nextcloud eingebunden werden.

Anzeige:

Das Problem dabei ist, dass Nextcloud und Samba mit unterschiedlichen Systembenutzern laufen, was zu Berechtigungsproblemen führt. Aus diesem Grund kann man nicht einfach die Nextcloud-Datenverzeichnisse der einzelnen Benutzer über Samba freigeben. Der Snap-Dienst, der Nextcloud ausführt, läuft als Rootuser, was unter Windows dem Administratoraccount entspricht. Samba läuft mit einem eigenen Systembenutzer, mit sehr viel weniger Rechten, sodass Samba gar keinen Zugriff auf die Daten in Nextcloud hat.

Den Samba-Server als Root laufen zu lassen wäre eine Lösung, allerdings ein sicherheitstechnisches Desaster, weshalb man dies auf keinen Fall in Erwägung ziehen sollte. Das Nextcloud hier als Root ausgeführt wird ist hingegen nicht vergleichbar. Denn tatsächlich läuft nur der Snap-Dienst als Root, der die einzelnen Snap-Pakete in einer vom restlichen System abgeschotteten Umgebung ausführt.

Einbinden von Samba-Freigaben mit dem External-Storage-Plugin (funktioniert derzeit nicht)

Die bisherige Lösung mit einer klassischen Nextcloud-Installation war das External-Storage-Plugin von Nextcloud. Dies bietet auch eine Schnittstelle für Samba Freigaben an. Damit greift Nextcloud quasi wie jeder andere Computer auf die Freigaben zu, sodass hier keine Berechtigungsprobleme entstehen. Eine einfache wie elegante Lösung.

Leider funktioniert das Einbinden von Samba-Freigaben über das External-Storage-Plugin nicht, wenn man Nextcloud als Snap-Paket einsetzt. Ein entsprechender Bugreport ist schon seit Längerem vorhanden. Allerdings ist das Problem entweder schwer zu lösen, oder es ist den Entwicklern nicht wichtig genug. So oder so, derzeit scheidet diese Lösung leider aus.

Trotzdem möchte ich an dieser Stelle auf diese Möglichkeit hinweisen, falls sich die Situation in Zukunft ändert.

Samba-Freigaben mit Bindfs in Nextcloud einbinden

Als Alternative werden die Samba-Freigaben mittels Bindfs in Nextcloud eingebunden. Bindfs ermöglicht es, Ordner an zusätzlichen Stellen im Dateisystem mit anderen Benutzerrechten einzubinden.

Man kann damit beispielsweise die Samba-Freigabe „Tom“ in das Datenverzeichnis des Nextcloud-Users „Tom“ verlinken. Aus Sicht von Nextcloud sieht es dabei so aus, als ob die Dateien Root gehören, also dem Systemuser, der Snaps und damit auch Nextcloud ausführt. Tatsächlich werden die Daten jedoch mit dem Benutzer smb geschrieben, also dem Systembenutzer von Samba.

Das Problem dabei ist, dass jedes Mal, wenn eine Datei über die Samba-Freigaben hinzugefügt oder geändert wurde mit Nextcloud ein Filsystem-Scan durchgeführt werden muss. Ansonsten bekommt Nextcloud von der neuen Datei nichts mit und die Datei wird in Nextcloud nicht angezeigt. Dieses Problem kann man vermeiden, indem man den mit Bindfs erstellten Ordner wiederum mit dem External-Storage-Plugin in Nextcloud einbindet.

In diesem Beispiel passiert also folgendes:

  • Der Order mit der Samba-Freigabe /mnt/storage/shares/tom wird mit Bindfs nach /mnt/storage/nextcloud-bindfs/heimnetz-tom verlinkt.
  • Wenn nun Nextcloud Dateien nach /mnt/storage/nextcloud-bindfs/heimnetz-tom schreibt, werden diese tatsächlich mit dem Systemuser smb nach /mnt/storage/shares/tom geschrieben. Davon merkt Nextcloud aber nichts.
  • Der Ordner /mnt/storage/nextcloud-bindfs/heimnetz-tom wird über das Nextcloud-Plugin „External Storage“ in den Nextcloud-Account von Tom eingebunden.

Damit ist die Samba-Freigabe „Tom“ auch über Nextcloud nutzbar. Änderungen werden immer mit demselben Systemnutzer auf die Festplatte geschrieben, sodass es nicht zu Berechtigungsproblemen kommt. Außerdem sind Änderungen an Dateien immer sofort in Nextcloud, als auch in den Samba-Freigaben sichtbar.

Anzeige:

Bindfs installieren und Ordner mit anderen Benutzerrechten mounten

Zunächst einmal wird Bindfs installiert.

sudo apt install bindfs

Dann muss man für jede einzelne Samba-Freigabe die mit Nextcloud verbunden werden soll eine Zeile in die Datei /etc/fstab einfügen. In diesem Beispiel wird die Nextcloud-Freigabe „Tom“ zur Nextcloud von Tom hinzugefügt.

Zuerst wird der Ordner angelegt, in welchem die Samba-Freigabe mit den Benutzerrechten von Root eingebunden wird.

sudo mkdir -p /mnt/storage/nextcloud-bindfs/heimnetz-tom

Dann wird die Datei /etc/fstab im Texteditor geöffnet.

sudo nano /etc/fstab

Hier wird folgende Zeile eingefügt. Achtung: Es handelt sich um eine, sehr lange Zeile, die ohne Zeilenumbruch in die Konfigurationsdatei eingefügt werden muss.

bindfs#/mnt/storage/shares/tom /mnt/storage/nextcloud-bindfs/heimnetz-tom fuse force-user=root,force-group=root,create-for-user=smb,create-for-group=smb,chgrp-ignore,chown-ignore,chmod-ignore 0 0
Ordner mit Bindfs mounten

Für jede Samba-Freigabe, die man in einen Nextcloud-Benutzeraccount einbinden will, muss dieser Vorgang wiederholt werden. Für die Freigabe Media muss also der Ordner /mnt/storage/nextcloud-bindfs/heimnetz-media angelegt werden.

Dann wird eine weitere Zeile in die /etc/fstab eingefügt. Dort wird /mnt/storage/shares/tom durch /mnt/storage/shares/media ersetzt und /mnt/storage/nextcloud-bindfs/heimnetz-tom wird durch /mnt/storage/nextcloud-bindfs/heimnetz-media ersetzt.

Um die Konfiguration zu aktivieren wird folgender Befehl ausgeführt.

sudo mount -a

Ordner in Nextcloud einbinden

Um die soeben erstellten Ordner in Nextcloud verfügbar zu machen, wird nun das External-Storage-Plugin installiert. Hierzu loggt man sich mit dem bei der Installation erstellten Administratoraccount in Nextcloud ein.

Dann klickt man oben rechts auf das Icon mit dem Anfangsbuchstaben des Benutzernamens und anschließend auf „+ Apps„.

Hier findet man nun bei den deaktivierten Apps die App „External Storage Support“ die mit einem Klick auf Aktivieren installiert wird.

External-Storage-Support-Plugin aktivieren

Zum Einbinden der Ordner in Nextcloud klickt man wieder auf das Icon oben rechts und anschließend auf Einstellungen. Im linken Bereich findet man verwirrender Weise zwei Punkte mit dem Namen „Externe Speicher„. In diesem Fall wird der untere benötigt.

  • Ordnername: Mit diesem Namen erscheint die Samba-Freigabe in Nextcloud. Es kann ein beliebiger Name vergeben werden.
  • Externer Speicher: Lokal
  • Authentifizierung: Keine
  • Konfiguration: /mnt/storage/nextcloud-bindfs/heimnetz-tom
  • Verfügbar für: Alle Nextcloud-Benutzernamen, die auf diese Freigabe zugreifen dürfen.

Mit einem Klick auf den Haken wird der Ordner in Nextcloud aktiviert.

Ordner mit dem External-Storage-Plugin in Nextcloud einbinden

Sicherheitshinweis: Wenn der Haken bei „Benutzern erlauben, externen Speicher einzubinden“, darf jeder Nextcloudnutzer Ordner außerhalb seines Nextcloud-Accounts selbständig einbinden. Das bedeutet, wenn Lena den Pfad /mnt/storage/nextcloud-bindfs/heimnetz-tom kennt, kann sie die eigentlich privaten Dateien von Tom einbinden.

Wenn man nun über das Ordner-Icon in der Menüleiste zu den Dateien in Nextcloud wechselt, findet man hier den neuen Ordner Heimnetz-Tom. Hierüber hat man nun Zugriff auf die Dateien aus der Samba-Freigabe.

Ordner mit dem External-Storage-Plugin in NExtcloud eingefügt.

Übersicht: Ubuntu 20.04 Homeserver/NAS, Teil 1
Installation des Betriebssystems: Ubuntu 20.04 Homeserver/NAS, Teil 2
Grundkonfiguration: Ubuntu 20.04 Homeserver/NAS, Teil 3
Ordnerfreigaben: Ubuntu 20.04 Homeserver/NAS, Teil 4
Nextcloud: Ubuntu 20.04 Homeserver/NAS, Teil 5
Plex Mediaserver: Ubuntu 20.04 Homeserver/NAS, Teil 6
Backup: Ubuntu 20.04 Homeserver/NAS, Teil 7


Anzeige:

3 Kommentare

  1. Meiner Erfahrung nach ist Nextcloud als Snap zu installieren eine schlechte Idee. Wie du selbst beschreibst muss einiges angepasst werden; ausserdem sind Snaps meistens langsamer und ressourcenfressender, also nichts was ich auf einem Server will 🙂
    Bin eben ein alter weißer Mann und finde die herkömmliche Methode mit .deb ( hier beschrieben https://docs.nextcloud.com/server/19/admin_manual/installation/example_ubuntu.html) wesentlich ressourcenschonender

    • Das sehe ich ähnlich. Ich habe auf meinem NAS (Ubuntu 20.04), den ich vor kurzem eingerichtet habe, Nextcloud so installiert wie in der Ubuntu 18.04-Anleitung beschrieben. Bei Snaps gab es schon oft Probleme bei mir.

  2. Erst einmal danke für die großartige Tutorialreihe. Bis auf den Plex Server bin ich dieser gefolgt und es hat alles großartig funktioniert 🙂

    Bei einem Punkt bin ich von diesem Tutorial abgewischen, und der hat mich nun zwei Tage gekostet: ich habe mein Software-Raid mit zfs angelegt (4 HDDs mit raidz2).
    Die Ordner analog zu „mnt/storage/shares/tom“ habe ich dann alle als eigene datasets angelegt.

    Soweit hat auch alles damit gut funktioniert — bis ich das erste mal einen Neustart des Servers gemacht habe. Die Einträge in /etc/fstab, um die bindfs-Links zu setzen, werden wohl von systemd umgesetzt, bevor die zfs-Dateisysteme gemountet sind.

    Meine nun funktionierende Lösung ist nun folgende:
    Für jedes Link-Ziel „/mnt/storage/apps/nextcloud/ORDNER“ habe ich unter /etc/systemd/system eine datei „mnt-storage-apps-nextcloud-ORDNER.mount“ mit dem Inhalt

    [Unit]
    Description=Mount data directory with permission
    Requires=mnt-storage-ORDNER.mount
    After=mnt-storage-ORDNER.mount
    After=zfs-mount.service
    Requires=zfs-mount.service
    RequiresMountsFor=/mnt/storage

    [Mount]
    What=/mnt/storage/ORDNER
    Where=/mnt/storage/apps/nextcloud/ORDNER
    Type=fuse.bindfs
    Options=force-user=root,force-group=root,create-for-user=smb,create-for-group=smb,chgrp-ignore,chown-ignore,chmod-ignore

    [Install]
    WantedBy=multi-user.target

    angelegt. Diese Datei ersetzt den Eintrag in /etc/fstab und sorgt dafür, dass das mounten und linken auch in der richtigen Reihenfolge geschieht.
    Ich bin nicht sicher, ob manche Einträge in der Datei redundant sind oder besser andere Abhängigkeiten hätten. Dies ist allerdings die erste Version, die das Ganze bei mir zum laufen gebracht hat.

    Wer weiß, vielleicht ist diese Info ja hilfreich für jemanden..

Hinterlasse einen Kommentar

Please enter your comment!
Die Angabe von Name oder Webseite ist optional. Weitere Informationen: siehe Datenschutzerklärung

Please enter your name here