Nextcloud per snapd installieren

Datum

Snap Apps (kurz: snaps) sind ein Paketformat, das maßgeblich von Canonical entwickelt und konfliktfrei zur „normalen“ Paketverwaltung installiert und genutzt werden kann.

Ursprünglich war es vor allem für den Einsatz im Server- bzw. Cloud-Umfeld, also auch für das Internet of Things gedacht, inzwischen ist es aber auch in den „normalen“ Desktop-Distributionen zu finden.

Im Gegensatz zu DEB-Paketen, können snaps alle benötigten Dateien und Abhängigkeiten, wie z.B. Binaries, Bibliotheken und Konfigurationsdateien, enthalten. Alle Dateien sind nach der Installation in einem einzigen Verzeichnis vorhanden. snaps können teilweise oder komplett aktualisiert werden. Da jede Version eines snaps in ein neues Verzeichnis installiert wird, werden keine Dateien überschrieben und die alte Programmversion bleibt komplett erhalten. So kann man bei Problemen auf einfache Art und Weise die vorherige Version verwenden („Rollback“). Dadurch, dass in jeder Version eines snap-Pakets alle benötigten Dateien enthalten sind, können mehrere Gigabyte an Daten im Verzeichnis /var/lib/snapd/snaps zusammenkommen. Man kann aber die Anzahl der alten Versionen begrenzen oder snaps manuell deinstallieren.

Quelle: wiki.ubuntuusers.de

Hinweis: Bei einer Installation mit snapd gilt /var/snap/nextcloud/ immer als Basis-Verzeichnis, in dem alle notwendigen Dateien angelegt bzw. abgelegt werden. Der Zugriff von der Nextcloud-Instanz auf ein Ordner außerhalb dieses Basis-Verzeichnisses ist meiner Kenntnis nach nicht möglich. D.h. es müssen sich alle relevanten Dateien (z.B. Konfigurationen) unterhalb des Basis-Verzeichnisses befinden.

Installation per Snapd

Natürlich sollte auf dem entsprechenden System snap installiert sein.

root@nextcloud01:~# dpkg -l | grep snap
ii  snapd                                 2.42.1+18.04                                    amd64        Daemon and tooling that enable snap packages

nun kann man schauen, ob das gewünschte Paket verfügbar ist:

root@nextcloud01:~# snap find nextcloud
Name                       Version                    Publisher         Notes  Summary
nextcloud                  17.0.3snap1                nextcloud✓        -      Nextcloud Server - A safe home for all your data

Da Nextcloud aktuell in der Version Latest stable version: 18.0.1 unter nextcloud.com verfügbar, erkennt man das das snap Paket eine Major-Version zurückliegt.
Wem das nicht stört kann sich das nextcloud Paket per snap install nextcloud installieren.

root@nextcloud01:~# snap install nextcloud
nextcloud 17.0.3snap1 from Nextcloud✓ installed

Starten der Nextcloud-Instanz

Sofern die Instanz noch nicht läuft kann man diese per snap start nextcloud starten.
Nun sollten auch alle benötigten Daemons laufen:

root@nextcloud01:~# snap services nextcloud
Service                    Startup  Current  Notes
nextcloud.apache           enabled  active   -
nextcloud.mdns-publisher   enabled  active   -
nextcloud.mysql            enabled  active   -
nextcloud.nextcloud-cron   enabled  active   -
nextcloud.nextcloud-fixer  enabled  active   -
nextcloud.php-fpm          enabled  active   -
nextcloud.redis-server     enabled  active   -
nextcloud.renew-certs      enabled  active   -

Wenn man nun die IP/Domain des entsprechenden Servers im Browser aufruft sollte man die Einrichtung eines Admin-Benutzers zu sehen bekommen:

Und kann anschließend die Installation damit abschließen.

Aktivieren von TLS

nextcloud bietet die Möglichkeit die Verbindung zur Web-UI mit Let’s Encrypt SSL-Zertifikaten zu verschlüsseln.
Dafür führt man als root den Befehl nextcloud.enable-https lets-encrypt aus und folgt den entsprechenden Anweisungen.

root@nextcloud01:~# nextcloud.enable-https lets-encrypt
In order for Let's Encrypt to verify that you actually own the
domain(s) for which you're requesting a certificate, there are a
number of requirements of which you need to be aware:
...

Dabei muss man zuerst sicherstellen, dass sowohl Port 80 als auch 443 auf dem Server erreichbar sind.
Nun gibt man eine E-Mail Adresse an, an welche später wichtige Mitteilungen gesendet werden können und gibt anschließend noch die entsprechende Domain an, unter welcher die nextcloud Instanz erreichbar ist.
Anschließend sollten die Zertifikate automatisch generiert werden und die Instanz ist auch mit https:// erreichbar.

Externen Storage als Datenverzeichnis

Wenn man an seiner Instanz z.B. einen NFS-Storage angebunden hat und diesen als Storage für seine nextcloud Daten verwenden möchte so geht man folgende Schritte:

1.) Stoppen der nextcloud Instanz per snap stop nextcloud
2.) Erstellen eines Ordners unterhalb von /var/snap/nextcloud/common/nextcloud/data
3.) Mounten des NFS-Storage in den eben erstellten Ordner (z.B. per mount -t nfs ...)
4.) Anpassen des datadirectory Parameters in der /var/snap/nextcloud/19299/nextcloud/config/config.php
5.) Starten der Instanz per snap start nextcloud

Backup und Restore

Backup

Um ein Backup zu erstellen verwendet man de Befehl nextcloud.export

root@nextcloud01:~# nextcloud.export -h
Usage:
    nextcloud.export [OPTIONS]
    Export data suitable for migrating servers. By default this
    includes the Nextcloud database, configuration, and data
    (equivalent to running nextcloud.export -abcd).

Available options:
    -h: Display this help message
    -a: Include the (non-default) apps
    -b: Include the database
    -c: Include the config
    -d: Include the data (can be quite large)

Sofern man z.B. nur seine aktuelle Konfiguration sichern möchte, verwendet man nextcloud.export -bc

root@nextcloud01:~# nextcloud.export -bc
WARNING: This functionality is still experimental and under
development, use at your own risk. Note that the CLI interface is
unstable, so beware if using from within scripts.

Enabling maintenance mode... done
Exporting database...
Exporting config...

Successfully exported /var/snap/nextcloud/common/backups/20200303-183337
Disabling maintenance mode... done

Dabei werden die entsprechenden Dateien immer unterhalb von /var/snap/nextcloud/common/backups/ mit den aktuellen Zeitstempeln abgelegt.

root@nextcloud01:/var/snap/nextcloud/common/backups/20200303-183337# ll
total 120
drwxr-x--- 2 root root   4096 Mär  3 18:33 ./
drwxr-xr-x 3 root root   4096 Mär  3 18:33 ../
-rw-r--r-- 1 root root   1232 Mär  3 18:33 config.php
-rw-r--r-- 1 root root 102625 Mär  3 18:33 database.sql
-rw-r--r-- 1 root root      2 Mär  3 18:33 format

Restore

Der Restore eines Backups geschieht per nextcloud.import

root@nextcloud01:~# nextcloud.import 
WARNING: This functionality is still experimental and under
development, use at your own risk. Note that the CLI interface is
unstable, so beware if using from within scripts.

Enabling maintenance mode... done
Missing parameter <backup dir>
Usage:
    nextcloud.import [OPTIONS] <backup dir>
    Import data exported from another Nextcloud snap instance.
    By default this imports the database, config, and data
    (equivalent to running nextcloud.import -abcd).

Available options:
    -h: Display this help message
    -a: Import the (non-default) apps
    -b: Import the database
    -c: Import the config
    -d: Import the data

Ein Beispiel für das zurückspielen der Datenbank und der Konfiguration sieht dann so aus:

root@nextcloud01:~# nextcloud.import -bc /var/snap/nextcloud/common/backups/20200303-183337
WARNING: This functionality is still experimental and under
development, use at your own risk. Note that the CLI interface is
unstable, so beware if using from within scripts.

Enabling maintenance mode... done
Dropping existing database... done
Creating new database... done
Granting database privileges to existing user... done
Importing database...
Importing config...
Disabling maintenance mode... done

Aktualisieren der Nextcloud-Instanz

Der große Vorteil an snapd Paketen ist, dass sich diese auch automatisch selbst aktualisieren sobald eine neue Version verfügbar ist.

Autor
Kategorien Server, Linux

PRTG Map