Nextcloud: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
 
(47 dazwischenliegende Versionen von 8 Benutzern werden nicht angezeigt)
Zeile 35: Zeile 35:
* PostgreSQL Datenbank
* PostgreSQL Datenbank


  xyz00@hsadmin> user.add({set:{name:'xyz00-cloud',password:'geheim',shell:'/bin/bash',comment:'Nextcloud'}})
<syntaxhighlight lang=shell>
  xyz00@hsadmin> domain.add({set:{name:'cloud.example.org',user:'xyz00-cloud'}})
xyz00@hsadmin> user.add({set:{name:'xyz00-cloud',password:'geheim',shell:'/bin/bash',comment:'Nextcloud'}})
  xyz00@hsadmin> postgresqluser.add({set:{name:'xyz00_nextclusr',password:'geheim'}})
xyz00@hsadmin> domain.add({set:{name:'cloud.example.org',user:'xyz00-cloud'}})
  xyz00@hsadmin> postgresqldb.add({set:{name:'xyz00_nextcloud',owner:'xyz00_nextclusr'}})
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'':


  ssh -l xyz00-cloud xyz00.hostsharing.net
<syntaxhighlight lang=shell>
ssh -l xyz00-cloud xyz00.hostsharing.net
</syntaxhighlight>


''htdocs'' Verzeichnis vorbereiten
''htdocs'' Verzeichnis vorbereiten


  cd
<syntaxhighlight lang=shell>
  mkdir nextcloud
cd
  cd doms/cloud.example.org
mkdir nextcloud
  rm -rf subs/www subs-ssl/www htdocs-ssl
cd doms/cloud.example.org
  ln -s $HOME/nextcloud htdocs-ssl
rm -rf subs/www subs-ssl/www htdocs-ssl
ln -s $HOME/nextcloud htdocs-ssl
</syntaxhighlight>


Nextcloud herunterladen und entpacken.
Nextcloud herunterladen und entpacken.


  cd  
<syntaxhighlight lang=shell>
  wget https://download.nextcloud.com/server/releases/nextcloud-20.0.8.zip
cd  
  unzip nextcloud-20.0.8.zip  
wget https://download.nextcloud.com/server/releases/nextcloud-27.1.2.zip
  rm nextcloud-20.0.8.zip
unzip nextcloud-27.1.2.zip  
  mkdir data tmp
rm nextcloud-27.1.2.zip
  chmod 700 data tmp
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:  


  memory_limit=512M
<syntaxhighlight lang=ini>
  session.save_path=/home/pacs/xyz00/users/cloud/tmp
memory_limit=512M
session.save_path=/home/pacs/xyz00/users/cloud/tmp
Dann mit einem Editor diese Datei bearbeiten: In der erste Zeile den korrekten Pfad des vorher angelegten tmp-Verzeichnisses eintragen.
</syntaxhighlight>
 
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  
Im Browser auf die Seite  
Zeile 81: Zeile 91:
* PostgreSQL-User und Passwort aus dem ersten Schritt oben
* PostgreSQL-User und Passwort aus dem ersten Schritt oben
* Name der PostgreSQL-Datenbank aus dem ersten Schritt
* Name der PostgreSQL-Datenbank aus dem ersten Schritt
* "localhost" als Datenbankserver
* "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
* 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.
'''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 90: Zeile 112:
Dieser Teil ist optional.
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).
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 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).


Mit dem Hostsharing-Service wird ein IP-Port für die Nutzung von Redis vereinbart.
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 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.
 
[[Datei:Nextcloud-ClamAV-Einstellungen.png||nextcloud einstellungen für die virenscanner-app]]
 
== 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]].


Für den Redis-Dienst lege ich folgende Struktur an:
In der Nextcloud sind folgende ''Apps'' zu installieren:
* Full Text Search
* Full Text Search - Elasticsearch Platform
* Full Text Search - Files


  cd ~
nach der Installation der drei Apps steht in den Einstellungen ein neuer Menüpunkt "Volltextsuche" zur Verfügung.
  mkdir -p ~/redis/etc
  mkdir -p ~/redis/var


In ''~/redis/etc'' lege ich eine Konfigurationsdatei ''redis.conf'' für den Redis-Dienst ab:
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


  daemonize yes
Die anderen Einstellung nach den eigenen Vorstellungen vornehmen.
  pidfile /home/pacs/xyz00/users/cloud/redis/var/redis-server.pid
  requirepass mein-redis-passwort                   
  port 32123
  tcp-backlog 128
  bind 127.0.0.1
  timeout 300   
  loglevel notice
  logfile /home/pacs/xyz00/users/cloud/redis/var/redis.log
  databases 16
  save 900 1
  save 300 10 
  save 60 10000
  slave-serve-stale-data yes
  appendonly no
  dbfilename dump.rdb
  dir /home/pacs/xyz00/users/cloud/redis/var


Den Start und das Monitoring des Redis-Dienstes übernimmet ''monit''. Hier eine geeignete Datei ''~/.monitrc'':
Der initiale Aufbau des Suchindex erfolgt über ein "occ"-Kommando auf der Shell:


  set daemon 60
<syntaxhighlight lang=shell line>
      with start delay 120
cd nextcloud/
  set logfile /home/pacs/xyz00/users/cloud/monit/var/monit.log
php occ fulltextsearch:index --output
  set idfile /home/pacs/xyz00/users/cloud/monit/var/monit.id
</syntaxhighlight>
  set statefile /home/pacs/xyz00/users/cloud/monit/var/monit.state
  set mailserver localhost
  set mail-format { from: monit@cloud.example.com }
  set alert webmaster@example.com
  set httpd port 32123 address xyz00.hostsharing.net
      allow nextcloud:mein-monit-passwort
  check process redis with pidfile /home/pacs/xyz00/users/cloud/redis/var/redis-server.pid
      start program "/usr/bin/redis-server /home/pacs/xyz00/users/cloud/redis/etc/redis.conf"
      stop program "/bin/bash -c '/bin/kill $( cat /home/pacs/xyz00/users/cloud/redis/var/redis-server.pid )'"


Zugriffsrechte für die Datei ''~/.monitrc'' setzen:
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


  cd ~
Zur Pflege des Indexes wird ein weiterer Hintergrundprozess gestartet:
  chmod 600 .monitrc


Verzeichnis für ''monit'' anlgegen:
<syntaxhighlight lang=shell line>
cd nextcloud/
php occ fulltextsearch:live -q
</syntaxhighlight>


  cd ~
Die Monit Konfiguration dafür sieht so aus:
  mkdir -p monit/var


In der Konfiguration der Nextcloud (in ''~/nextcloud/config/config.php'') wird der Redis-Cache wie folgt konfiguriert:
<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>


  'memcache.local' => '\\OC\\Memcache\\Redis',
<syntaxhighlight lang=shell line>
  'memcache.distributed' => '\\OC\\Memcache\\Redis',
#~/bin/stop-fulltextsearchlive
  'memcache.locking' => '\\OC\\Memcache\\Redis',
#
  'redis' =>
#!/bin/bash
    array (
export HOME=/home/pacs/xyz00/users/cloud
      'host' => '127.0.0.1',
kill $( cat $HOME/var/fulltextsearchlive.pid )
      'port' => 32123,
</syntaxhighlight>
      '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''
~/.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 ==


  compress
Um einheitliche Benutzerzugänge für verschiedene Anwendungen zu ermöglichen, wird oft auf ein zentrales LDAP Verzeichnis gesetzt.  
  /home/pacs/xyz00/users/cloud/redis/var/redis.log {
    rotate 5
    daily
    missingok
  }
  /home/pacs/xyz00/users/cloud/monit/var/monit.log {
    rotate 2
    weekly
    missingok
  }


Eine Crontab sorgt für den Start von Monit und das tägliche Rotieren der Logdateien:
Dieses kann für Nextcloud eingesetzt werden, damit Benutzer nicht lokal in Nextcloud, sondern in LDAP verwaltet werden können.


  # m h  dom mon dow  command
Siehe auch https://docs.nextcloud.com/server/latest/admin_manual/configuration_user/user_auth_ldap.html
  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
  1,16,31,46 * * * * /usr/bin/php7.3 $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.
Dazu muss die App "LDAP user and group backend" in den Nextcloud Apps aktiviert werden.


== Nextcloud mit Online Office ==
Dann muss die LDAP Anbindung in den Administrationseinstellungen unter "LDAP/AD-Integration" eingerichtet werden.


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.
Der Server mit Port, die BenutzerDN mit Passwort und die BaseDN müssen eingetragen werden.


== Nextcloud mit Nextcloud Talk ==
Es muss auch bestimmt werden, welche Klasse (z.B. inetOrgPerson) die Benutzer brauchen, um Zugriff auf die Nextcloud zu erhalten.


Ü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]]
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


= weiterführende Links =
* 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.


* [https://ownyourbits.com/2019/06/29/understanding-and-improving-nextcloud-previews/ Optimierung des Caches für Previews]
= Nextcloud Updates =


= Updater über die Shell starten =
== 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:
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:~/nextcloud/updater$ chmod u+x updater.phar
<syntaxhighlight lang=shell line>
  xyz00-cloud@h00:~/nextcloud/updater$ ./updater.phar
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 210: Zeile 302:
* [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]


Wartungsmodus per Shell (über die config.php) ein- oder ausschalten:
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 ==
 
=== 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:
 
<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.
 
== Update per Skript ==
 
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>
 
= 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.
 
<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>
 
= weiterführende Links =
 
* [https://docs.nextcloud.com/ Nextcloud Dokumentation]
* [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://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/nextcloud Ansible Playbook für Hostsharing]
 
= Nextcloud Reseller bei HS =


Im nextcloud-Ordner die Datei config / config.php mit dem bevorzugten Shell-Editor (z. B. vim) öffnen.
[https://nextcloud.ossaas.de OS SaaS]
Suche nach 'maintenance' => true,
Ändern von true in false
Speichern
Webseite neu laden


----
----
[[Kategorie:HSDoku]]
[[Kategorie:HSDoku]]
[[Kategorie:Installationsanleitungen]]
[[Kategorie:Installationsanleitungen]]
[[Kategorie:Ansible Playbook]]
[[Kategorie:Software]]
[[Kategorie:Software]]
[[Kategorie:CalDAV]]
[[Kategorie:CalDAV]]

Aktuelle Version vom 28. Mai 2024, 15:32 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 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 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.

nextcloud einstellungen für die virenscanner-app

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:

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.

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

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

weiterführende Links

Nextcloud Reseller bei HS

OS SaaS