Nextcloud bauen mit Jet – 64 Bit Edition #06 – Optimierung

https://www.youtube.com/watch?v=Se7NV_c6rb

Alle Befehle in diesem Tutorial werden mit Administratorenrechten ausgeführt.
Daher bitte einmal den Befehl sudo -s ausführen, um Rootrechte zu erhalten.

Damit die Cloud nun auch einwandfrei läuft gibt es noch einiges zutun. Das macht uns die Cloud auch ziemlich deutlich klar, wenn wir in die „Verwaltungs-Einstellungen“ und dort in die „Übersicht“ wechseln.
Hier werden uns einige Hinweise auf Probleme und Optimierungen angezeigt. Manche lassen sich davon ganz einfach beheben, andere sind mit etwas mehr Aufwand verbunden.
Aber fangen wir mal an.

Fehlende PHP Module

Die Nextcloud läuft zwar mit den bereits installierten PHP Modulen, aber da geht noch mehr. Daher weist die Nexcloud uns mit folgenden Meldungen darauf hin was zutun ist:

Dieser Installation fehlen einige empfohlene PHP-Module. Für bessere Leistung und bessere Kompatibilität wird dringend empfohlen, diese zu installieren.
• intl

Das PHP-Modul „imagick“ ist nicht aktiviert, die Theming-App hingegen schon. Damit die Favicon-Generierung korrekt funktioniert, musst du dieses Modul installieren und aktivieren.

Die PHP-Module „gmp“ und/oder „bcmath“ sind nicht aktiviert. Wenn du die passwortlose WebAuthn-Authentifizierung verwendest, sind diese Module erforderlich.

Um diese Meldungen zu entfernen führen wir folgende Installation aus und starten danach den Apache Webserver neu. Auch hier gilt wieder, dass die PHP Version irgendwann veraltet sein könnte. Bitte daher die hier verwendeten Versionsnummern durch die von euch zuvor installierte Version ersetzen.

apt install php8.2-intl php8.2-imagick php8.2-gmp php8.2-bcmath
systemctl restart apache2

Danach sollten die benannten Warnungen weg sein. Allerdings kann es sein, dass eine neue hinzugekommen ist.

Dem Modul php-imagick fehlt die SVG-Unterstützung. Für eine bessere Kompatibilität wird empfohlen, es zu installieren.

Diese beheben wir indem wir das Programm imagick um Funktionalitäten erweitern:

apt install libmagickcore-6.q16-6-extra

PHP Einstellungen + Memcache

Ein der wichtigsten Änderungen ist der sogenannte PHP Memcache der dafür sorgen kann, dass die Cloud deutlich stabieler und schneller läuft. Aber auch weitere Einstellungen sind für PHP zu setzen.
Beheben wollen wir damit folgende Meldungen:

Die PHP-Speichergrenze liegt unterhalb des empfohlenen Wertes von 512MB.

PHP configuration option output_buffering must be disabled

Hierzu müssen wir zwei PHP Konfigurationsdatein angepackt werden. Einmal die PHP Konfiguration für den Apache Webserver und einmal die Konfiguration für die Nutzung von PHP über die Konsole. Vorsicht hier auch wieder die passende Versionsnummer im Pfad verwenden!
Die Hauptarbeiten erfolgen hierbei in der /etc/php/8.2/apache2/php.ini
Hierbei müssen folgende Zeile entweder gesucht und dementsprechend angepasst werden, oder wenn nicht vorhanden eingefügt werden:

memory_limit = 512M
output_buffering = 0

Apache Konfiguration

Der Apache selber muss auch noch etwas überarbeitet werden. Im Detail gehen wir folgende Meldungen an:

Der „Strict-Transport-Security“-HTTP-Header ist nicht auf mindestens „15552000“ Sekunden eingestellt. Für mehr Sicherheit wird das Aktivieren von HSTS empfohlen, wie es in den Sicherheitshinweisen ↗ erläutert ist.

Dein Webserver ist nicht richtig konfiguriert, um „/.well-known/webfinger“ aufzulösen. Weitere Informationen hierzu findest du in unserer Dokumentation ↗.

Dein Webserver ist nicht richtig konfiguriert, um „/.well-known/nodeinfo“ aufzulösen. Weitere Informationen hierzu findest du in unserer Dokumentation ↗.

Dein Webserver ist nicht richtig konfiguriert, um „/.well-known/caldav“ aufzulösen. Weitere Informationen hierzu findest du in unserer Dokumentation ↗.

Dein Webserver ist nicht richtig konfiguriert, um „/.well-known/carddav“ aufzulösen. Weitere Informationen hierzu findest du in unserer Dokumentation ↗.

Nun passen wir unsere Apachekonfiguration unter /etc/apache2/sites-available/000-default.conf wie folgt an:

Hinzugefügt wird folgender Teil:

<IfModule mod_headers.c>
   Header always set Strict-Transport-Security "max-age=15768000; preload"
</IfModule>

Vorher

<VirtualHost *:80>
 DocumentRoot /var/www/nextcloud
 <IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteCond %{HTTPS} off
 RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
 </IfModule>
</VirtualHost>
<IfModule mod_ssl.c>
 <VirtualHost *:443>
  DocumentRoot /var/www/nextcloud
  SSLEngine on
  SSLCertificateFile /var/cert/server.crt
  SSLCertificateChainFile /var/cert/server.csr
  SSLCertificateKeyFile /var/cert/server.key
 </VirtualHost>
</IfModule>

Nachher

<VirtualHost *:80>
 DocumentRoot /var/www/nextcloud
 <IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTPS} off
  RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
 </IfModule>
</VirtualHost>
<IfModule mod_ssl.c>
 <VirtualHost *:443>
  DocumentRoot /var/www/nextcloud
  SSLEngine on
  SSLCertificateFile /var/cert/server.crt
  SSLCertificateChainFile /var/cert/server.csr
  SSLCertificateKeyFile /var/cert/server.key
  <IfModule mod_headers.c>
   Header always set Strict-Transport-Security "max-age=15768000; preload"
  </IfModule>
 </VirtualHost>
</IfModule>

Zusätzlich müssen wir noch in der Datei /etc/apache2/apache2.conf die Einstellungen für den Pfad /var/www/ anpassen. Der Überarbeitete Eintrag muss dann wie folgt aussehen (Im Prinzip muss nur die Zeile AllowOverride von None auf All geändert werden:

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All 
        Require all granted
</Directory>

Danach müssen wir nur noch das Haeder Modul des Apaches aktivieren und den Apache mal wieder neu starten:

a2enmod headers
systemctl restart apache2

Nextcloud Einstellungen + Cache mit APCu und Redis

Jetzt fehlen zum Schluss nur noch ein paar Einstellungen an der Nextcloud selber.
Unter anderem das Caching. Hier scheiden sich die Geister, wie der perfekte Weg aussieht (Link). Aber aktuell klingt es danach, dass sich APCu für das lokale Caching anbietet und Redis für das Transactional File Locking. Daher werden wir eine Kombination aus beiden Cachmethoden umsetzen.
Wir kümmern uns als erstes mal um die folgenden Fehler.

Für deine Installation ist keine Standard-Telefonregion festgelegt. Dies ist erforderlich, um Telefonnummern in den Profileinstellungen ohne Ländercode überprüfen zu können. Um Nummern ohne Ländercode zuzulassen, füge bitte „default_phone_region“ mit dem entsprechenden ISO 3166-1-Code ↗ der gewünschten Region hinzu.

Die Datenbank wird zum Sperren von Transaktionsdateien verwendet. Um die Leistung zu verbessern, richte bitte, sofern verfügbar, Memcache ein. Weitere Informationen findest du in der Dokumentation ↗.

Es wurde kein PHP Memory Cache konfiguriert. Konfiguriere zur Erhöhung der Leistungsfähigkeit, soweit verfügbar, einen Memory Cache. Weitere Informationen findest du in unserer Dokumentation ↗.

Diese beheben wir größtenteils in der Datei /var/www/nextcloud/config/config.php
Hier fügen wir folgende Zeile ein (Vorsicht, eine falsche Schreibweise der Zeile kann dazu führen, dass die Cloud nicht funktioniert)

'default_phone_region' => 'DE',
'filelocking.enabled' => true,
'memcache.local' => '\OC\Memcache\APCu',
'memcache.locking' => '\OC\Memcache\Redis',
'memcache.distributed' => '\OC\Memcache\Redis',
'redis' => array(
     'host' => '/var/run/redis/redis-server.sock',
     'port' => 0,
     'timeout' => 0.0,
),

Damit wir den Memcache nun auch nutzen können, müssen wir noch den Redis Server und die dafür benötigte PHP Schnitstelle und den APCu Cache installieren, den www-data Benutzer redis Rechte geben, damit dieser überhaupt Redis nutzen kann, das Redis Modul in der richtigen PHP Version aktivieren und den Apache Webserver neustarten.

apt install redis php8.2-redis php8.2-apcu
usermod -aG redis www-data
phpenmod -v 8.2 redis
systemctl restart apache2

Damit Redis möglichst effizient genutzt werden kann, und die Unix Sockets verwendet, müssen wir noch in die Konfiguration des Servers (/etc/redis/redis.conf) und dort folgende Zeilen wie folgt anpssen, oder ggf. einfügen:

unixsocket /var/run/redis/redis-server.sock
unixsocketperm 770

Danach muss noch der Redis Server neugestartet werden

systemctl restart redis

Damit jetzt auch noch die Befehlszeile mit dem Cache funktioniert, müssen wir hier noch APCu für diese aktivieren. Hierzu gehen wir in die PHP Konfiguration unserer Version (ggf. Pfad anpassen). Bei der Version wäre dies /etc/php/8.2/cli/php.ini und dort fügen wir folgende Zeile hinzu:

apc.enable_cli=1

Mail Einstellungen

Als letztes gehen wir folgende Meldung an:

Du hast deine E-Mail-Serverkonfiguration noch nicht festgelegt oder überprüft. Bitte gehe zu den Grundeinstellungen , um sie einzustellen. Verwende anschließend die Schaltfläche „E-Mail senden“ unterhalb des Formulars, um deine Einstellungen zu überprüfen.

Diese lässt sich zur Abwechslung mal per Weboberfläche beheben… nachdem wir noch kurz das Programm sendmail installiert und den Apache neugestartet haben.

apt install sendmail
systemctl restart apache2

Hierzu wechseln wir in die Einstellungen und dort auf die „Persönlichen Informationen“ von unserem Benutzer und vergeben ihm dort eine Mailadresse (Die muss nicht mal existieren)

Danach wechseln wir in die „Grundeinstellungen“ und stellen dort im Bereich „E-Mail-Server“ den „Sendemodus“ auf Sendmail und den „Sendmail-Modus“ auf pipe (-t). Danach muss nur noch einmal auf den Knopf E-Mail senden geklickt werden.

Schreibe einen Kommentar