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.