Private Cloud
Viele Leute möchten Cloud-Diensten wie Microsoft Onedrive, Google Drive, Apple iCloud oder Dropbox ihre Daten nicht anvertrauen, sehen aber durchaus den Komfort und die Funktionalität dieser Dienste, z.B. automatische Sicherung von Smartphone-Fotos. Eine Lösung des Problems ist eine eigene private Cloud zu betreiben. Man muß dazu nicht unbedingt Webhosting mit eigener Domain nutzen. Für viele Fälle ist der Betrieb eines Servers in den eigenen 4 Wänden auf einem Mini-PC wie z.B. Intel NUC oder Raspberry PI eine Alternative. Dieser Server kann i.d.R. via VPN vom Internet zugänglich gemacht werden. Damit ist die Lösung einer Public Cloud Software ebenbürtig. Mit Snappy steht ein Paketmanager zur Verfügung um Anwendungen vergleichsweise einfach zu installieren, konfigurieren und zu aktualisieren. Damit ist es auch für ambitionierte Linux-Einsteiger möglich die Anwendung Nextcloud zu installieren und betreiben, die als freie Alternative zu den vorgenannten Diensten verfügbar ist.
Ubuntu Server
Ubuntu ist die Linux Distribution der Fa. Canonical und basiert auf Debian Linux. Ubuntu ist vergleichsweise einfach zu bedienen und gut dokumentiert. Es existiert eine LTS-Variante mit langer Verfügbarkeit von Softwareupdates. Ubuntu Server ist eine Variante für den Dauerbetrieb von Anwendungen, die auf eine grafische Oberfläche verzichtet. Hier wird die aktuelle Version Ubtuntu Server 18.04.03 LTS verwendet.
Snappy
Snappy ist eine distributionsübergreifende Softwareverteilung und Paketverwaltung für Linux. Es werden sowohl Updates als auch Rollbacks unterstützt (Umstellung auf neuere und ältere Versionen möglich). Man muß sich i.d.R. nicht um Abhängkeiten zu anderer Software kümmern, da alle benötigten Pakete mit Snappy mitgeliefert werden. Das soll die Installation und Wartung komplexer Software deutlich vereinfachen.
Nextcloud
Nextcloud ist eine freie Alternative zu Dropbox und Co., verfügt über Dokumenten- und Medienverwaltung und lässt sich mit zahlreichen Zusatzfunktionen ausstatten.
Snappy Nextcloud ist die über Snappy bereitgestellte Nextcloud Anwendung, die die Installation und Wartung erleichert. Es besteht aus folgenden Softwarekomponenten:
- Nextcloud 16.0.5
- Apache 2.4
- PHP 7.2
- MySQL 5.7
- Redis 4.0
- mDNS for network discovery
Neben klassischem LAMP-Stack (Linux inkl. Webserver, Programmiersprache und Datenbank) ist noch eine Caching-Funktionalität und bessere Netzwerkerkennung für Heimnetze (Multicast DNS) integriert. Es stehen diverse Nextcloud-Versionen in verschiedenen Kanälen bereit.
Hardware oder Virtualisierung?
Als Betriebssystem soll Ubuntu Server installiert werden. Das kann direkt auf Hardware installiert werden. Im vorliegenden Fall wird Ubuntu Server in eine virtuelle Maschine installiert. Die Vorgehensweise bei der Ubuntu-Installation ist identisch. Mit Virtualisierung kann man mehrere Betriebssysteme parallel auf einer Rechnerhardware betreiben. Im Beispiel wird VMware ESXi in der kostenlosen Standalone-Variante verwendet. Eine freie Alternative dazu wäre z.B. KVM.
Je nach Umfang und Anspruch an Sicherheit kann eine Trennung von Betriebsssystem/Anwendung und Dokumente, Bilder Videos Sinn ergeben. Im Beispiel sollen die Nextcloud-Dateien auf einem separaten Datenträger gespeichert werden. Das könnte auch ein Wechseldatenträger sein.
Betriebssystem
Ubuntu-Server installieren
Wechseldatenträger mit Ubuntu-Server bereitstellen (USB-Stick, CD, ISO-Datei bei Virtualisierung), Rechner bzw. VM einschalten und ggf. Boot-Menü des BIOS/UEFI aufrufen, falls nicht automatisch Ubuntu gestartet wird.
Sprache auswählen für Betriebssystem und Tastatur
Netzwerkkarte konfigurieren (Voreinstellung DHCP / autom. IP-Adressvergabe, umstellbar auf manuelle IP-Adresszuweisung), Proxyserver (i.d.R. bei privat leer), Repository (Downloadquellen für Ubuntu)
Datenträger für Betriebssystem einrichten – mit LVM ist man flexibler, wenn der Platzbedarf sich später ändert. Die kleine 50GB Disk wird für das Betriebssystem verwendet, die große 500GB Disk später für Nextcloud-Daten eingerichtet. Im Gegensatz zum Vorschlag habe ich das Root-Filesystem auf 20GB vergrößert.
Benutzer und Hostname (Rechnername) einrichten, SSH-Zugang aktivieren
Nextcloud via Snappy installieren
Aus verfügbaren Snaps Nextcloud auswählen.
Installation abschließen
Installation abschließen, Reboot und abschließend testweise an Console anmelden.
Ubuntu aktualisieren
Ubuntu aktualisieren und falls erforderlich neu starten
x@nextcloud:~$ sudo apt-get update x@nextcloud:~$ sudo apt-get upgrade x@nextcloud:~$ sudo apt autoremove x@nextcloud:~$ if [ -f /var/run/reboot-required ]; then systemctl reboot ; fi
Nextcloud-Daten
Die Nextcloud-Daten liegen im Idealfall nicht auf der selben Disk wie das Betriebssystem. Um von Nextcloud den Zugriff auf einen separaten Datenträger, ggf. auch Wechseldatenträger, zu ermöglichen müssen Anpassungen durchgeführt werden. Wenn man die Nextcloud-Daten im root-Dateisystem lässt sind die nachfolgenden Arbeitsschritte für die Umstellung auf einen anderen Datenträger nicht erforderlich.
Die Verwaltung von Datenträgern, d.h. Typen, udev, Partitionierung, Dateisysteme und Volumemanager, ist nicht Thema dieses Artikels und wird deshalb nicht erschöpfend erklärt.
Datenträger
Zunächst verschafft man sich einen Überblick über die vorhandene Installation und deren Datenträger, Partitionen, Dateisysteme, Logical Volume Manager (LVM) mit physical volumes (pv), volumegroups (vg), logical volumes (lv) und udev.
x@nextcloud:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop0 7:0 0 88,5M 1 loop /snap/core/7270 loop1 7:1 0 211,7M 1 loop /snap/nextcloud/16739 loop2 7:2 0 89,1M 1 loop /snap/core/8268 sda 8:0 0 50G 0 disk ├─sda1 8:1 0 1M 0 part ├─sda2 8:2 0 1G 0 part /boot └─sda3 8:3 0 49G 0 part └─ubuntu--vg-ubuntu--lv 253:0 0 20G 0 lvm / sdb 8:16 0 500G 0 disk sr0 11:0 1 1024M 0 rom x@nextcloud:~$ swapon -s Filename Type Size Used Priority /swap.img file 4194300 0 -2 x@nextcloud:~$ sudo fdisk -l [sudo] password for x: Disk /dev/loop0: 88,5 MiB, 92778496 bytes, 181208 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/loop1: 211,7 MiB, 221966336 bytes, 433528 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/loop2: 89,1 MiB, 93417472 bytes, 182456 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/sda: 50 GiB, 53687091200 bytes, 104857600 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: BFC2398B-5830-4A18-980C-A2DA6EAE730D Device Start End Sectors Size Type /dev/sda1 2048 4095 2048 1M BIOS boot /dev/sda2 4096 2101247 2097152 1G Linux filesystem /dev/sda3 2101248 104855551 102754304 49G Linux filesystem Disk /dev/sdb: 500 GiB, 536870912000 bytes, 1048576000 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/ubuntu--vg-ubuntu--lv: 20 GiB, 21474836480 bytes, 41943040 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes x@nextcloud:~$ blkid /dev/sda2: UUID="290e503e-b047-47f7-9e27-bc50c446933b" TYPE="ext4" PARTUUID="b190493a-ade7-4a42-9b8b-189e90e40464" /dev/sda3: UUID="AGntCD-2cz3-Vn76-lLYn-wI9H-Tln3-ribtI8" TYPE="LVM2_member" PARTUUID="b6f26415-7c52-40a8-a576-4f3348da9ed4" /dev/mapper/ubuntu--vg-ubuntu--lv: UUID="c93179ef-ee59-44de-88e9-f8526459f04f" TYPE="ext4" x@nextcloud:~$ sudo pvs PV VG Fmt Attr PSize PFree /dev/sda3 ubuntu-vg lvm2 a-- <49,00g <29,00g x@nextcloud:~$ sudo vgs VG #PV #LV #SN Attr VSize VFree ubuntu-vg 1 1 0 wz--n- <49,00g <29,00g x@nextcloud:~$ sudo lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert ubuntu-lv ubuntu-vg -wi-ao---- 20,00g x@nextcloud:~$ df -h Filesystem Size Used Avail Use% Mounted on udev 3,9G 0 3,9G 0% /dev tmpfs 798M 1,2M 797M 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv 20G 6,4G 13G 35% / tmpfs 3,9G 0 3,9G 0% /dev/shm tmpfs 5,0M 0 5,0M 0% /run/lock tmpfs 3,9G 0 3,9G 0% /sys/fs/cgroup /dev/sda2 976M 77M 832M 9% /boot /dev/loop0 89M 89M 0 100% /snap/core/7270 /dev/loop1 212M 212M 0 100% /snap/nextcloud/16739 tmpfs 798M 0 798M 0% /run/user/1000 /dev/loop2 90M 90M 0 100% /snap/core/8268 x@nextcloud:~$ more /etc/fstab UUID=c93179ef-ee59-44de-88e9-f8526459f04f / ext4 defaults 0 0 UUID=290e503e-b047-47f7-9e27-bc50c446933b /boot ext4 defaults 0 0 /swap.img none swap sw 0 0
- Die 50GB Disk /dev/sda wird für Ubuntu verwendet.
- Partition /dev/sda1 ist BIOS Boot
- Partition /dev/sda2 enthält /boot, Dateisystem ext4
- Partition /dev/sda3 ist ein physical volume der volumegroup ubuntu-vg
- logical volume ubuntu-lv enthält / (root), Dateisystem ext4
- SWAP ist keine eigene Partition mehr, sondern eine Datei im root-Dateisystem (/swap.img).
- Die Mountpoints der /etc/fstab sind mit UUID statt devicename ausgeführt. Mit udev-Regeln werden Bezeichner für devices so erzeugt, dass auch nach Umstecken von Datenträgern an andere Anschlüsse die UUID eindeutig bleiben.
- Die 500GB Disk /dev/sdb ist noch nicht verwendet. Sie soll für Nextcloud-Daten eingesetzt werden
Physical Volume /dev/sdb anlegen (durch die Zuweisung der kompletten Disk zu LVM lässt sich später in einer VM die Disk online einfach vergrößern).
x@nextcloud:~$ sudo pvcreate /dev/sdb [sudo] password for x: Physical volume "/dev/sdb" successfully created. x@nextcloud:~$ sudo pvs PV VG Fmt Attr PSize PFree /dev/sda3 ubuntu-vg lvm2 a-- <49,00g <29,00g /dev/sdb lvm2 --- 500,00g 500,00g x@nextcloud:~$ sudo pvdisplay /dev/sdb "/dev/sdb" is a new physical volume of "500,00 GiB" --- NEW Physical volume --- PV Name /dev/sdb VG Name PV Size 500,00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID Y16PrS-D1D2-XtRs-x2uu-tXlD-5Fgu-arigFB
volumegroup nextcloud-vg anlegen und physical volume /dev/sdb zuweisen.
x@nextcloud:~$ sudo vgcreate nextcloud-vg /dev/sdb Volume group "nextcloud-vg" successfully created x@nextcloud:~$ sudo vgs VG #PV #LV #SN Attr VSize VFree nextcloud-vg 1 0 0 wz--n- <500,00g <500,00g ubuntu-vg 1 1 0 wz--n- <49,00g <29,00g x@nextcloud:~$ sudo vgdisplay nextcloud-vg --- Volume group --- VG Name nextcloud-vg System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size <500,00 GiB PE Size 4,00 MiB Total PE 127999 Alloc PE / Size 0 / 0 Free PE / Size 127999 / <500,00 GiB VG UUID BBThGF-PAji-Dwwp-ZtVq-djzA-vAHy-5ctPed
Die volumegroup nextcloud-vg hat 127999 freie physical extents (pe). Das entspricht 500GB.
Nun logical volume nextcloud-lv mit 500GB in der volumegroup nextcloud-vg anlegen.
x@nextcloud:~$ sudo lvcreate --extents=127999 -n nextcloud-lv nextcloud-vg Logical volume "nextcloud-lv" created. x@nextcloud:~$ sudo lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert nextcloud-lv nextcloud-vg -wi-a----- <500,00g ubuntu-lv ubuntu-vg -wi-ao---- 20,00g x@nextcloud:~$ sudo lvdisplay nextcloud-vg/nextcloud-lv --- Logical volume --- LV Path /dev/nextcloud-vg/nextcloud-lv LV Name nextcloud-lv VG Name nextcloud-vg LV UUID Lf3JjV-L9Qd-8ieU-fvdH-Udj9-ePhh-3M8gPd LV Write Access read/write LV Creation host, time nextcloud, 2020-01-05 21:39:31 +0000 LV Status available # open 0 LV Size <500,00 GiB Current LE 127999 Segments 1 Allocation inherit Read ahead sectors auto currently set to 256 Block device 253:1
Jetzt kann das logical volume mit einem Dateisystem formatiert werden (wie eine Partition einer disk). Hier wird XFS als Dateisystem verwendet, ext4 wäre auch eine mögliche Option.
x@nextcloud:~$ sudo mkfs.xfs -L nextcloud /dev/nextcloud-vg/nextcloud-lv meta-data=/dev/nextcloud-vg/nextcloud-lv isize=512 agcount=4, agsize=32767744 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=0, rmapbt=0, reflink=0 data = bsize=4096 blocks=131070976, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=63999, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 x@nextcloud:~$ sudo blkid /dev/sda2: UUID="290e503e-b047-47f7-9e27-bc50c446933b" TYPE="ext4" PARTUUID="b190493a-ade7-4a42-9b8b-189e90e40464" /dev/sda3: UUID="AGntCD-2cz3-Vn76-lLYn-wI9H-Tln3-ribtI8" TYPE="LVM2_member" PARTUUID="b6f26415-7c52-40a8-a576-4f3348da9ed4" /dev/mapper/ubuntu--vg-ubuntu--lv: UUID="c93179ef-ee59-44de-88e9-f8526459f04f" TYPE="ext4" /dev/loop0: TYPE="squashfs" /dev/loop1: TYPE="squashfs" /dev/loop2: TYPE="squashfs" /dev/sdb: UUID="Y16PrS-D1D2-XtRs-x2uu-tXlD-5Fgu-arigFB" TYPE="LVM2_member" /dev/mapper/nextcloud--vg-nextcloud--lv: LABEL="nextcloud" UUID="c6a7734f-f7be-40be-93bc-62e71f1e6850" TYPE="xfs" /dev/sda1: PARTUUID="2023a2fd-676f-4bb1-9789-38fd362439ee"
Das Dateisystem soll unter /media/nextcloud-data eingehängt werden. Nextcloud soll dann darauf Zugriff bekommen.
Eine Besonderheit bei Nextcloud via Snappy ist die Notwendigkeit das data-Verzeichnis unterhalb /media einhängen zu müssen.
Hier wird /etc/fstab für die Konfiguration der Mountpoints verwendet. Bei Wechseldatenträgern wäre der Einsatz von automount sinnvoll. Es soll die UUID des logical volumes nextcloud-lv zum Einhängen verwendet werden. Tip: Statt vi kann auch nano als Editor verwendet werden.
x@nextcloud:~$ sudo vi /etc/fstab ... UUID=c6a7734f-f7be-40be-93bc-62e71f1e6850 /media/nextcloud-data xfs defaults 0 0
Jetzt Verzeichnis /nextcloud-data erstellen und Dateisystem einhängen.
x@nextcloud:~$ sudo mkdir /media/nextcloud-data x@nextcloud:~$ sudo mount /media/nextcloud-data x@nextcloud:~$ df -h /media/nextcloud-data Filesystem Size Used Avail Use% Mounted on /dev/mapper/nextcloud--vg-nextcloud--lv 500G 543M 500G 1% /media/nextcloud-data x@nextcloud:~$ ls -l /media total 0 drwxr-xr-x 2 root root 6 Jan 5 21:46 nextcloud-data
Nextcloud
Wechseldatenträger
Wechseldatenträger für nextcloud-data zulassen.
x@nextcloud:~$ sudo snap connect nextcloud:removable-media x@nextcloud:~$ sudo snap connections nextcloud Interface Plug Slot Notes network nextcloud:network :network - network-bind nextcloud:network-bind :network-bind - removable-media nextcloud:removable-media :removable-media manual
SSL-Verschlüsselung
Für eine Nextcloud-Installation, die im Heimnetz oder via VPN erreichbar ist reicht ein selbstsigniertes Zertifikat zur SSL-Verschlüsselung.
x@nextcloud:~$ sudo nextcloud.enable-https self-signed Generating key and self-signed certificate… done Restarting apache… done
Konfiguration abschließen
Zum Abschluß der Konfiguration zunächst Nextcloud-Dienst neustarten.
x@nextcloud:~$ sudo snap restart nextcloud.php-fpm Restarted.
Browser starten und Nextcloud-URL aufrufen, im Beispiel https://nextcloud.fritz.box
Die Warnmeldung zum selbstsignierten SSL-Zertifikat kann ignoriert werden.
Die Anmeldung an Nextcloud lief erfolgreich.
Nacharbeiten
Das Umstellen des Nextcloud data-Verzeichnisses muß nachträglich durchgeführt werden. Die in der Doku beschriebene Variante während der Installation klappt nicht.
x@nextcloud:~$ sudo vi /var/snap/nextcloud/current/nextcloud/config/config.php ... # 'datadirectory' => '/var/snap/nextcloud/common/nextcloud/data', 'datadirectory' => '/media/nextcloud-data', ... x@nextcloud:~$ sudo snap disable nextcloud nextcloud disabled x@nextcloud:~$ sudo ls -l /var/snap/nextcloud/common/nextcloud/data total 12 drwxr-xr-x 7 root root 4096 Jan 5 23:35 appdata_ocbbsnx9s9ai drwxr-xr-x 2 root root 4096 Jan 5 23:35 files_external -rw-r--r-- 1 root root 0 Jan 5 23:35 index.html -rw-r--r-- 1 root root 0 Jan 5 23:35 nextcloud.log drwxr-xr-x 3 root root 4096 Jan 5 23:35 x x@nextcloud:~$ sudo ls -l /var/snap/nextcloud/common/nextcloud/ total 8 drwxrwx--- 5 root root 4096 Jan 5 23:35 data drwxr-x--- 2 root root 4096 Jan 5 23:35 tmp x@nextcloud:~$ sudo chmod 770 /media/nextcloud-data x@nextcloud:~$ sudo -s root@nextcloud:~# cp -rp /var/snap/nextcloud/common/nextcloud/data/* /media/nextcloud-data/ root@nextcloud:~# mv /var/snap/nextcloud/common/nextcloud/data/.ocdata /media/nextcloud-data/ root@nextcloud:~# mv /var/snap/nextcloud/common/nextcloud/data/.htaccess /media/nextcloud-data/ cp: -r not specified; omitting directory '/var/snap/nextcloud/common/nextcloud/data/.' cp: -r not specified; omitting directory '/var/snap/nextcloud/common/nextcloud/data/..' root@nextcloud:~# rm -r /var/snap/nextcloud/common/nextcloud/data/* root@nextcloud:~# ls -l /media/nextcloud-data/ total 8 drwxrwx--- 5 root root 142 Jan 6 00:21 . drwxr-xr-x 3 root root 4096 Jan 5 22:40 .. drwxr-xr-x 8 root root 100 Jan 6 00:13 appdata_ocbbsnx9s9ai drwxr-xr-x 2 root root 27 Jan 5 23:35 files_external -rw-r--r-- 1 root root 324 Jan 5 23:35 .htaccess -rw-r--r-- 1 root root 0 Jan 5 23:35 index.html -rw-r--r-- 1 root root 0 Jan 5 23:35 nextcloud.log -rw-r--r-- 1 root root 0 Jan 5 23:35 .ocdata drwxr-xr-x 3 root root 19 Jan 5 23:35 x root@nextcloud:~# exit exit x@nextcloud:~$ sudo snap enable nextcloud nextcloud enabled
Kurztest Nextcloud
Ablage von Datei in Nextcloud im Browser testen
Am Dateisystem überprüfen, ob korrekt abgelegt wird.
x@nextcloud:~$ sudo ls -l /media/nextcloud-data/x/files total 7084 drwxr-xr-x 2 root root 67 Jan 5 23:35 Documents -rw-r--r-- 1 root root 6746109 Jan 5 23:35 'Nextcloud Manual.pdf' -rw-r--r-- 1 root root 462413 Jan 5 23:35 Nextcloud.mp4 -rw-r--r-- 1 root root 37042 Jan 5 23:35 Nextcloud.png drwxr-xr-x 2 root root 92 Jan 5 23:35 Photos -rw-r--r-- 1 root root 7 Jan 6 00:28 Test.txt
Die Datei Test.txt befindet sich an der gewünschten Stelle im Dateisystem.
Weiterführende Themen
Snappy
Dokumentation
Installierte Snaps anzeigen:
x@nextcloud:~$ sudo snap list Name Version Rev Tracking Publisher Notes core 16-2.42.5 8268 stable canonical✓ core nextcloud 16.0.5snap3 16739 stable nextcloud✓ -
Durch Snappy bereitgestellte Dienste / daemons für Nextcloud:
x@nextcloud:~$ sudo snap services [sudo] password for x: 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 inactive - nextcloud.php-fpm enabled active - nextcloud.redis-server enabled active - nextcloud.renew-certs enabled active -
Durch Snappy einstellbare Konfiguration für Nextcloud:
x@nextcloud:~$ sudo snap get nextcloud Key Value mode production nextcloud {…} php {…} ports {…} private {…} x@nextcloud:~$ sudo snap get nextcloud nextcloud Key Value nextcloud.cron-interval 15m x@nextcloud:~$ sudo snap get nextcloud php Key Value php.memory-limit 512M x@nextcloud:~$ sudo snap get nextcloud ports Key Value ports.http 80 ports.https 443 x@nextcloud:~$ sudo snap set nextcloud php.memory-limit=2048M x@nextcloud:~$ sudo snap get nextcloud php Key Value php.memory-limit 2048M