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