NextCloud (21) – High Performance Backend für die Daten

Ab NextCloud 21 kommen tolle Neuerungen dazu.
Unter anderem, lässt sich die Performance für das Backend enorm beschleunigen, damit die Daten noch schneller ausgetauscht werden können.
Zeitgleich entlastet das die CPU und den RAM etwas.
Laut den NextCloud-Entwicklern, kann die Auslastung bis zu 90% reduziert werden.
(Sicher wenn man ein Raspberry Pi oder so nutzt 😉 )

Die Installation ist recht einfach und schnell erledigt.

Voraussetzung:

– NextCloud 21
– nginx als Webserver (wir benötigen den Proxy-Dienst davon!)
– Der Redis-Dienst
– Port 7867 aktuell nicht belegt
– SSL-Zugriff (HTTPS)
– Root-Zugriff zum Server

Solltest du meine Anleitungen befolgt haben, sind bereits alle Voraussetzungen bei dir in der Regel installiert.

Legen wir los!


Die Installation

1. Die App „Client Push“ aus dem App-Store herunterladen und installieren

2. Die nginx-Config für NextCloud um folgenden Eintrag erweitern:

# nano /etc/nginx/sites-enabled/nextcloud

Füge diesen Inhalt bei dem HTTPS-Bereich für die NextCloud ein (am besten am Ende davon):

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;
}

Solltest du nur HTTP nutzen, füge den Code dort hinzu.

3. Teste die nginx-Config und lass die Config neu einlesen:

# nginx -t
# service nginx reload

4. Setup für notify_push starten, um Infos zu erhalten
Wechsel hierzu in das Installationsverzeichnis von NextCloud und führe das Setup aus.

# cd /var/www/nextcloud
# sudo -u www-data php occ notify_push:setup

TIPP: Falls du mehrere PHP-Versionen installiert hast und das Ganze mit z.B. php7.4 ausführen willst, nutze folgenden Befehl:

# sudo -u www-data /usr/bin/php7.4 occ notify_push:setup

Drücke 1x ENTER, um die Installation zu starten.
Die Installation wird fehlschlagen, aber wir erhalten nun eine automatisch passend generierte Konfiguration für eine service-Datei, die wir anlegen müssen.
Es sollte in etwa folgende Config ausgegeben werden:

[Unit]
Description = Push daemon for Nextcloud clients

[Service]
Environment=PORT=7867
Environment=NEXTCLOUD_URL=https://deine-domain.de
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

Drücke erneut ENTER, um das Setup abbrechen zu lassen.

5. Service-Datei anlegen
Öffne den Editor nano und lege die Service-Datei auf dem angegeben Pfad an:

# nano /etc/systemd/system/notify_push.service

Füge dort die Ausgabe ein und speichere die Datei ab.
Schließe sie wieder und aktiviere das Ganze mit folgendem Befehl:

# systemctl enable --now notify_push

6. Proxy-Modus testen
Wir führen das Setup nun erneut aus, um weiter machen zu können.

# cd /var/www/nextcloud
# sudo -u www-data php occ notify_push:setup

Das Setup wird erneut Fehlschlagen, aber dieses mal werden wir noch darauf hingewiesen, damit eine IP sich nicht in der „trusted proxy“-Liste befindet.

Öffne dazu die NextCloud-Config und füge im unteren Bereich die gewünschte IP zu den trusted proxys hinzu.

# nano /var/www/nextcloud/config/config.php
  array (
    0 => '127.0.0.1',
    1 => '::1',
    2 => 'Die-Fehlende-IP',
  ),

In der Regel fehlt hier die IP-Adresse des Servers selbst. In deinem Heimnetzwerk ist es die lokale IP (192.168.X.X) und bei einem Server im Rechenzentrum ist es die öffentliche IP (123.123.123.123).
Am besten fügst du die IPv4 und IPv6-Adresse hinzu.

7. Installation erneut starten
Nun ist es an der Zeit, die Installation durchlaufen zu lassen, denn wir haben alle „Fehler“ behoben.
Also noch einmal …

# cd /var/www/nextcloud
# sudo -u www-data php occ notify_push:setup

und alles mit ENTER bestätigen.

Wir sollten die Meldung sehen, das alles korrekt funktioniert und das Setup erfolgreich war.

Wir sind fertig!
Deine NextCloud sollte nun performanter sein!

Benchmarks habe ich aktuell leider keine am Start, aber der Aufruf der Daten geht nun deutlich flotter und je nach Anbindung der Cloud, ist der Datenaustausch auch spürbar schneller.


Hinweis für Updates:

Über die NextCloud-Oberfläche können ganz bequem Updates für die App installiert werden.
In der Regel sind aber auch Updates für das Backend-System damit installiert worden, die nur korrekt mit einem Neustart des notify_push-Service übernommen werden.
Daher ab und zu mal den Service neu starten lassen.

# service notify_push restart

3 Kommentare

  1. Hi,
    Kompliment für diese tolle, tolle Tutorialrehe. Alles hat auf Anhieb prima funktioniert.
    Jetzt wollte ich auf PHP 8.0 upgraden. Dazu gibt es ja einige Anleitungen im Netz. Wenn ich aber danach versuche Nextcloud zu starten, bekomme ich die Fehlermeldung “internal Server Error bla bla bla”. Hast Du mal eine kleine Anleitung speziell für Deine Nextcloud-Installation geplant?

    • Danke für dein Feedback!
      Es gibt zwar Anleitungen für PHP8.0, aber die laufen meines Wissens nach aktuell nicht. Ich habe es auch noch nicht geschafft, NextCloud mit PHP8 zum laufen zu bekommen.
      Zum einen müssen aber alle php8.X-XXX-Pakete installiert werden und zum anderen muss die nginx-Config auf php8.X editiert werden. Vielleicht mit ein paar Anpassungen der PHP-Config-Daten könnte NextCloud laufen, aber ich vertrau der Sache noch nicht.
      Ein Update für php8 werde ich vielleicht mal erstellen, sobald es überhaupt und stabil funktioniert 🙂

  2. Danke für die schnelle Antwort.
    Ich hab jetzt mal folgendes probiert und es klappt ganz gut:
    nochmal einen Debian-server aufgesetzt und VOR der Nextcloudinstallation auf php8.0.5 upgedatet. Dann exakt nach Deiner Anleitung installiert (natürlich alle 7.4 Einträge mit 8.0 ersetzt und das jason Modul aus der zu installierenden Modulliste entfernt). Läuft bis jetzt ganz gut.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.