Nextcloud: Unterschied zwischen den Versionen
(27 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt) | |||
Zeile 35: | Zeile 35: | ||
* PostgreSQL Datenbank | * PostgreSQL Datenbank | ||
<syntaxhighlight lang=shell> | |||
xyz00@hsadmin> user.add({set:{name:'xyz00-cloud',password:'geheim',shell:'/bin/bash',comment:'Nextcloud'}}) | |||
xyz00@hsadmin> domain.add({set:{name:'cloud.example.org',user:'xyz00-cloud'}}) | |||
xyz00@hsadmin> postgresqluser.add({set:{name:'xyz00_nextclusr',password:'geheim'}}) | |||
xyz00@hsadmin> postgresqldb.add({set:{name:'xyz00_nextcloud',owner:'xyz00_nextclusr'}}) | |||
</syntaxhighlight> | |||
== Nextcloud installieren == | == Nextcloud installieren == | ||
Zeile 44: | Zeile 46: | ||
Anmelden als Linux-User ''xyz00-cloud'': | Anmelden als Linux-User ''xyz00-cloud'': | ||
<syntaxhighlight lang=shell> | |||
ssh -l xyz00-cloud xyz00.hostsharing.net | |||
</syntaxhighlight> | |||
''htdocs'' Verzeichnis vorbereiten | ''htdocs'' Verzeichnis vorbereiten | ||
<syntaxhighlight lang=shell> | |||
cd | |||
mkdir nextcloud | |||
cd doms/cloud.example.org | |||
rm -rf subs/www subs-ssl/www htdocs-ssl | |||
ln -s $HOME/nextcloud htdocs-ssl | |||
</syntaxhighlight> | |||
Nextcloud herunterladen und entpacken. | Nextcloud herunterladen und entpacken. | ||
<syntaxhighlight lang=shell> | |||
cd | |||
wget https://download.nextcloud.com/server/releases/nextcloud-27.1.2.zip | |||
unzip nextcloud-27.1.2.zip | |||
rm nextcloud-27.1.2.zip | |||
mkdir data tmp | |||
chmod 700 data tmp | |||
</syntaxhighlight> | |||
== Nextcloud konfigurieren == | == Nextcloud konfigurieren == | ||
Zeile 67: | Zeile 75: | ||
Im Verzeichnis "$HOME/doms/cloud.example.org/fastcgi-ssl/" eine Datei "php.ini" anlegen mit folgendem Inhalt: | Im Verzeichnis "$HOME/doms/cloud.example.org/fastcgi-ssl/" eine Datei "php.ini" anlegen mit folgendem Inhalt: | ||
<syntaxhighlight lang=ini> | |||
memory_limit=512M | |||
session.save_path=/home/pacs/xyz00/users/cloud/tmp | |||
</syntaxhighlight> | |||
Dann mit einem Editor diese Datei bearbeiten: In der zweiten Zeile den korrekten Pfad des vorher angelegten tmp-Verzeichnisses eintragen. | Dann mit einem Editor diese Datei bearbeiten: In der zweiten Zeile den korrekten Pfad des vorher angelegten tmp-Verzeichnisses eintragen. | ||
Zeile 85: | Zeile 95: | ||
'''Achtung!''' Die Felder für die Datenbank sind auf dem Startscreen hinter einem unscheinbaren Link versteckt. Um man das Formular für die Datenbank-Daten zu gelangen, muss man auf den Link klicken. Anschließend kann man die gewünschte Datenbank auswählen und die entsprechenden Daten eintragen. '''Das sollte geschehen, bevor man die Installation abschließt!''' Tut man dies nicht, wird Nextcloud mit SQLite installiert. Eine Änderung der Datenbank soll zwar laut Dokumentation auch später noch möglich sein, ging aber bei einem Test schief. | '''Achtung!''' Die Felder für die Datenbank sind auf dem Startscreen hinter einem unscheinbaren Link versteckt. Um man das Formular für die Datenbank-Daten zu gelangen, muss man auf den Link klicken. Anschließend kann man die gewünschte Datenbank auswählen und die entsprechenden Daten eintragen. '''Das sollte geschehen, bevor man die Installation abschließt!''' Tut man dies nicht, wird Nextcloud mit SQLite installiert. Eine Änderung der Datenbank soll zwar laut Dokumentation auch später noch möglich sein, ging aber bei einem Test schief. | ||
In der Konfigurationsdatei der Nextcloud (in ''~/nextcloud/config/config.php'') lassen sich weitere Voreinstellungen treffen: | |||
<syntaxhighlight lang=php line> | |||
'maintenance_window_start' => 1, // Wartungsfenster ab 1:00 Uhr | |||
'defaultapp' => 'calendar,files', // bei Start wird der Kalender gezeigt | |||
'default_phone_region' => 'DE', // Format Telefonnummern | |||
'default_language' => 'de', // Sprache deutsch | |||
'force_language' => 'de', | |||
'default_locale' => 'de_DE', // Locale (Formatierung Zeitangaben etc.) | |||
'force_locale' => 'de_DE', | |||
</syntaxhighlight> | |||
== Nextcloud beschleunigen == | == Nextcloud beschleunigen == | ||
Zeile 91: | Zeile 113: | ||
Wenn regelmäßig '''im Browser''' mit Nextcloud gearbeitet werden soll, ist Nextcloud im Browser oft sehr langsam. Um dies zu verbessern, unterstützt Nextcloud die Anwendung von unterschiedlichen Cache-Verfahren (zum Beispiel Memcache, Redis). | Wenn regelmäßig '''im Browser''' mit Nextcloud gearbeitet werden soll, ist Nextcloud im Browser oft sehr langsam. Um dies zu verbessern, unterstützt Nextcloud die Anwendung von unterschiedlichen Cache-Verfahren (zum Beispiel Memcache, Redis). | ||
=== Redis Cache === | |||
Redis ist auf den Hostsharing-Servern vorinstalliert und wird von den Nextcloud-Entwicklern empfohlen. '''In Verbindung mit einem Managed Webspace''' muss Redis als eigener Server '''Daemon''' angemeldet werden und ist '''kostenpflichtig'''. Siehe zu Kosten im Webspace Konfigurator unter: https://www.hostsharing.net/angebote/managed-webspace/ – '''1 individueller Serverdienst''' (Daemons). | Redis ist auf den Hostsharing-Servern vorinstalliert und wird von den Nextcloud-Entwicklern empfohlen. '''In Verbindung mit einem Managed Webspace''' muss Redis als eigener Server '''Daemon''' angemeldet werden und ist '''kostenpflichtig'''. Siehe zu Kosten im Webspace Konfigurator unter: https://www.hostsharing.net/angebote/managed-webspace/ – '''1 individueller Serverdienst''' (Daemons). | ||
Die Konfiguration des Redis-Dientes ist auf der Seite [[Redis]] beschrieben. Hier wird für Nextcloud die Variante mit einem Unixsocket benutzt. | |||
In der Konfiguration der Nextcloud (in ''~/nextcloud/config/config.php'') wird der Redis-Cache wie folgt konfiguriert: | |||
<syntaxhighlight lang=php line> | |||
'memcache.local' => '\\OC\\Memcache\\Redis', | |||
'memcache.distributed' => '\\OC\\Memcache\\Redis', | |||
'memcache.locking' => '\\OC\\Memcache\\Redis', | |||
'redis' => | |||
array ( | |||
'host' => '/home/pacs/xyz00/users/cloud/redis/var/redis-server.sock', | |||
'port' => 0, | |||
'password' => 'mein-redis-passwort', | |||
'timeout' => 1.5, | |||
), | |||
</syntaxhighlight> | |||
Um es perfekt zu machen, nutze ich ''logrotate'' um die Logdateien zu organisieren. Dazu die Konfiguration in ''~/.logrotate'' | |||
<syntaxhighlight lang=shell line> | |||
compress | |||
/home/pacs/xyz00/users/cloud/redis/var/redis.log { | |||
rotate 5 | |||
daily | |||
missingok | |||
} | |||
</syntaxhighlight> | |||
Eine Crontab sorgt für den Start von Monit und das tägliche Rotieren der Logdateien: | |||
<syntaxhighlight lang=shell line> | |||
# m h dom mon dow command | |||
HOME=/home/pacs/xyz00/users/cloud | |||
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games | |||
MAILTO=webmaster@example.com | |||
@reboot /usr/bin/monit -c $HOME/.monitrc | |||
1 1 * * * /usr/sbin/logrotate -s $HOME/.logrotate.state $HOME/.logrotate | |||
*/5 * * * * /usr/bin/php $HOME/nextcloud/cron.php | |||
</syntaxhighlight> | |||
Die letzte Zeile der ''crontab'' enthält den Cronjob für die regelmäßigen Hintergrundprozesse der Nextcloud. Durch die Erledigung dieser Aufgaben mit Cron lässt sich die Nextcloud ebenfalls etwas beschleunigen. | |||
=== Nextcloud Push === | |||
Um Vorgänge wie Sync und Benachrichtigungen bei sehr großen Nextcloud Installationen zu beschleunigen, kann der <code>notify_push</code> Dienst hinzuinstalliert werden. | |||
==== Abhängigkeiten und Einschränkungen ==== | |||
* <code>notify_push</code> muss Zugriff auf den gleichen Redis-Cache wie die Nextcloud haben | |||
** aufgrund von eingeschränktem Passwort Support sollte ein Redis Socket mit sicheren Berechtigungseinstellungen als Alternative zum Redis Port mit Passwort konfiguriert werden. | |||
* optimaler Weise holt sich <code>notify_push</code> benötigte informationen aus der <code>config.php</code> der bestehenden Nextcloud-Installation | |||
* eine zusätzliche (Sub)domain im gleichen User ist nötig. Andernfalls muss die bestehende <code>.htaccess</code> muss aus o.g. Gründen modifiziert werden, dies könnte bei Nextcloud-Updates verloren gehen(!) | |||
* Bestimmte Portbereiche sind bei Hostsharing eingeschränkt, es empfiehlt sich, direkt beispielsweise Port <code>37867</code> zu nehmen. <strong>aus diesem Grund ist das automatische Setup durch das Plugin bei Hostsharing nicht möglich!</strong> | |||
==== Installation ==== | |||
Siehe auch: https://github.com/nextcloud/notify_push#manual-setup | |||
1. Installieren der Nextcloud-App <code>notify_push</code> – (nach Push suchen, "Client Push" wählen)<br> | |||
2. falls noch nicht erstellt: <code>mkdir -p ~/.config/systemd/user</code><br> | |||
3. mit Lieblingseditor die Datei <code>~/.config/systemd/user/notify_push.service</code> anlegen:<br> | |||
<syntaxhighlight lang="ini" line> | |||
[Unit] | |||
Description = Push daemon for Nextcloud clients | |||
Documentation = https://github.com/nextcloud/notify_push | |||
[Service] | |||
# Change if you already have something running on this port | |||
Environment = PORT=37867 | |||
# We don't want to bind to 0.0.0.0, hence the --bind | |||
ExecStart = /home/pacs/xyz00/users/cloud/bin/notify_push --bind 127.0.0.1 /home/pacs/xyz00/users/cloud/nextcloud/config/config.php | |||
Type=notify | |||
[Install] | |||
WantedBy = default.target | |||
</syntaxhighlight> | |||
4. das Verzeichnis <code>~/bin</code> anlegen und die aktuellste binary herunterladen und ausführbar machen: | |||
<syntaxhighlight lang="shell" line>release=`curl -L https://api.github.com/repos/nextcloud/notify_push/releases/latest -s | jq -r '.tag_name'` && wget --show-progress -qO ~/bin/notify_push https://github.com/nextcloud/notify_push/releases/download/$release/notify_push-x86_64-unknown-linux-musl && chmod +x ~/bin/notify_push</syntaxhighlight> | |||
5. es könnte die folgende Umgebungsvariable zum Bedienen von systemd notwendig werden:<br><code>export XDG_RUNTIME_DIR=/run/user/$UID</code><br> | |||
6. den neuen systemd-Dienst automatisch bei Systemstart, sowie jetzt sofort starten:<br><code>systemctl enable --now --user notify_push</code><br> | |||
7. nun gehen wir in <code>doms/push.cloud.example.com/htdocs-ssl/.htaccess</code> und ersetzen den Inhalt (bevorzugt), oder wir ergänzen die .htaccess der Nextcloud im unteren Teil um die folgenden Zeilen (letzteres kann bei Updates überschrieben werden!): | |||
<syntaxhighlight lang="apache" line> | |||
# bei eigener (sub)domain ist /push/ nicht erforderlich, aber wer weiß, eventuell ist das mit robuster | |||
RewriteCond %{REQUEST_URI} ^/push/ws [NC,OR] | |||
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC,OR] | |||
RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC] | |||
RewriteRule .* ws://127.0.0.1:37867/ws [proxy] | |||
RewriteCond %{REQUEST_URI} ^/push [NC] | |||
RewriteRule .* http://127.0.0.1:37867%{REQUEST_URI} [proxy] | |||
</syntaxhighlight> | |||
8. abschließend im Nextcloud Ordner die Konfiguration des Plugins anstoßen: <code>php occ notify_push:setup https://cloud.example.com/push</code> bzw. <code>php occ notify_push:setup https://push.cloud.example.com/push</code><br> | |||
9. es ist möglich, das die erkannte IP-Adresse des Hives noch nicht vertraut ist. In diesem Fall wird der obige Befehl scheitern und es muss jene aus der Fehlermeldung des Setups unter <code>trusted_proxies</code> in der <code>config.php</code> ergänzt werden. <br><br> | |||
Es wird im Repo außerdem ein Testclient bereitgestellt, der sich testweise mit dem Push-Dienst verbindet | |||
== Nextcloud mit Online Office == | == Nextcloud mit Online Office == | ||
Zeile 198: | Zeile 223: | ||
Einige Nutzer wollen die Dateien in Ihrer Nextcloud regelmäßig auf Viren überprüfen. Auf unseren Servern steht dafür der OpenSource-Virenscanner "ClamAV" zur Verfügung. Wenn dieser Scanner benutzt wird, dann sollten die Einstellungen so gewählt sein, dass der ClamAV-Daemon über eine Socket Verbindung angesprochen wird. Die Einstellungen sind im Screenshot dokumentiert. | Einige Nutzer wollen die Dateien in Ihrer Nextcloud regelmäßig auf Viren überprüfen. Auf unseren Servern steht dafür der OpenSource-Virenscanner "ClamAV" zur Verfügung. Wenn dieser Scanner benutzt wird, dann sollten die Einstellungen so gewählt sein, dass der ClamAV-Daemon über eine Socket Verbindung angesprochen wird. Die Einstellungen sind im Screenshot dokumentiert. | ||
[[Datei:Nextcloud-ClamAV-Einstellungen.png||nextcloud einstellungen für die virenscanner-app]] | |||
== Volltextsuche == | == Volltextsuche == | ||
Zeile 225: | Zeile 250: | ||
Der initiale Aufbau des Suchindex erfolgt über ein "occ"-Kommando auf der Shell: | Der initiale Aufbau des Suchindex erfolgt über ein "occ"-Kommando auf der Shell: | ||
<syntaxhighlight lang=shell line> | |||
cd nextcloud/ | |||
php occ fulltextsearch:index --output | |||
</syntaxhighlight> | |||
Wenn dieser Fehler kommt: | Wenn dieser Fehler kommt: | ||
Zeile 235: | Zeile 262: | ||
Zur Pflege des Indexes wird ein weiterer Hintergrundprozess gestartet: | Zur Pflege des Indexes wird ein weiterer Hintergrundprozess gestartet: | ||
<syntaxhighlight lang=shell line> | |||
cd nextcloud/ | |||
php occ fulltextsearch:live -q | |||
</syntaxhighlight> | |||
Die Monit Konfiguration dafür sieht so aus: | Die Monit Konfiguration dafür sieht so aus: | ||
~/bin/start-fulltextsearchlive | <syntaxhighlight lang=shell line> | ||
#~/bin/start-fulltextsearchlive | |||
# | |||
#!/bin/bash | |||
export HOME=/home/pacs/xyz00/users/cloud | |||
cd $HOME | |||
mkdir -p $HOME/var | |||
cd $HOME/nextcloud | |||
exec php occ fulltextsearch:live -q & | |||
echo $! >$HOME/var/fulltextsearchlive.pid | |||
</syntaxhighlight> | |||
~/bin/stop-fulltextsearchlive | <syntaxhighlight lang=shell line> | ||
#~/bin/stop-fulltextsearchlive | |||
# | |||
#!/bin/bash | |||
export HOME=/home/pacs/xyz00/users/cloud | |||
kill $( cat $HOME/var/fulltextsearchlive.pid ) | |||
</syntaxhighlight> | |||
~/.monitrc (siehe oben von der Redis Installation) entsprechend ergänzen: | ~/.monitrc (siehe oben von der Redis Installation) entsprechend ergänzen: | ||
<syntaxhighlight lang=shell line> | |||
check process fulltextsearchlive with pidfile /home/pacs/xyz00/users/cloud/var/fulltextsearchlive.pid | |||
start program "/home/pacs/xyz00/users/cloud/bin/start-fulltextsearchlive" | |||
stop program "/home/pacs/xyz00/users/cloud/bin/stop-fulltextsearchlive" | |||
</syntaxhighlight> | |||
== Integration mit LDAP == | |||
Um einheitliche Benutzerzugänge für verschiedene Anwendungen zu ermöglichen, wird oft auf ein zentrales LDAP Verzeichnis gesetzt. | |||
Dieses kann für Nextcloud eingesetzt werden, damit Benutzer nicht lokal in Nextcloud, sondern in LDAP verwaltet werden können. | |||
Siehe auch https://docs.nextcloud.com/server/latest/admin_manual/configuration_user/user_auth_ldap.html | |||
Dazu muss die App "LDAP user and group backend" in den Nextcloud Apps aktiviert werden. | |||
Dann muss die LDAP Anbindung in den Administrationseinstellungen unter "LDAP/AD-Integration" eingerichtet werden. | |||
Der Server mit Port, die BenutzerDN mit Passwort und die BaseDN müssen eingetragen werden. | |||
Es muss auch bestimmt werden, welche Klasse (z.B. inetOrgPerson) die Benutzer brauchen, um Zugriff auf die Nextcloud zu erhalten. | |||
Falls schon Benutzer in der Nextcloud existieren, und diese zu LDAP mitgenommen werden sollen, kann der Anleitung aus diesem Forum Eintrag gefolgt werden: https://help.nextcloud.com/t/migration-to-ldap-keeping-users-and-data/13205 | |||
* Voraussetzung ist, dass der Benutzernamen der zu übernehmenden Benutzer in Nextcloud der uid in LDAP entspricht. | |||
* Es wird ein Administrator Benutzer benötigt, der lokal angelegt wurde, und auch lokal bleibt. | |||
* Mit diesem Administrator Benutzer wird die LDAP Anbindung eingerichtet. | |||
* In der Experten Ansicht von LDAP/AD muss bei "Attribut für interne Benutzernamen" eingetragen werden: uid | |||
* Klicke den Schalter "LDAP Benutzernamenzuordnung löschen" | |||
* Klicke den Schalter "LDAP Gruppennamenzuordnung löschen" | |||
* dann in der MySQL Datenbank anmelden, und aus uc_users alle Benutzer bis auf den Administrator Benutzer löschen | |||
* Dann in der Nextcloud Weboberfläche sich alle Benutzer anzeigen lassen | |||
* Nun gelingt die Anmeldung mit den anderen Benutzern mit dem LDAP Passwort, und die Dateien wurden übernommen. | |||
== Optimierung der Geschwindigkeit == | |||
Manchmal fühlt sich die Nextcloud träge an. | |||
Folgende Änderungen können helfen: | |||
* HTTP/2.0 aktivieren: dem Service von Hostsharing Bescheid geben | |||
* Die App Dashboard deaktivieren, und dafür werden direkt die Dateien angezeigt | |||
* Einblenden der README in den Ordnern abschalten: das kann pro Ordner in der UI geschehen (links unten), oder global: <code>occ config:app:set text workspace_available --value=0</code>. Siehe auch [https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/text_configuration.html#disable-rich-workspaces-globally] | |||
== Default App einstellen == | |||
In der Datei config.php können wir einstellen, welche App direkt nach der Anmeldung gezeigt wird. | |||
Das ist entweder die Dashboard App, wenn sie aktiviert ist, oder die Dateien App (files). | |||
Falls der Kalender direkt angezeigt werden soll, muss folgende Zeile in der config.php hinzugefügt werden (siehe auch [https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/config_sample_php_parameters.html#defaultapp]): | |||
<syntaxhighlight lang=shell> | |||
'defaultapp' => 'calendar', | |||
</syntaxhighlight> | |||
= Nextcloud Updates = | = Nextcloud Updates = | ||
Zeile 265: | Zeile 350: | ||
Wenn die NextCloud sich nicht über das Webfrontend updaten lässt, kann der Updater auch per Shell im directory /updater durch ausführen des updater.phar gestartet werden: | Wenn die NextCloud sich nicht über das Webfrontend updaten lässt, kann der Updater auch per Shell im directory /updater durch ausführen des updater.phar gestartet werden: | ||
<syntaxhighlight lang=shell line> | |||
xyz00-cloud@h00:~$ cd ~/nextcloud/updater | |||
xyz00-cloud@h00:~/nextcloud/updater$ chmod u+x updater.phar | |||
xyz00-cloud@h00:~/nextcloud/updater$ ./updater.phar | |||
</syntaxhighlight> | |||
Es sollten außerdem ein paar Routine-Aufräumarbeiten durchgeführt werden: | |||
<syntaxhighlight lang=shell line> | |||
xyz00-cloud@h00:~$ cd ~/nextcloud | |||
xyz00-cloud@h00:~/nextcloud$ php occ db:add-missing-primary-keys --no-interaction | |||
xyz00-cloud@h00:~/nextcloud$ php occ db:add-missing-columns --no-interaction | |||
xyz00-cloud@h00:~/nextcloud$ php occ db:add-missing-indices --no-interaction | |||
xyz00-cloud@h00:~/nextcloud$ php occ db:convert-filecache-bigint --no-interaction | |||
</syntaxhighlight> | |||
So können die Apps noch alle aktualisiert werden: | |||
<syntaxhighlight lang=shell line> | |||
xyz00-cloud@h00:~$ cd ~/nextcloud | |||
xyz00-cloud@h00:~/nextcloud$ php occ app:update --all -n --no-ansi | |||
</syntaxhighlight> | |||
Für weitere Informationen kann auf die offizielle Doku ab Ziffer 2. zurückgegriffen werden. | Für weitere Informationen kann auf die offizielle Doku ab Ziffer 2. zurückgegriffen werden. | ||
Zeile 272: | Zeile 377: | ||
* [https://docs.nextcloud.com/server/latest/admin_manual/maintenance/update.html#using-the-command-line-based-updater https://docs.nextcloud.com] | * [https://docs.nextcloud.com/server/latest/admin_manual/maintenance/update.html#using-the-command-line-based-updater https://docs.nextcloud.com] | ||
Hier gibt es ein kurzes Video, das die Anmeldung über die Kommandozeile mit Putty erklärt und die Aktualisierung von Nextcloud auf der Kommandozeile: | |||
* [https://tube.solidcharity.net/w/0cf5ee97-ba7c-41df-a56f-8d1fea842ab0 Nextcloud auf der Kommandozeile aktualisieren] | |||
== Wartungsmodus per Shell ein- oder ausschalten == | |||
So kann der Wartungsmodus angeschaltet werden: | |||
<syntaxhighlight lang=shell line> | |||
xyz00-cloud@h00:~$ cd ~/nextcloud | |||
xyz00-cloud@h00:~/nextcloud$ php occ maintenance:mode --on | |||
</syntaxhighlight> | |||
So kann der Wartungsmodus wieder ausgeschaltet werden, d.h. die Nextcloud ist dann wieder in Betrieb: | |||
<syntaxhighlight lang=shell line> | |||
xyz00-cloud@h00:~$ cd ~/nextcloud | |||
xyz00-cloud@h00:~/nextcloud$ php occ maintenance:mode --off | |||
</syntaxhighlight> | |||
== Webfrontend-Updater Probleme / Lösungen == | == Webfrontend-Updater Probleme / Lösungen == | ||
Zeile 287: | Zeile 407: | ||
Per Shell in der directory /nextcloud folgende Kommandos ausführen: | Per Shell in der directory /nextcloud folgende Kommandos ausführen: | ||
<syntaxhighlight lang=shell line> | |||
xyz00-cloud@h00:~$ cd ~/nextcloud | |||
xyz00-cloud@h00:~/nextcloud$ php occ db:add-missing-primary-keys --no-interaction | |||
xyz00-cloud@h00:~/nextcloud$ php occ db:add-missing-columns --no-interaction | |||
xyz00-cloud@h00:~/nextcloud$ php occ db:add-missing-indices --no-interaction | |||
xyz00-cloud@h00:~/nextcloud$ php occ db:convert-filecache-bigint --no-interaction | |||
</syntaxhighlight> | |||
Wichtig ist hier dem durch Nextcloud angegebenen Kommando ein '''php''' voranzustellen. | Wichtig ist hier dem durch Nextcloud angegebenen Kommando ein '''php''' voranzustellen. | ||
Zeile 297: | Zeile 421: | ||
Es ist möglich die regelmäßigen Updates weitgehend zu automatisieren. Ein Skript wäre etwa: | Es ist möglich die regelmäßigen Updates weitgehend zu automatisieren. Ein Skript wäre etwa: | ||
<syntaxhighlight lang=shell line> | |||
#!/bin/bash | |||
if [ -f $HOME/nextcloud/occ ]; then | |||
echo "Nextcloud Update"; | |||
cd $HOME/nextcloud; | |||
php updater/updater.phar -vv --no-backup --no-interaction | |||
php occ maintenance:mode --on | |||
php occ db:add-missing-primary-keys --no-interaction | |||
php occ db:add-missing-columns --no-interaction | |||
php occ db:add-missing-indices --no-interaction | |||
php occ db:convert-filecache-bigint --no-interaction | |||
php occ app:update --all | |||
php occ maintenance:mode --off | |||
else | |||
echo "Keine Nextcloud Installation gefunden"; | |||
fi | |||
</syntaxhighlight> | |||
== Update: bei old-stable Version bleiben == | |||
Normalerweise fragt jede Nextcloud Instanz zentral ab, welches Update zur Verfügung steht, abhängig vom Release Channel. Dabei wird aber relativ schnell auf die nächste Version gewechselt, also z.B. von Nextcloud 28 auf Nextcloud 29, obwohl Nextcloud 28 noch mehrere Monate gepflegt wird, und manche Apps noch nicht bereit sind für Nextcloud 29. | |||
Es kann aber auch eine Alternative eingerichtet werden, in der Datei nextcloud/config/config.php, unter dem Eintrag updater.server.url | |||
Hier wird z.B. auf einen Updater von unserem Mitglied Timotheus Pokorra verwiesen: | |||
<syntaxhighlight lang=php line> | |||
updater_server_url: "https://ncupdater.solidcharity.com" | |||
</syntaxhighlight> | |||
Dahinter läuft ein Skript, mit dem wir noch länger eine bestimmte Version anbieten können: https://codeberg.org/tpokorra/ncupdater | |||
= Daten auf HDD Storage = | = Daten auf HDD Storage = | ||
Zeile 318: | Zeile 458: | ||
Um den langsameren aber günstigeren HDD Storage von Hostsharing zu nutzen, kann das data Verzeichnis von SSD auf HDD Storage verschoben werden. Ein symbolischer Link reicht nicht aus, man muss den Pfad in der Nextcloud Konfigurationsdatei anpassen. | Um den langsameren aber günstigeren HDD Storage von Hostsharing zu nutzen, kann das data Verzeichnis von SSD auf HDD Storage verschoben werden. Ein symbolischer Link reicht nicht aus, man muss den Pfad in der Nextcloud Konfigurationsdatei anpassen. | ||
<syntaxhighlight lang=shell> | |||
# Nextcloud in Wartungsmodus versetzen | |||
xyz00-cloud@h00:~/nextcloud$ php occ maintenance:mode --on | |||
# Daten auf HDD Storage verschieben | |||
xyz00-cloud@h00:~/nextcloud$ mv data /home/storage/xyz00/users/cloud/ | |||
# symbolischen Link anlegen | |||
xyz00-cloud@h00:~/nextcloud$ ln -s /home/storage/xyz00/users/cloud/data data | |||
# Pfad in config.php ändern | |||
nano config/config.php | |||
# Die Zeile mit 'datadirectory' finden und entsprechend ändern: | |||
# 'datadirectory' => '/home/storage/xyz00/users/cloud/data', | |||
# Wartungsmodus beenden | |||
xyz00-cloud@h00:~/nextcloud$ php occ maintenance:mode --off | |||
</syntaxhighlight> | |||
= Einschränkende Bemerkungen = | |||
== Nextcloud Sync Client == | |||
Der Nextcloud Sync Client erfüllt eine Funktion ähnlich wie Dropbox, und synchronisiert ganze Ordnerstrukturen. | |||
Gerade wenn man mit mehreren Menschen in einer Nextcloud arbeitet, ist diese Funktion mit Vorsicht zu benutzen. | |||
* Änderungen an der Ordnerstruktur sollten nicht lokal, sondern im Webbrowser vorgenommen werden. | |||
* Wenn die Gefahr besteht, dass mehrere Menschen gleichzeitig eine Datei bearbeiten, sollte die Datei nicht lokal, sondern im Webbrowser bearbeitet werden. | |||
* Aus Sicht des Datenschutzes und der Daten-Minimierung sollte überlegt werden, ob die Daten wirklich auf jeden Laptop und Rechner synchronisiert werden sollen, oder ob es reicht, ausschließlich über den Webbrowser auf die Daten zuzugreifen. | |||
= weiterführende Links = | = weiterführende Links = | ||
Zeile 336: | Zeile 489: | ||
* [https://apps.nextcloud.com/ Nextcloud Erweiterungen ("Apps")] | * [https://apps.nextcloud.com/ Nextcloud Erweiterungen ("Apps")] | ||
* [https://ownyourbits.com/2019/06/29/understanding-and-improving-nextcloud-previews/ Optimierung des Caches für Previews] | * [https://ownyourbits.com/2019/06/29/understanding-and-improving-nextcloud-previews/ Optimierung des Caches für Previews] | ||
* [https:// | * [https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/nextcloud Ansible Playbook für Hostsharing] | ||
= Nextcloud Reseller bei HS = | = Nextcloud Reseller bei HS = | ||
Zeile 348: | Zeile 501: | ||
[[Kategorie:Software]] | [[Kategorie:Software]] | ||
[[Kategorie:CalDAV]] | [[Kategorie:CalDAV]] | ||
[[Kategorie:Nextcloud]] |
Aktuelle Version vom 25. September 2024, 10:45 Uhr
Nextcloud
Nextcloud ist eine PHP-basierte Open Source Lösung für gängige Cloud-Anwendungen, u.a.:
- Filesharing unter Nutzern derselben Nextcloud, und mit der Öffentlichkeit
- Single-Sign-On Authentifizierung (SSO)
- Videokonferenzen (WebRTC)
- Online-Office Anwendung Collabora Online
Beispiel-Funktionalität, die über Plugins, sogenannte "Apps", bereit gestellt werden kann:
- Kalender, Aufgabenverwaltung, Adressbuch
- Datei-Kollaboration (Kommentare zu Dateien, Verschlagwortung)
- Feedreader
- E-Mail-Programm
- Fotogalerie
- Musik- und Videowiedergabe
Nextcloud installieren
Vorbereitungen
In hsadmin, zum Beispiel mit hsscript:
hsadmin-Shell starten mit:
hsscript -u xyz00 -i Password: ********
Dann nacheinander anlegen:
- Linux User als Domain-Administrator
- Subdomain cloud.example.org
- PostgreSQL-User
- PostgreSQL Datenbank
xyz00@hsadmin> user.add({set:{name:'xyz00-cloud',password:'geheim',shell:'/bin/bash',comment:'Nextcloud'}})
xyz00@hsadmin> domain.add({set:{name:'cloud.example.org',user:'xyz00-cloud'}})
xyz00@hsadmin> postgresqluser.add({set:{name:'xyz00_nextclusr',password:'geheim'}})
xyz00@hsadmin> postgresqldb.add({set:{name:'xyz00_nextcloud',owner:'xyz00_nextclusr'}})
Nextcloud installieren
Anmelden als Linux-User xyz00-cloud:
ssh -l xyz00-cloud xyz00.hostsharing.net
htdocs Verzeichnis vorbereiten
cd
mkdir nextcloud
cd doms/cloud.example.org
rm -rf subs/www subs-ssl/www htdocs-ssl
ln -s $HOME/nextcloud htdocs-ssl
Nextcloud herunterladen und entpacken.
cd
wget https://download.nextcloud.com/server/releases/nextcloud-27.1.2.zip
unzip nextcloud-27.1.2.zip
rm nextcloud-27.1.2.zip
mkdir data tmp
chmod 700 data tmp
Nextcloud konfigurieren
Im Verzeichnis "$HOME/doms/cloud.example.org/fastcgi-ssl/" eine Datei "php.ini" anlegen mit folgendem Inhalt:
memory_limit=512M
session.save_path=/home/pacs/xyz00/users/cloud/tmp
Dann mit einem Editor diese Datei bearbeiten: In der zweiten Zeile den korrekten Pfad des vorher angelegten tmp-Verzeichnisses eintragen.
Im Browser auf die Seite http://cloud.example.org gehen und den Anweisungen folgen.
Auf der ersten Seite sind anzugeben:
- Login und Passwort für den Administrator definieren
- PostgreSQL als Datenbanksystem
- PostgreSQL-User und Passwort aus dem ersten Schritt oben
- Name der PostgreSQL-Datenbank aus dem ersten Schritt
- "localhost" als Datenbankserver (Nextcloud 23.0.2 empfiehlt hier die Angabe des Ports, diesen also lt. PostgreSQL angeben)
- Das Verzeichnis "/home/pacs/xyz00/users/cloud/data/" als Daten-Verzeichnis (bitte beachten: das im Eingabefeld voreingestellte verweist auf das Verzeichnis "/home/pacs/xyz00/users/cloud/nextcloud/data/")
Achtung! Die Felder für die Datenbank sind auf dem Startscreen hinter einem unscheinbaren Link versteckt. Um man das Formular für die Datenbank-Daten zu gelangen, muss man auf den Link klicken. Anschließend kann man die gewünschte Datenbank auswählen und die entsprechenden Daten eintragen. Das sollte geschehen, bevor man die Installation abschließt! Tut man dies nicht, wird Nextcloud mit SQLite installiert. Eine Änderung der Datenbank soll zwar laut Dokumentation auch später noch möglich sein, ging aber bei einem Test schief.
In der Konfigurationsdatei der Nextcloud (in ~/nextcloud/config/config.php) lassen sich weitere Voreinstellungen treffen:
'maintenance_window_start' => 1, // Wartungsfenster ab 1:00 Uhr
'defaultapp' => 'calendar,files', // bei Start wird der Kalender gezeigt
'default_phone_region' => 'DE', // Format Telefonnummern
'default_language' => 'de', // Sprache deutsch
'force_language' => 'de',
'default_locale' => 'de_DE', // Locale (Formatierung Zeitangaben etc.)
'force_locale' => 'de_DE',
Nextcloud beschleunigen
Dieser Teil ist optional.
Wenn regelmäßig im Browser mit Nextcloud gearbeitet werden soll, ist Nextcloud im Browser oft sehr langsam. Um dies zu verbessern, unterstützt Nextcloud die Anwendung von unterschiedlichen Cache-Verfahren (zum Beispiel Memcache, Redis).
Redis Cache
Redis ist auf den Hostsharing-Servern vorinstalliert und wird von den Nextcloud-Entwicklern empfohlen. In Verbindung mit einem Managed Webspace muss Redis als eigener Server Daemon angemeldet werden und ist kostenpflichtig. Siehe zu Kosten im Webspace Konfigurator unter: https://www.hostsharing.net/angebote/managed-webspace/ – 1 individueller Serverdienst (Daemons).
Die Konfiguration des Redis-Dientes ist auf der Seite Redis beschrieben. Hier wird für Nextcloud die Variante mit einem Unixsocket benutzt.
In der Konfiguration der Nextcloud (in ~/nextcloud/config/config.php) wird der Redis-Cache wie folgt konfiguriert:
'memcache.local' => '\\OC\\Memcache\\Redis',
'memcache.distributed' => '\\OC\\Memcache\\Redis',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' =>
array (
'host' => '/home/pacs/xyz00/users/cloud/redis/var/redis-server.sock',
'port' => 0,
'password' => 'mein-redis-passwort',
'timeout' => 1.5,
),
Um es perfekt zu machen, nutze ich logrotate um die Logdateien zu organisieren. Dazu die Konfiguration in ~/.logrotate
compress
/home/pacs/xyz00/users/cloud/redis/var/redis.log {
rotate 5
daily
missingok
}
Eine Crontab sorgt für den Start von Monit und das tägliche Rotieren der Logdateien:
# m h dom mon dow command
HOME=/home/pacs/xyz00/users/cloud
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
MAILTO=webmaster@example.com
@reboot /usr/bin/monit -c $HOME/.monitrc
1 1 * * * /usr/sbin/logrotate -s $HOME/.logrotate.state $HOME/.logrotate
*/5 * * * * /usr/bin/php $HOME/nextcloud/cron.php
Die letzte Zeile der crontab enthält den Cronjob für die regelmäßigen Hintergrundprozesse der Nextcloud. Durch die Erledigung dieser Aufgaben mit Cron lässt sich die Nextcloud ebenfalls etwas beschleunigen.
Nextcloud Push
Um Vorgänge wie Sync und Benachrichtigungen bei sehr großen Nextcloud Installationen zu beschleunigen, kann der notify_push
Dienst hinzuinstalliert werden.
Abhängigkeiten und Einschränkungen
notify_push
muss Zugriff auf den gleichen Redis-Cache wie die Nextcloud haben- aufgrund von eingeschränktem Passwort Support sollte ein Redis Socket mit sicheren Berechtigungseinstellungen als Alternative zum Redis Port mit Passwort konfiguriert werden.
- optimaler Weise holt sich
notify_push
benötigte informationen aus derconfig.php
der bestehenden Nextcloud-Installation - eine zusätzliche (Sub)domain im gleichen User ist nötig. Andernfalls muss die bestehende
.htaccess
muss aus o.g. Gründen modifiziert werden, dies könnte bei Nextcloud-Updates verloren gehen(!) - Bestimmte Portbereiche sind bei Hostsharing eingeschränkt, es empfiehlt sich, direkt beispielsweise Port
37867
zu nehmen. aus diesem Grund ist das automatische Setup durch das Plugin bei Hostsharing nicht möglich!
Installation
Siehe auch: https://github.com/nextcloud/notify_push#manual-setup
1. Installieren der Nextcloud-App notify_push
– (nach Push suchen, "Client Push" wählen)
2. falls noch nicht erstellt: mkdir -p ~/.config/systemd/user
3. mit Lieblingseditor die Datei ~/.config/systemd/user/notify_push.service
anlegen:
[Unit]
Description = Push daemon for Nextcloud clients
Documentation = https://github.com/nextcloud/notify_push
[Service]
# Change if you already have something running on this port
Environment = PORT=37867
# We don't want to bind to 0.0.0.0, hence the --bind
ExecStart = /home/pacs/xyz00/users/cloud/bin/notify_push --bind 127.0.0.1 /home/pacs/xyz00/users/cloud/nextcloud/config/config.php
Type=notify
[Install]
WantedBy = default.target
4. das Verzeichnis ~/bin
anlegen und die aktuellste binary herunterladen und ausführbar machen:
release=`curl -L https://api.github.com/repos/nextcloud/notify_push/releases/latest -s | jq -r '.tag_name'` && wget --show-progress -qO ~/bin/notify_push https://github.com/nextcloud/notify_push/releases/download/$release/notify_push-x86_64-unknown-linux-musl && chmod +x ~/bin/notify_push
5. es könnte die folgende Umgebungsvariable zum Bedienen von systemd notwendig werden:export XDG_RUNTIME_DIR=/run/user/$UID
6. den neuen systemd-Dienst automatisch bei Systemstart, sowie jetzt sofort starten:systemctl enable --now --user notify_push
7. nun gehen wir in doms/push.cloud.example.com/htdocs-ssl/.htaccess
und ersetzen den Inhalt (bevorzugt), oder wir ergänzen die .htaccess der Nextcloud im unteren Teil um die folgenden Zeilen (letzteres kann bei Updates überschrieben werden!):
# bei eigener (sub)domain ist /push/ nicht erforderlich, aber wer weiß, eventuell ist das mit robuster
RewriteCond %{REQUEST_URI} ^/push/ws [NC,OR]
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC,OR]
RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
RewriteRule .* ws://127.0.0.1:37867/ws [proxy]
RewriteCond %{REQUEST_URI} ^/push [NC]
RewriteRule .* http://127.0.0.1:37867%{REQUEST_URI} [proxy]
8. abschließend im Nextcloud Ordner die Konfiguration des Plugins anstoßen: php occ notify_push:setup https://cloud.example.com/push
bzw. php occ notify_push:setup https://push.cloud.example.com/push
9. es ist möglich, das die erkannte IP-Adresse des Hives noch nicht vertraut ist. In diesem Fall wird der obige Befehl scheitern und es muss jene aus der Fehlermeldung des Setups unter trusted_proxies
in der config.php
ergänzt werden.
Es wird im Repo außerdem ein Testclient bereitgestellt, der sich testweise mit dem Push-Dienst verbindet
Nextcloud mit Online Office
In Nextcloud können Office-Dokumente (Textverarbeitung, Tabellen und Präsentationen) im Browser bearbeitet werden. Dazu steht bei Hostsharing die Collabora Developer Version zur Verfügung. Bestellung und Konfiguration sind hier im Wiki auf der Seite Collabora_Online beschrieben.
Nextcloud mit Nextcloud Talk
Über die Nextcloud-App "Talk" können Videokonfererenzen mit Screensharing durchgeführt werden. Für die regelmäßige Nutzung kann es sinnvoll sein einen eigenen TURN Server zu betreiben. Siehe dazu Coturn_Installieren
Virenscanner
Einige Nutzer wollen die Dateien in Ihrer Nextcloud regelmäßig auf Viren überprüfen. Auf unseren Servern steht dafür der OpenSource-Virenscanner "ClamAV" zur Verfügung. Wenn dieser Scanner benutzt wird, dann sollten die Einstellungen so gewählt sein, dass der ClamAV-Daemon über eine Socket Verbindung angesprochen wird. Die Einstellungen sind im Screenshot dokumentiert.
Volltextsuche
Über die Dokumente einer Nextcloud kann ein Volltextindex erstellt werden. Die Volltextsuche ermöglicht über den Index eine Suche über beliebige Begriffe, die in Dokumenten vorkommen.
Voraussetzung ist der Betrieb eines Elasticsearch Servers. Der Betrieb im Managed Webspace erfodert die Buchung von zwei "Serverdiensten". Nutzer eines Managed Server müssen mit einem spürbaren Mehrbedarf an Hauptspeicher rechnen.
Zur Installation von Elasticsearch existiert eine eigene Wikiseite: Elasticsearch.
In der Nextcloud sind folgende Apps zu installieren:
- Full Text Search
- Full Text Search - Elasticsearch Platform
- Full Text Search - Files
nach der Installation der drei Apps steht in den Einstellungen ein neuer Menüpunkt "Volltextsuche" zur Verfügung.
Hier ist einzustellen:
- Suchplattform: Elasticsearch
- Adresse des Servlets: http://elastic:das-erzeugt-passwort@127.0.0.1:39200
- Index: frei-gewaehlter-name-idx
- Analyzer tokenizer: standard
Die anderen Einstellung nach den eigenen Vorstellungen vornehmen.
Der initiale Aufbau des Suchindex erfolgt über ein "occ"-Kommando auf der Shell:
cd nextcloud/
php occ fulltextsearch:index --output
Wenn dieser Fehler kommt:
TypeError: Return value of OCA\Files_FullTextSearch\Model\MountPoint::isGlobal() must be of the type bool, null returned in [...]/apps/files_fulltextsearch/lib/Model/MountPoint.php:103
sollte dieser Patch angewendet werden: https://github.com/nextcloud/files_fulltextsearch/issues/125#issuecomment-877789742
Zur Pflege des Indexes wird ein weiterer Hintergrundprozess gestartet:
cd nextcloud/
php occ fulltextsearch:live -q
Die Monit Konfiguration dafür sieht so aus:
#~/bin/start-fulltextsearchlive
#
#!/bin/bash
export HOME=/home/pacs/xyz00/users/cloud
cd $HOME
mkdir -p $HOME/var
cd $HOME/nextcloud
exec php occ fulltextsearch:live -q &
echo $! >$HOME/var/fulltextsearchlive.pid
#~/bin/stop-fulltextsearchlive
#
#!/bin/bash
export HOME=/home/pacs/xyz00/users/cloud
kill $( cat $HOME/var/fulltextsearchlive.pid )
~/.monitrc (siehe oben von der Redis Installation) entsprechend ergänzen:
check process fulltextsearchlive with pidfile /home/pacs/xyz00/users/cloud/var/fulltextsearchlive.pid
start program "/home/pacs/xyz00/users/cloud/bin/start-fulltextsearchlive"
stop program "/home/pacs/xyz00/users/cloud/bin/stop-fulltextsearchlive"
Integration mit LDAP
Um einheitliche Benutzerzugänge für verschiedene Anwendungen zu ermöglichen, wird oft auf ein zentrales LDAP Verzeichnis gesetzt.
Dieses kann für Nextcloud eingesetzt werden, damit Benutzer nicht lokal in Nextcloud, sondern in LDAP verwaltet werden können.
Siehe auch https://docs.nextcloud.com/server/latest/admin_manual/configuration_user/user_auth_ldap.html
Dazu muss die App "LDAP user and group backend" in den Nextcloud Apps aktiviert werden.
Dann muss die LDAP Anbindung in den Administrationseinstellungen unter "LDAP/AD-Integration" eingerichtet werden.
Der Server mit Port, die BenutzerDN mit Passwort und die BaseDN müssen eingetragen werden.
Es muss auch bestimmt werden, welche Klasse (z.B. inetOrgPerson) die Benutzer brauchen, um Zugriff auf die Nextcloud zu erhalten.
Falls schon Benutzer in der Nextcloud existieren, und diese zu LDAP mitgenommen werden sollen, kann der Anleitung aus diesem Forum Eintrag gefolgt werden: https://help.nextcloud.com/t/migration-to-ldap-keeping-users-and-data/13205
- Voraussetzung ist, dass der Benutzernamen der zu übernehmenden Benutzer in Nextcloud der uid in LDAP entspricht.
- Es wird ein Administrator Benutzer benötigt, der lokal angelegt wurde, und auch lokal bleibt.
- Mit diesem Administrator Benutzer wird die LDAP Anbindung eingerichtet.
- In der Experten Ansicht von LDAP/AD muss bei "Attribut für interne Benutzernamen" eingetragen werden: uid
- Klicke den Schalter "LDAP Benutzernamenzuordnung löschen"
- Klicke den Schalter "LDAP Gruppennamenzuordnung löschen"
- dann in der MySQL Datenbank anmelden, und aus uc_users alle Benutzer bis auf den Administrator Benutzer löschen
- Dann in der Nextcloud Weboberfläche sich alle Benutzer anzeigen lassen
- Nun gelingt die Anmeldung mit den anderen Benutzern mit dem LDAP Passwort, und die Dateien wurden übernommen.
Optimierung der Geschwindigkeit
Manchmal fühlt sich die Nextcloud träge an.
Folgende Änderungen können helfen:
- HTTP/2.0 aktivieren: dem Service von Hostsharing Bescheid geben
- Die App Dashboard deaktivieren, und dafür werden direkt die Dateien angezeigt
- Einblenden der README in den Ordnern abschalten: das kann pro Ordner in der UI geschehen (links unten), oder global:
occ config:app:set text workspace_available --value=0
. Siehe auch [1]
Default App einstellen
In der Datei config.php können wir einstellen, welche App direkt nach der Anmeldung gezeigt wird.
Das ist entweder die Dashboard App, wenn sie aktiviert ist, oder die Dateien App (files).
Falls der Kalender direkt angezeigt werden soll, muss folgende Zeile in der config.php hinzugefügt werden (siehe auch [2]):
'defaultapp' => 'calendar',
Nextcloud Updates
Updater über die Shell starten
Wenn die NextCloud sich nicht über das Webfrontend updaten lässt, kann der Updater auch per Shell im directory /updater durch ausführen des updater.phar gestartet werden:
xyz00-cloud@h00:~$ cd ~/nextcloud/updater
xyz00-cloud@h00:~/nextcloud/updater$ chmod u+x updater.phar
xyz00-cloud@h00:~/nextcloud/updater$ ./updater.phar
Es sollten außerdem ein paar Routine-Aufräumarbeiten durchgeführt werden:
xyz00-cloud@h00:~$ cd ~/nextcloud
xyz00-cloud@h00:~/nextcloud$ php occ db:add-missing-primary-keys --no-interaction
xyz00-cloud@h00:~/nextcloud$ php occ db:add-missing-columns --no-interaction
xyz00-cloud@h00:~/nextcloud$ php occ db:add-missing-indices --no-interaction
xyz00-cloud@h00:~/nextcloud$ php occ db:convert-filecache-bigint --no-interaction
So können die Apps noch alle aktualisiert werden:
xyz00-cloud@h00:~$ cd ~/nextcloud
xyz00-cloud@h00:~/nextcloud$ php occ app:update --all -n --no-ansi
Für weitere Informationen kann auf die offizielle Doku ab Ziffer 2. zurückgegriffen werden.
Hier gibt es ein kurzes Video, das die Anmeldung über die Kommandozeile mit Putty erklärt und die Aktualisierung von Nextcloud auf der Kommandozeile:
Wartungsmodus per Shell ein- oder ausschalten
So kann der Wartungsmodus angeschaltet werden:
xyz00-cloud@h00:~$ cd ~/nextcloud
xyz00-cloud@h00:~/nextcloud$ php occ maintenance:mode --on
So kann der Wartungsmodus wieder ausgeschaltet werden, d.h. die Nextcloud ist dann wieder in Betrieb:
xyz00-cloud@h00:~$ cd ~/nextcloud
xyz00-cloud@h00:~/nextcloud$ php occ maintenance:mode --off
Webfrontend-Updater Probleme / Lösungen
Datenbank: Indizes | Primärschlüssel | Konvertierungen
Aufgetreten nach erfolgtem Versionsupdate Nextcloud 19 auf Nextcloud 20
Nach dem erfolgten Update lädt automatisch die Seite: Sicherheits- und Einrichtungswarnungen auf dieser wird angemerkt, dass manuelle Schritte für die Datenbank durchzuführen sind. Dies betrifft Indizes, Primärschlüssel und Konvertierungen.
Per Shell in der directory /nextcloud folgende Kommandos ausführen:
xyz00-cloud@h00:~$ cd ~/nextcloud
xyz00-cloud@h00:~/nextcloud$ php occ db:add-missing-primary-keys --no-interaction
xyz00-cloud@h00:~/nextcloud$ php occ db:add-missing-columns --no-interaction
xyz00-cloud@h00:~/nextcloud$ php occ db:add-missing-indices --no-interaction
xyz00-cloud@h00:~/nextcloud$ php occ db:convert-filecache-bigint --no-interaction
Wichtig ist hier dem durch Nextcloud angegebenen Kommando ein php voranzustellen.
Update per Skript
Es ist möglich die regelmäßigen Updates weitgehend zu automatisieren. Ein Skript wäre etwa:
#!/bin/bash
if [ -f $HOME/nextcloud/occ ]; then
echo "Nextcloud Update";
cd $HOME/nextcloud;
php updater/updater.phar -vv --no-backup --no-interaction
php occ maintenance:mode --on
php occ db:add-missing-primary-keys --no-interaction
php occ db:add-missing-columns --no-interaction
php occ db:add-missing-indices --no-interaction
php occ db:convert-filecache-bigint --no-interaction
php occ app:update --all
php occ maintenance:mode --off
else
echo "Keine Nextcloud Installation gefunden";
fi
Update: bei old-stable Version bleiben
Normalerweise fragt jede Nextcloud Instanz zentral ab, welches Update zur Verfügung steht, abhängig vom Release Channel. Dabei wird aber relativ schnell auf die nächste Version gewechselt, also z.B. von Nextcloud 28 auf Nextcloud 29, obwohl Nextcloud 28 noch mehrere Monate gepflegt wird, und manche Apps noch nicht bereit sind für Nextcloud 29.
Es kann aber auch eine Alternative eingerichtet werden, in der Datei nextcloud/config/config.php, unter dem Eintrag updater.server.url
Hier wird z.B. auf einen Updater von unserem Mitglied Timotheus Pokorra verwiesen:
updater_server_url: "https://ncupdater.solidcharity.com"
Dahinter läuft ein Skript, mit dem wir noch länger eine bestimmte Version anbieten können: https://codeberg.org/tpokorra/ncupdater
Daten auf HDD Storage
Einrichtung des HDD Storage
Um den langsameren aber günstigeren HDD Storage von Hostsharing zu nutzen, kann das data Verzeichnis von SSD auf HDD Storage verschoben werden. Ein symbolischer Link reicht nicht aus, man muss den Pfad in der Nextcloud Konfigurationsdatei anpassen.
# Nextcloud in Wartungsmodus versetzen
xyz00-cloud@h00:~/nextcloud$ php occ maintenance:mode --on
# Daten auf HDD Storage verschieben
xyz00-cloud@h00:~/nextcloud$ mv data /home/storage/xyz00/users/cloud/
# symbolischen Link anlegen
xyz00-cloud@h00:~/nextcloud$ ln -s /home/storage/xyz00/users/cloud/data data
# Pfad in config.php ändern
nano config/config.php
# Die Zeile mit 'datadirectory' finden und entsprechend ändern:
# 'datadirectory' => '/home/storage/xyz00/users/cloud/data',
# Wartungsmodus beenden
xyz00-cloud@h00:~/nextcloud$ php occ maintenance:mode --off
Einschränkende Bemerkungen
Nextcloud Sync Client
Der Nextcloud Sync Client erfüllt eine Funktion ähnlich wie Dropbox, und synchronisiert ganze Ordnerstrukturen.
Gerade wenn man mit mehreren Menschen in einer Nextcloud arbeitet, ist diese Funktion mit Vorsicht zu benutzen.
- Änderungen an der Ordnerstruktur sollten nicht lokal, sondern im Webbrowser vorgenommen werden.
- Wenn die Gefahr besteht, dass mehrere Menschen gleichzeitig eine Datei bearbeiten, sollte die Datei nicht lokal, sondern im Webbrowser bearbeitet werden.
- Aus Sicht des Datenschutzes und der Daten-Minimierung sollte überlegt werden, ob die Daten wirklich auf jeden Laptop und Rechner synchronisiert werden sollen, oder ob es reicht, ausschließlich über den Webbrowser auf die Daten zuzugreifen.
weiterführende Links
- Nextcloud Dokumentation
- Nextcloud Erweiterungen ("Apps")
- Optimierung des Caches für Previews
- Ansible Playbook für Hostsharing