Mit dem Nextcloud Plugin „External storage support“ können z.B. SMB-Freigaben zur Synchronisierung genutzt werden. Dies kann in größeren Umgebungen durchaus Sinn machen, da sich die Berechtigungsstruktur auf Fileservern deutlich feiner einstellen lässt. Nextcloud bietet hier von Haus aus nur begrenzt Möglichkeiten. Zudem können SMB-Shares eines Fileservers auch als Netzlaufwerk eingebunden werden.

Wichtig zu beachten ist, dass der Nextcloud Notify-Dienst auf dem Nextcloud-Server eingerichtet wird.
Wenn dies nicht geschieht kann es zu Problemen bei der Synchronisierung mit Desktop-Clients kommen.
Ich konnte schon Effekte beobachten wie diese:
User 1 und User 2 benutzen dieselbe Freigabe und synchronisieren diese mit dem Desktop Client.
User 1 lädt nun eine Datei hoch. Diese liegt nun auch auf dem Nextcloud Server, bei User 2 wird sie aber nicht heruntergeladen. Sobald User 2 die Datei über den Webbrowser aufruft funktioniert auch die Synchronisation über den Desktop-Client.
Das Problem ist häufig nur in Unterordnern festzustellen. Im Stammverzeichnis der Freigabe funktioniert der Snyc meistens problemlos.
Das kann natürlich zu einem immer größeren Problem werden, je mehr Benutzer gemeinsam auf einer Freigabe arbeiten. Um Abhilfe zu schaffen muss man den sogenannten Nextcloud Notify-Dienst serverseitig einrichten, der permanent im Hintergrund die Freigaben überwacht und Änderungen sofort erkennt.

Schritt 1:
Die Mount-IDs der Freigaben auflisten:

sudo -u www-data php /var/www/nextcloud/occ files_external:list

Schritt 2:
Mit diesem Befehl wird der Notify-Dienst gestartet. Domain, Benutzer, passwort und mount-id müssen entsprechend angepasst werden. Der Benutzer muss Schreibrechte auf die Freigabe haben.

sudo -u www-data php /var/www/nextcloud/occ files_external:notify -u DOMAIN/BENUTZER -p PASSWORT MOUNT-ID &

Schritt 3:
Wenn die Synchronisation über den Desktop-Client nun funktioniert, kann der Befehl für alle Mount-IDs mithilfe eines Scripts automatisiert werden.

Script erstellen:

vi /home/notify_script.sh

Folgenden Inhalt einfügen und MOUNT-IDS sowie USER und PASSWORD anpassen:

#!/bin/bash
sleep 60 # Wartet 60 Sekunden (1 Minute)

# Liste der Mount-IDs
MOUNT_IDS=("1" "2" "3" "4" "...")

# Nextcloud Pfad und Benutzerdaten
NEXTCLOUD_PATH="/var/www/nextcloud"
USER="domain/benutzer"
PASSWORD="passwort_hier_einfügen"

# Schleife über alle Mount-IDs
for MOUNT_ID in "${MOUNT_IDS[@]}"
do
  sudo -u www-data php "$NEXTCLOUD_PATH/occ" files_external:notify -u "$USER" -p "$PASSWORD" "$MOUNT_ID" &
done

Das Script muss noch ausführbar gemacht werden:

chmod +x /home/notify_script.sh

Schritt 4:
Damit das Script bei jedem Serverneustart die Notify-Dienste startet, muss das Script nun als Cronjob eingerichtet werden.

crontab -e

Inahlt:

@reboot /home/notify_script.sh >> /home/notify_script.log 2>&1

Mit z.B. htop kann nun geprüft werden, ob für jede Freigabe ein Notify-Dienst läuft.
Das Script sollte nicht manuell bzw. nicht mehrmals ausgeführt werden, da sonst alle Prozesse doppelt oder öfter gestartet werden.

Von NRTX

Schreibe einen Kommentar

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