Zum Inhalt springen

Nextcloud

aus www.kruedewagen.de, Homepage von Ralf und Judith Krüdewagen (Kruedewagen)

Nextcloud ist ein Fork von ownCloud und dient vorrangig als Cloud-Speicherdienst für den eigenen Server.

Nextcloud Infos

Migration von Owncloud:

Installation

  • Nextcloud All-In-Once (AIO) - als Alternative zur manuellen PHP-Installation bzw. "einfacher" Docker-Installation

Homepage und Support:

Apps:

Artikel:

Collabora Online

Mit Collabora kann man sich einen Dienst für die kollaborative Arbeit an Office-Dokumenten einrichten. Es basiert auf LibreOffice und läuft typischerweise als Docker-Container.

Tipps:

  • Nach Update muss man manchmal die Einstellung der URL in "Collabora Online Server" erneut speichern.

Release Notes:

Only Office

  • Nachteile gegenüber Collabora
    • Bei geteilten Links ist der Editor immer "Anonym". Man kann keinen Namen setzen.
    • Chat und Videokonferenz via Nextcloud nicht möglich im Kontext des Dokuments.
    • Muss manuell geflusht werden, damit Änderungen im Cache in Datei geschrieben wird, z.B. per Cron
occ documentserver:flush

Talk

Webhooks und Bots

Bots

  • Beispiel Bot für Uptime Kuma Notifizierungen
Bot erstellen:
sudo -u wwwrun php /srv/www/htdocs/nextcloud/occ talk:bot:install --feature response --no-setup "Uptime Kuma Bot" "40_CHARS_SECRET" https://monitoring.example.org
Bots listen:
sudo -u wwwrun php /srv/www/htdocs/nextcloud/occ talk:bot:list
Bot mit ID 1 einem Talk Chat hinzufügen, <ConversationToken> ist die Zeichenkette am Ende der URL call/Token:
sudo -u wwwrun php /srv/www/htdocs/nextcloud/occ talk:bot:setup 1 <ConversationToken>

Webhooks ohne Bot

  • Nutzung der Chat API, z.B. in der Fritzbox als URL in Vorlage für Smart Home Automatisierung.
  • Beispiel ohne Bot mit curl und HTTP Basic Auth eines echten (Dummy-)Benutzers -> In HTTP Header einbauen für einen einfachen Webhook. Achtung: App Passwort verwenden, falls 2FA aktiv ist.
  • Beispiel für einfachen Webhook ohne Bot (mit normalem User)
    • Normaler User muss App Passwort erstellen (sonst 404 Fehler, ggf. weil 2FA aktiv ist).
    • Den Benutzer dem Chat hinzuzufügen als Teilnehmer. Chat bzw. Call ID ist <ConversationToken>, z.B. "f34tf2d".
Aus "USERNAME:APP_PASSWORD" ein base64 bilden
echo -n 'USERNAME:APP_PASSWORD' | base64
Webhook senden mit chat API
curl -X POST -u USERNAME:APP_PASSWORD https://www.kruedewagen.de/nextcloud/ocs/v2.php/apps/spreed/api/v1/chat/f34tf2d -H 'Accept: application/json, text/plain, */*' -H 'Cache-control: no-cache' -H 'Content-type: application/json' -H 'OCS-APIRequest: true' --data-raw '{"message":"test123"}'
oder mit Auth im Header
curl -X POST https://www.kruedewagen.de/nextcloud/ocs/v2.php/apps/spreed/api/v1/chat/f34tf2d -H 'Accept: application/json, text/plain, */*' -H 'Cache-control: no-cache' -H 'Content-type: application/json' -H 'OCS-APIRequest: true' -H 'Authorization: Basic VVNFUk5BTUU6QVBQX1BBU1NXT1JE' --data-raw '{"message":"test123"}'

Mail

Andere Erweiterungen

ProxyPass /whiteboard/ http://127.0.0.1:3002/ upgrade=websocket
'allow_local_remote_servers' => true,

Notifizierungen

Notifizierungen mit NextPush auf Basis UnifiedPush.

Tipps und Tricks

URL ändern

  • Verzeichnis im DocumentRoot anpassen
  • Pfade in DocumentRoot/.htaccess anpassen
  • Pfade in Apache Config anpassen, z.B. in /etc/apache2/conf.d/nextcloud.conf
  • Nextcloud Config in config.php anpassen
  • Ggf. Pfad zu data in Datenbank-Tabelle oc_storages anpassen
  • Pfad in Collabora Online anpassen (Auth)

PHP Version

  • PHP 7.4 -> Check hier ändern [1]:
lib/versioncheck.php

CalDAV und CardDAV

https://example.com/nextcloud
https://example.com/nextcloud/remote.php/dav/calendars/<username>/<calendarname>/
https://example.com/nextcloud/remote.php/dav/addressbooks/users/<username>/<addressbookname>/

Benutzung

Gelöschte Dateien leeren

trashbin_retention_obligation' => 'auto, 30',

Sonderzeichen

  • Falls Windows auf Client-Seite verwendet wird, sollte man bestimmte (dort ungültige) Sonderzeichen serverseitig einschränken (forbidden_chars): c't 02/25 S.162, https://ct.de/yj7z

Google Kalender

WebDAV

https://example.com/nextcloud
https://example.com/nextcloud/remote.php/dav/files/<USERNAME>/

Update

sudo -u wwwrun php updater/updater.phar
  • Update Channel in config.php
'updater.release.channel' => 'beta'

Downgrade einer App

Beispiel "Nextcloud Office":

  • Die betreffende App in Nextcloud UI deaktivieren
  • Bestehende App entfernen
cd apps/
rm -rf richdocuments
  • App herunterladen
wget https://github.com/nextcloud-releases/richdocuments/releases/download/v5.0.1/richdocuments-v5.0.1.tar.gz
  • App entpacken, Owner setzen und Download-Paket entfernen
tar zxvf richdocuments-v5.0.1.tar.gz
chown -R wwwrun:www richdocuments
rm richdocuments-v5.0.1.tar.gz
  • Die betreffende App in Nextcloud UI aktivieren

PHP Performance

PHP-FPM

Werte weit über Default setzen: https://spot13.com/pmcalculator/

  • 27. April 2024 -> php-fpm startet nicht mehr mit "pcre"-Fehler. Abhilfe: Paket libpcre2-8-0-x86-64-v3 deinstallieren

Konfiguration Tool: https://spot13.com/pmcalculator/

Caching

  • Opcache mit PHP-FPM
/etc/php8/fpm/php.ini
Beispiel-Konfiguration mit 512 MByte Cache (wenn noch andere PHP-Anwendungen laufen reichen 384 MByte nicht):
[opcache]
;https://docs.nextcloud.com/server/21/admin_manual/installation/server_tuning.html
;https://www.php.net/manual/de/opcache.configuration.php
opcache.enable=1
opcache.interned_strings_buffer=72
opcache.max_accelerated_files=20000
opcache.memory_consumption=512
opcache.save_comments=1
opcache.revalidate_freq=30
opcache.validate_timestamps=1
opcache.jit = 1255
opcache.jit_buffer_size = 128M
  • APCu
zypper in php8-APCu
/etc/php8/conf.d/apcu.ini

Prüfen:

phpinfo();

oder mit dem Opcache Control Panel:

ocp.php

Chaching mit redis

  • Redis installieren
zypper in redis php8-redis
systemctl enable redis@default
  • Redis konfigurieren (Unix Socket statt TCP [2],[3])
vi /etc/redis/default.conf
unixsocket /run/redis/redis.sock
unixsocketperm 770
  • Socket Verzeichnis erstellen
mkdir /run/redis
chown redis:redis /run/redis
  • Webserver-User in Gruppe "redis" aufnehmen
vi /etc/group
redis:x:453:wwwrun
  • php-fpm neu starten (ggf. auch Webserver)
systemctl restart php-fpm
  • Redis starten
systemctl start redis@default
  • Redis prüfen
systemctl status redis@default
  • Logdatei prüfen
less /var/log/redis/default.log
  • Nextcloud konfigurieren (nur Filelocking)
'filelocking.enabled' => true,
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => array(
     'host' => '/var/run/redis/redis.sock',
     'port' => 0,
     'timeout' => 0.0,
      ),
  • Nextcloud konfigurieren (Filelocking + distributed server cache)
'filelocking.enabled' => true,
'memcache.locking' => '\OC\Memcache\Redis',
'memcache.distributed' => '\OC\Memcache\Redis',
'redis' => array(
     'host' => '/var/run/redis/redis.sock',
     'port' => 0,
     'timeout' => 0.0,
      ),
  • Nextcloud konfigurieren (Filelocking + distributed server cache + local cache)
'filelocking.enabled' => true,
'memcache.locking' => '\OC\Memcache\Redis',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.local' =>'\OC\Memcache\Redis',
'redis' => array(
     'host' => '/var/run/redis/redis.sock',
     'port' => 0,
     'timeout' => 0.0,
      ),
  • Nextcloud Systemlog prüfen
  • Redis Aktivitäten prüfen (bei Dateiaktivitäten) [4]
redis-cli -s /run/redis/redis.sock MONITOR
redis-cli -s /run/redis/redis.sock KEYS "*"
  • Regelmäßige Dumps bzw. Snapshots im Filesystem [5]:
/var/lib/redis/default/dump.rdb
  • Laden der Snapshots nach Restart prüfen im Log (hier 326 Keys mit 1,59 MByte):
28151:C 03 Apr 2024 10:46:40.982 * Configuration loaded
28151:M 03 Apr 2024 10:46:40.982 * monotonic clock: POSIX clock_gettime
28151:M 03 Apr 2024 10:46:40.982 * Running mode=standalone, port=0.
28151:M 03 Apr 2024 10:46:40.983 * Server initialized
28151:M 03 Apr 2024 10:46:40.983 * Loading RDB produced by version 7.2.4
28151:M 03 Apr 2024 10:46:40.983 * RDB age 0 seconds
28151:M 03 Apr 2024 10:46:40.983 * RDB memory usage when created 1.59 Mb
28151:M 03 Apr 2024 10:46:40.983 * Done loading RDB, keys loaded: 326, keys expired: 0.
28151:M 03 Apr 2024 10:46:40.983 * DB loaded from disk: 0.001 seconds
28151:M 03 Apr 2024 10:46:40.983 * Ready to accept connections unix

Valkey als redis-Fork

Installation und Konfiguration mit Nextcloud:

  • Valkey installieren
zypper in valkey php8-redis
systemctl enable valkey@default
  • Valkey konfigurieren (Unix Socket statt TCP [6],[7])
vi /etc/valkey/default.conf
unixsocket /run/valkey/valkey.sock
unixsocketperm 770
  • Webserver-User in Gruppe "valkey" aufnehmen
vi /etc/group
valkey:x:453:wwwrun
  • php-fpm neu starten (ggf. auch Webserver)
systemctl restart php-fpm
  • Valkey starten
systemctl start valkey@default
  • Valkey prüfen
systemctl status valkey@default
  • Logdatei prüfen
less /var/log/valkey/default.log
  • Nextcloud konfigurieren (nur Filelocking)
'filelocking.enabled' => true,
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => array(
     'host' => '/var/run/valkey/valkey.sock',
     'port' => 0,
     'timeout' => 0.0,
      ),
  • Nextcloud konfigurieren (Filelocking + distributed server cache)
'filelocking.enabled' => true,
'memcache.locking' => '\OC\Memcache\Redis',
'memcache.distributed' => '\OC\Memcache\Redis',
'redis' => array(
     'host' => '/var/run/valkey/valkey.sock',
     'port' => 0,
     'timeout' => 0.0,
      ),
  • Nextcloud konfigurieren (Filelocking + distributed server cache + local cache)
'filelocking.enabled' => true,
'memcache.locking' => '\OC\Memcache\Redis',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.local' =>'\OC\Memcache\Redis',
'redis' => array(
     'host' => '/var/run/valkey/valkey.sock',
     'port' => 0,
     'timeout' => 0.0,
      ),


.

Sicherheit

Known Issues

Bugs und Probleme.

  • Beim Sharen von öffentlichen Links (Freigaben) funktioniert das Anzeigen und Herunterladen von PDFs nicht, wenn zugleich im (Collabora) Office Plugin die "Sichere Ansicht" aktiviert ist. Dann schaltet sich anscheinend Office als Betrachter dazwischen und das PDF bleibt in der Browseransicht "leer". Gegencheck: "Download verbergen" in der Freigabe bei "Sichere Ansicht" aktivieren -> man sieht, dass Office das PDF anzeigt und nicht der PDF Viewer. Stand: 30.09.2025 (NC 31 und 32)
Related: https://github.com/nextcloud/server/issues/51569 , https://github.com/nextcloud/server/issues?q=is%3Aissue%20state%3Aopen%20secure%20view

Alternativen

  • ownCloud - aus dem Nextcloud hervorgegangen ist
  • OpenCloud als Fork von ownCloud (ab Januar 2025)
  • Libre Workspace: Nextcloud mit anderen Tools in einem Workspace - selbst gehostet oder über gehostete Cloud-Lösung

Fertige Hardware

  • NextBox von Nitrokey, basiert auf RaspPi

Siehe auch