Nextcloud Unix-Socket Kommunikation (Ubuntu 22.04/Debian12)

Unix Sockets gelten im Allgemeinen als schneller und sicherer, als die auf nativer TCP-Kommunikation aufbauenden Verbindungen. Mit rudimentären Benchmarks (ab oder wrk) lässt sich das bspw. so ermitteln:

ab -k -n 10000 -c 1000 http://127.0.0.1/api/user/1
wrk -t1 -c1000 -d5s http://127.0.0.1:80/api/user/1

Die sogenannten „Unix Domain Sockets“ führen häufig zu schnelleren Verbindungen bspw. zwischen nginx und PHP (php-fpm) und verbrauchen dabei deutlich weniger Systemressourcen. Der Grund liegt u.a. darin, dass der sogenannte TCP-Overhead bei der Kommunikation entfällt. Zudem gelten Unix-Sockets als „sicherer“ oder anders ausgedrückt als „not routable“, da diese nicht von außen erreichbar sind.

Weiterführende Informationen dazu finden Sie im Internet, bspw. hier.

Die nachfolgenden Anpassungen basieren auf der Nextcloud Installationsanleitung bzw. dem Installationsskript (zero.sh) und den darin verwendeten Konfigurationen.

MariaDB 10.x

» MariaDB:

sudo mysql
CREATE USER 'www-data'@'localhost' IDENTIFIED VIA unix_socket;
GRANT ALL PRIVILEGES ON nextclouddb.* TO 'www-data'@'localhost';
FLUSH PRIVILEGES;

» Nextcloud: Anpassung der config.php

nano /var/www/nextcloud/config/config.php
[...]
'dbtype' => 'mysql',
'dbname' => 'nextclouddb',
'dbhost' => 'localhost:/var/run/mysqld/mysqld.sock',
'dbport' => '',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,
'dbuser' => 'nextclouddbuser',
'dbpassword' => 'nextclouddbpassword',
[...]

» Restart der Datenbank

systemctl restart mariadb.service

PHP 8.X

» Anpassung der fpm/php.ini

nano /etc/php/8.X/fpm/php.ini
[...]
#session.save_handler = files
session.save_handler = redis
session.save_path = "unix:///var/run/redis/redis-server.sock?persistent=1&weight=1&database=10"
redis.session.locking_enabled = 1
redis.session.lock_retries = -1
redis.session.lock_wait_time = 10000
[...]

Redis-Server

» Anpassung der redis.conf

nano /etc/redis/redis.conf
[...]
# port 6379
port 0
[...]
unixsocket /var/run/redis/redis-server.sock
unixsocketperm 770
[...]

Dienste neu starten:

systemctl restart redis.service php8.X-fpm.service mariadb.service nginx.service

Über Ihre Unterstützung (diese wird ordnungsgemäß versteuert!) würden sich meine Frau, meine Zwillinge und ich sehr freuen. Vorab vielen Dank!