Nextcloud

Aus Hostsharing Wiki
Version vom 2. August 2019, 14:13 Uhr von Hsh-peterhormanns (Diskussion | Beiträge) (Nextcloud beschleunigen mit Redis)
Zur Navigation springen Zur Suche springen

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-16.0.3.zip 
 unzip nextcloud-16.0.3.zip 
 rm nextcloud-16.0.3.zip
 mkdir data tmp
 chmod 700 data tmp

Nextcloud konfigurieren

Zur Zeit muss für Nextcloud PHP in der Version 7.3 manuell aktiviert werden. Eine Anleitung dazu findet sich auf der Seite PHP#Vorinstallierte_PHP_Version_wechseln

Im Verzeichnis "$HOME/doms/cloud.example.org/fastcgi-ssl/" eine Datei "php.ini" anlegen mit folgendem Inhalt:

 session.save_path=/home/pacs/xyz00/users/cloud/tmp
 opcache.enable=1
 opcache.enable_cli=1
 opcache.interned_strings_buffer=8
 opcache.max_accelerated_files=10000
 opcache.memory_consumption=128
 opcache.save_comments=1
 opcache.revalidate_freq=1

Dann mit einem Editor diese Datei bearbeiten: In der erste 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
  • Das Verzeichnis "/home/pacs/xyz00/users/cloud/data/" als Daten-Verzeichnis

Nextcloud beschleunigen

Dieser Teil ist optional.

Wenn regelmäßig im Browser mit Nextcloud gearbeitet werden soll, ist Nextcloud im Browser ost 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 Shared Webspace muss Redis als eigener Server Daemon angemeldet werden und ist kostenpflichtig. Mit dem Hostsharing-Service wird ein IP-Port für die Nutzung von Redis vereinbart.

Für den Redis-Dienst lege ist folgende Struktur an:

 cd ~
 mkdir -p ~/redis/etc
 mkdir -p ~/redis/var

In ~/etc/redis/etc lege ich eine Konfigurationsdatei redis.conf für den Redis-Dienst ab:

 daemonize yes
 pidfile /home/pacs/xyz00/users/cloud/redis/var/redis-server.pid
 requirepass mein-redis-passrot                    
 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:

 set daemon 60
     with start delay 120
 set logfile /home/pacs/xyz00/users/cloud/monit/var/monit.log
 set idfile /home/pacs/xyz00/users/cloud/monit/var/monit.id
 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 32120 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 )'"

Verzeichnis für monit anlgegen:

 cd ~
 mkdir -p monit/var

In der Konfiguration der Nextcloud (in ~/nextcloud/config/config.php) wird der Redis-Cache wie folgt konfiguriert:

 'memcache.distributed' => '\\OC\\Memcache\\Redis',
 'memcache.locking' => '\\OC\\Memcache\\Redis',
 'redis' => 
   array (
     'host' => '127.0.0.1',
     'port' => 32123,
     '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
 }
 /home/pacs/xyz00/users/cloud/monit/var/monit.log {
   rotate 2
   weekly
 }

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
 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.