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.