Nextcloud - Installation des High Performance Backend
In diesem Beitrag wird das mit Nextcloud Server Version 21 erschienene High Performance Backend installiert und konfiguriert.

Inhalt:
- Vorwort
- Vorbereitungen
- Installation und Konfiguration
- Nginx Konfiguration
- Installationsstart und App Konfiguration
- Troubleshooting
- Fazit
Vorwort
Mit der Major Version 21 von Nextcloud wurde das »High Performance Backend« vorgestellt.
Diese Komponente soll die Requests aller Desktop- oder Mobilen Clients, inklusive Usern aus dem Web, an den Server vermindern, indem die Clients nicht mehr Pollen müssen. Das bedeutet, dass bisher alle Clients beim Server angefragt haben, ob es Änderungen in den Dateien gibt. Ab jetzt benachrichtigt der Server mithilfe der »Notifications« App diese, wenn Änderungen bereitstehen.
In meiner privaten Cloud mit <10 Nutzern konnte ich keine große Entlastung feststellen, im Betrieb mit mehr als 30 Nutzern und sehr häufigen Dateiänderungen konnten die Anfragen circa um 30 bis 35% gesenkt werden.
Vorbereitungen
Zur Installation wird eine eigene Nextcloud Instanz, mit mindestens Version 21 benötigt, zudem sollte Redis installiert und konfiguriert sein. Das Github Repo spielt Szenarien für verschiedene Webserver/Proxies durch, da ich lediglich Nginx nutze, wird sich diese Installation ebenso nur mit dem beliebten Webserver beschäftigen.
Installation und Konfiguration
Zuerst wird die App aus dem In-App Store bezogen. Im Menü Werkzeuge lässt sich die gesuchte Applikation »Client Push« finden: https://apps.nextcloud.com/apps/notify_push

Nginx Konfiguration
Im Anschluss daran muss noch eine Ergänzung in der Server Konfiguration vorgenommen werden.
sudo nano /etc/nginx/conf.d/cloud.domain.tld
Hier wird im Server Block noch folgender Inhalt eingefügt:
server {
[...]
location /push/ {
proxy_pass http://localhost:7867/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
[...]
}
Nach der Änderung wird mithilfe von nginx -t noch die Konfiguration gecheckt. Im Anschluss daran wird der Webserver noch neu gestartet.
sudo systemctl restart nginx
Installationsstart und App Konfiguration
Danach kann die Installation erfolgen. Hierzu wird ins Installationsverzeichnis navigiert und anschließend via OCC das Setup gestartet.
cd /var/www/nextcloud
sudo -u www-data php occ notify_push:setup

In einer separaten SSH Session wird jetzt noch die obige Datei zum Start der App erstellt.
sudo nano /etc/systemd/system/notify_push.service
Der Inhalt ist aus dem Output zu entnehmen:
[Unit]
Description = Push daemon for Nextcloud clients
[Service]
Environment=PORT=7867
Environment=NEXTCLOUD_URL=https://cloud.domain.tld
ExecStart=/var/www/nextcloud/apps/notify_push/bin/x86_64/notify_push /var/www/nextcloud/config/config.php
User=www-data
[Install]
WantedBy = multi-user.target
Ist dies erledigt, setzen wir die Installation mit »Enter« fort. Zudem folgen wir der Anweisung im Terminal und setzen den folgenden Befehl ab
systemctl enable --now notify_push
Troubleshooting
Restart der App nach Updates
Nach Updates wird momenten jedesmal ein neues Binary bezogen. Hier muss der Service aktuell noch neu gestartet werden, anschließend funktioniert alles wieder normal.
systemctl restart notify_push.service
weitere Vorfälle
Zusätzliche Fehlkonfigurationen können im Repository eingesehen werden. Ich habe bei knapp 10 Instanzen nur das Problem nach Updates der App festgestellt.
Fazit
Binnen 15 Minuten kann das »High Performance Backend« implementiert werden. Aus meiner Sicht ist es nur für größere Instanzen sinnvoll oder wenn viele Daten dauernd geändert werden.