Die Einrichtung und Pflege einer Nextcloud und eines gesamten LAMP-Stacks ist für viele Anwender eine abschreckende Herausforderung. Leichter ist dies mit einem fertigen Snap Paket, das direkt von der Nextcloud-Community bereit gestellt wird und eine komplette Nextcloud-Umgebung mitbringt.
Dieser Beitrag ist ein Exkurs der Serie Cloud in Eigenregie (siehe: Cloud in Eigenregie I: Vorbemerkungen). Dort wurde lediglich abstrakt auf die Installationsmöglichkeiten einer Cloud Bezug genommen.
Die Snap-Variante von Nextcloud läuft auf jeder Distribution, die Snap-Pakete unterstützt. Als Zusatzmodule steht dies bereits für die meisten Distributionen bereit. Direkt in den Paketquellen hat dies neben Ubuntu auch Debian 10 “Buster”. Die anderen unterstützten Distributionen dürften kaum Relevanz für Server besitzen.
Nextcloud installieren
Zuerst muss Snap für Debian erst einmal installiert werden.
# apt-get install snapd
Anschließend installiert man das Snap-Paket. Zuerst lädt die Routine dann noch die fehlende Core-Umgebung für Snap-Pakete um anschließend das Nextcloud Paket einzurichten.
# snap install nextcloud
Das Snap-Paket bringt neben der Nextcloud auch noch einen kompletten LAMP-Stack mit: Apache, MySQL PHP und Redis. Dies benötigt natürlich ein wenig Speicherplatz.
Exkurs: Ports
Wichtig ist, dass kein anderer Apache-Server auf die Standardports lauscht, da diese sich ansonsten in die Quere kommen. Das dürfte aber kaum ein Problem sein, denn wer bereits einen kompletten LAMP-Stack pflegt wird sich nicht zusätzlich noch das Snap-Paket einrichten und dadurch doppelten Ressourcenverbrauch riskieren. Wer dennoch bereits einen LAMP-Stack nutzt muss die Ports des Snap-Pakets ändern. Beispielsweise auf folgende Konfiguration:
# snap set nextcloud ports.http=81
# snap set nextcloud ports.https=444
Snap-Pakete haben nur limitierte Zugriffsrechte auf das System. Nextcloud bietet bei der Einrichtung die Möglichkeit einen spezifischen Speicherort für die Daten außerhalb der Nextcloud-Umgebung festzulegen. Das sollte man auch unbedingt machen (unabhängig ob Snap-Variante oder nicht!). Damit das Nextcloud-Snap dies allerdings darf muss noch folgender Befehl eingegeben werden:
# snap connect nextcloud:removable-media
Bevor man die Initialisierung startet legt man nun noch den Speicherpfad für die Daten fest. Dazu bearbeitet man die folgende Datei:
# nano /var/snap/nextcloud/current/nextcloud/config/autoconfig.php
In folgender zeile sollte der anvisierte Speicherpfad stehen:
'directory' => '/media/Daten/nextcloud',
Bei Problemen mit der Installation kann man Versuchen die Rechte an dem Ordner dem Apache-Nutzer zuzuweisen. Auf manchen Setups ist dies aber scheinbar nicht notwendig.
# chown www-data:www-data /media/Daten/nextcloud
Anschließend muss man noch den PHP Service neustarten:
# snap restart nextcloud.php-fpm
Abschließend ruft man die Instanz im internen Netz über die interne IP-Adresse oder den Hostname des Servers auf. Wenn alles funktioniert erscheint die übliche Initialisierungsroutine von Nextcloud. Hier legt man dann noch die Zugangsdaten für das Konto fest.
Sofern man die Nextcloud lediglich im internen Heimnetz nutzen möchte war es das bereits. Das Snap-Variante reagiert nicht so performant wie eine normale Installation, bedeutet aber deutlich weniger Wartungsaufwand und erfordert viel werniger Kenntnisse in der Server-Administration. Insbesondere was die Einrichtung eines Redis-Cache und ähnliches betrifft.
Let’s Encrypt Zertifikat einrichten
Sollte eine Erreichbarkeit außerhalb des Heimnetzes erforderlich sein, muss man für eine verschlüsselte Verbindung zusätzlich ein Zertifikat anfordern und einbinden. Seit einigen Jahren nutzt man dafür eigentlich ausschließlich Let’s Encrypt. Eine Erreichbarkeit via DynDNS und Port-Freigabe ist hierfür erforderlich, siehe: Externer Zugriff auf den Server).
Die Einrichtung ist dann bei der Snap-Variante sehr einfach. Folgender Befehl startet die Routine:
# nextcloud.enable-https lets-encrypt
Hier bestätigt man die Anforderungen und trägt eine Mail-Adresse und die Domain, unter der die Nextcloud-Instanz zu erreichen ist, ein. Anschließend kann man die Nextcloud-Instanz via HTTPS Verbindung aufrufen.
Änderung sollte in der config.php am Array-key ‘datadirectory’ vorgenommen werden, nicht autoconfig.php, dann hat es bei mir wie beschrieben geklappt
Danke für die Anleitung. Ich habe sie befolgt und dann 2 Stunden lang rumgeeiert, bis ich herausgefunden habe: snap erlaubt keinen Zugriff außerhalb von /var/snap/nextcloud und dann eben wenn freigeschaltet /media und /mnt. Meine SSD war aber wo anders gemountet. Fehlermeldung war immer .ocdata wurde nicht gefunden. Die war aber da. Logfiles von Nextcloud sagten garnix.
Erst später habe ich mich erinnert, dass ich mal Gimp über snap installiert hatte und dann nicht auf meine Fotos zugreifen konnte, weil sie nicht in /home liegen.