Voraussetzungen
Nachdem ein Container erstellt wurde, muss eine Nextcloud-Instanz installiert werden. Ich habe dafür unter Ubuntu das Snap Paket genutzt. Dieses installiert eine vorkonfigurierte Nextcloud, die bereits lauffähig ist. Danach muss man nur noch die IP-Adresse der Nextcloud im Browser aufrufen und ein Adminkonto anlegen. Ab diesem Punkt kann man die Nextcloud in vollem Umfang nutzen.
Nextcloud Datenverzeichnis verschieben
Das Datenverzeichnis zu verschieben ist etwas aufwendiger. Dafür muss zu allererst das Verzeichnis auf dem Host für den Container freigeben.
lxc config device add <container> <sharename> disk path=/verzeichnis/im/container source=/verzeichnis/des/hosts
# bzw
lxc config device add nextcloud nextcloudshare disk path=/media/nextcloud source=/media/storage/nextcloud
Nun muss der Besitzer des Verzeichnisses geändert werden, da momentan der Container das Verzeichnis als nobody:nogroup sieht.
Um das zu tun müssen wir den uns mit den UserIDs beschäftigen. Unter Linux wird jedem Benutzer eine einzigartige ID zu gewiesen, die sogenannte UID(UserID). Für root ist das beispielsweise die 0. Auch die Benutzer in dem Container bekommen auf dem Host eine UID, allerdings kann der Root aus dem Container nicht die UID 0 auf dem Host erhalten, da diese schon von dem Root des Hostsystems besetzt ist. Deshalb verteil LXD deutlich höhere UIDs für Container um nicht mit den anderen Benutzern auf dem Host zu kollidieren.
Um die UID des Container-Roots herauszufinden, öffnen wir auf dem Host htop und suchen mit F3 nach Nextcloud. Dadurch sollten wir jetzt den Snapprozess der Nextcloud finden. In der gleichen Spalte steht jetzt auch die UID des Container-Roots, in meinem Fall 1000000.
Nun können wir die Berechtigung unseres Verzeichnisses auf dem Host ändern.
chown -R 100000:1000000 /media/storage/nextcloud
#-R für recursive, also auch Unterordner
Wenn wir jetzt unser Verzeichnis in dem Container betrachten, haben wir als Besitzer root. Dadurch haben wir nun volle Rechte auf diesem Verzeichnis.
Als nächstes müssen wir die Nextcloud-config anpassen. Bei der Snap-Installation liegt diese unter /var/snap/nextcloud/current/nextcloud/config/config.php
.
Diese öffnen wir mit einem beliebigen Editor und ändern das data_dir
zu unserem Pfad /media/nextcloud
/data
.
Da das Verzeichnis Media normalerweise für externe Datenträger gedacht ist, müssen wir der Nextcloud noch erlauben auf externe Datenträger zuzugreifen.
sudo snap connect nextcloud:removable-media
Danach sollten wir die Nextcloud stoppen um die Daten zuverschieben.
snap stop nextcloud
Die Daten könne jetzt in das neue Verzeichnis kopiert oder verschoben werden.
cp /snap/var/nextcloud/common/nextcloud/data/* /media/nextcloud/data
Nun können wir die Nextcloud wieder starten.
snap start nextcloud
Wenn die neuen Daten noch nicht erkannt worden seien sollten, kann man mit einer Zeile in der config.php festlegen, dass die Nextcloud bei jeder Anfrage prüfen soll, ob neue Dateien vorhanden sind. Das wirkt sich natürlich auf die Performance aus und in unserem Fall reicht es diese Zeile einmal hinzuzufügen, damit die neuen Daten erkannt werden und sie danach wieder herauszunehmen. Plant man allerdings öfters Daten in das Verzeichnis zu kopieren ohne das Nextcloud-Interface zu nutzen ist es ratsam die Option aktiviert zu lassen.
nano /var/snap/nextcloud/current/nextcloud/config/config.php
‘filesystem_check_changes’ => 1, #1 ist aktiviert, 0 ist deaktiviert
Danach müssen wir die Nextcloud eventuell noch einmal neustarten und dann sollten alle neuen Dateien in der Nextcloud erkannt werden. Ist das nicht der Fall muss das data_dir
in der config.php
nochmal überprüft und ggf. angepasst werden.
Weitere Informationen und Tutorials über LXD gibt es hier.