Schnittstelle zwischen Linux und NextCloud

Hallo,

ich habe auf einem virtuellen Strato-Server die NextCloud laufen. Der Browser-Zugang und die Synchronisation mit meinem lokalen Laptop (auch Ubuntu-Linux) laufen ohne Probleme.

Auf dem gleichen Server habe ich Programme (Python-Skripte) laufen, die PDF-Dateien erzeugen, die ich ĂŒber die NextCloud anderen Usern zur VerfĂŒgung stelle. DafĂŒr binde ich auf dem Server die NextCloud ĂŒber WEBDAV ein (mount 
). Das funktioniert auch - leider aber nur im Prinzip. In der Praxis dauert das mount extrem lange (etliche Minuten oder noch lĂ€nger).

Gibt es eine Alternative?

Kann man das Synchronisations-Tool auch dann auf einem Server installieren, wenn dort kein Desktop zur VerfĂŒgung steht?

Mit Dank fĂŒr jeden Hinweis
Ulrich

du hast mehrere Optionen (die Frage kommt regelmÀssig auf)


  • es gibt einen CLI client
  • du kannst im NC “external storage” einbinden (sollte vom NC regelmĂ€ssig gescannt werden)
  • du kannst Dateien ins NC Filesystem schreiben und occ files:scan ausfĂŒhren
  • du kannst die files in eine Freigabe hochladen

und ausserdem sollte WebDAV local auch gut laufen - eventuell hast du Prbleme mit DNS, IPv4/IPv6 - versuche localhost oder fqdn (je nach dem) zu nutzen, hosts_file zu bearbeiten usw
 und den Provider Support fragen was der fehler sein könnte


PS: external storage macht die WeboberflÀche langsam

1 Like

Er nennt sich nextcloudcmd. Du kannst ja mal danach suchen. Ich verwende ihn aber nicht.
Das Debian- und Ubuntu-Paket nennt sich nextcloud-desktop-cmd.

Danke fĂŒr die Hinweise!

nextcloudcmd habe ich verworfen, da ich tatsÀchlich nicht Verzeichnisse synchronisieren möchte, sondern gezielt einzelne Dateien von irgendwo in eine bestimmtes NC-Verzeichnis transportieren muss. Das ist mir jetzt beim genaueren Hinsehen klar geworden.

NĂ€her in Betracht gezogen habe ich occ files:scan und die Sache mit der Freigabe.

Zur Freigabe:

Dazu habe ich das Zielverzeichnis mit einer Freigabe versehen, diese auf “Dateien ablegen (nur hochladen)” eingestellt. Dann habe ich (von meinem Linux-Rechner) mit curl eine Datei dort hin kopiert:

curl -T test.txt https://cg-2022.org/nc/index.php/s/6N6HxxxxxxxxxxmKE/

Das Kommando gibt keine Fehlermeldung, auch keine Erfolgsmeldung. Aber im NC-Verzeichnis taucht die Datei nicht auf. Das macht mich ratlos.

Zu occ files:scan

Das NV-Verzeichnis auf dem Server war schnell gefunden:

/var/www/html/nc/data/admin/files/CG-2022/DB

Auch die Datei konnte dorthin kopiert werden:

sudo -u www-data cp test.txt /var/www/html/nc/data/admin/files/CG-2022/DB/

Die Datei steht dann wie erwartet in dem Verzeichnis und hat die selben Zugriffsrechte (nÀmlich -rw-r--r--) und EigentumsverhÀltnisse (nÀmlich www-data:www-data) wie alle anderen Dateien dort auch. Dann aber endet

sudo -u www-data php7.4 /var/www/html/nc/occ files:scan admin

mit folgender Meldung:

Starting scan for user 1 out of 1 (admin)
Home storage for user admin not writable
Make sure you're running the scan command only as the user the web server runs as

+---------+-------+--------------+
| Folders | Files | Elapsed time |
+---------+-------+--------------+
| 0       | 0     | 00:00:00     |
+---------+-------+--------------+

Auch das macht mich ratlos. Denn www-data ist der user, unter dem auch der Webserver (apache2) lÀuft.

Habt Ihr dazu Ideen?

GrundsĂ€tlich wĂŒrde ich nicht mit occ files:scan all auf regulĂ€rer Basis arbeiten, sondern wenn immer möglich, die Schnittstellen nutzen, die Nextcloud nativ anbietet. Was dann halt fast zwangslĂ€ufig auf WebDAV hinauslĂ€uft. :wink:

Vielleicht wĂ€re ja das etwas, das du fĂŒr deine Zwecke nutzen könntest


Funktioniert es wenn du die Berechtigungen neu schreibst
?

sudo chown -R www-data:www-data /var/www/html/nc/data
2 Likes

Vielleicht ist davfs2 noch eine Möglichkeit.

davfs2 war der Ausgangspunkt meiner Schwierigkeiten. Das entsprechende mount dauerte ewig bzw. zuletzt blieb es komplett hĂ€ngen. Ob das mit einer sorgfĂ€ltigeren Konfiguration zu beheben wĂ€re, weiß ich nicht, deswegen habe ich hier gefragt.

Das hat tatsĂ€chlich geholfen! Finde ich ein wenig spooky, denn ich kann nicht erkenne, was sich dadurch geĂ€ndert haben könnte. Aber: sei’s drum - es lĂ€uft.

Sensationell! Das funktioniert tatsÀchlich sehr gut.

Tja, jetzt habe ich die Wahl zwischen occ files:scan und rclone, beides funktioniert erst einmal. Gibt es gute Argumente fĂŒr/gegen das eine oder das andere?

Naja
 Das Argument fĂŒr rclone ist halt, dass es WebDAV nutzten und sich an der Nextcloud anmelden kann, und du dann eben kein occ files:scan zu machen brauchst, um der Nextcloud mitzuteilen, dass neue Daten hochgeladen wurden. Ob occ files:scan nun ein Problem ist, kommt natĂŒrlich darauf an wie hĂ€ufig du Daten schreibst und ob sie dann sofort verfĂŒgbar sein mĂŒssen. (jetzt mal abgesehen von den Berechtigungsproblemen, die du hattest, die man aber sicher in den Griff bekommen kann.)

Trotzdem sehe ich occ files:scan eher als einen Workaround, um sporadisch sehr grosse Datenmengen zu ĂŒbertragen, weil die Transferraten via USB oder ĂŒber Protokolle wie Samba oder NFS in der Regel einfach höher sind. FĂŒr die alltĂ€gliche Nutzung ist es aber meiner Meinung nach sinnvoller die nativen Protokolle der Nextcloud zu verwenden. Jedesmal einen Scan zu triggern, nur weil eine einzelne Datei hinzugekommen ist, hört sich fĂŒr mich jedenfalls ziemlich ineffzient an :wink:

2 Likes

Vielen Dank fĂŒr die vielen Hinweise! Nun habe ich zwei funktionierende Schnittstellen zwischen Linux und NextCloud:

  • occ files:scan
  • rclone

Ich beschreibe sie hier noch etwas ausfĂŒhrlicher, vielleicht hilft das dem einen oder anderen. Ich selbst habe mich fĂŒr rclone entschieden - fĂŒr meinen Anwendungsfall ist es sehr viel besser geeignet. FĂŒr die pros und contras siehe die BeitrĂ€ge oben.

Ob sich die beiden Möglichkeiten auch auf Windows-Umgebungen portieren lassen, kann ich leider nicht sagen.

Zu occ files:scan

Das allgemeine Vorgehen:

  1. Datei(en) in den NC-Verzeichnisbaum kopieren
  2. occ.files scan durchfĂŒhren, damit NC von der/den Datei(en) erfĂ€hrt und sie sichtbar macht.

Punkt 1 geht z.B. mit

sudo -u www-data cp <Datei(en)> /var/www/html/nc/data/<nc_user>/files/<verzeichnis>/

In dieses Verzeichnis (alles unter /var/www/html/ sollte nur der user www-data schreiben. Das ist der User, der auch den Web-Server apache2 ausfĂŒhrt. Daher das sudo -u www-data.

Damit das geht, muss der User, der den Befehl absetzt, in der Gruppe sudo sein - sonst kann er den Befehl sudo nicht ausfĂŒhren. sudo fragt dann nach dem eigenen Passwort (nicht nach dem von www-data!).

(Will man die ganze Aktion von Skripten aus steuern, ist diese Nachfrage ungĂŒnstig. Hier hilft der Systemadministrator, der diese Passwort-Abfrage unterbinden kann. Leider Kann ich in diesem Detail nicht helfen.)

Auf meinem Server ist
/var/www/html/
das Stammverzeichnis aller WEB-Inhalte. In dem Verzeichnis
/var/www/html/nc/
ist NextCloud installiert. Der relevante Verzeichnisbaum ist dann unter
/var/www/html/nc/data/<nc_user>/filse/
In meinem Fall verwende ich den NC-User admin, er kann durch jeden anderen user ersetzt werden.

Punkt 2 geht so:

sudo -u www-data php /var/www/html/nc/occ files:scan admin

Die Voraussetzungen fĂŒr sudo wurden unter Punkt 1 bereits beschrieben.
Der Befehl occ files:scan hat etliche Varianten, die hier gut dokumentiert sind:
https://docs.nextcloud.com/server/20/admin_manual/configuration_server/occ_command.html
Dass ich hier ... admin verwende, ist nur eine dieser Varianten und hÀngt damit zusammen, dass ich Dateien vorher in den Verzeichnisbaum eben vom NC-admin kopiert hatte.

Zu rclone

rclone ist sehr gut dokumentiert: https://rclone.org/

Es ist in der Standard Installation von Linux nicht enthalten, aber mit
apt-get install rclone
schnell installiert. Allerdings bekommt man von der Site https://rclone.org/downloads/ i.d.R. eine neuere Version als aus den Reposietories. Diesen Weg empfehle ich ausdrĂŒcklich. Der Abschnitt Script Download and Install ist Dein Freund


Nach der Installation muss man es mit rclone config konfigurieren, das wird hier erklÀrt:
https://rclone.org/docs/
Als Anhaltspunkt fĂŒr die erfragten Parameter kann vielleicht helfen:

[nc_cg2022]
type = webdav
url = https://beispiel.org/nc/remote.php/webdav/
vendor = nextcloud
user = admin

Dabei ist <nc_cg2022> ein frei zu vergebender Name fĂŒr einen Remote (also einen Cloud-Zugang). Der User ist (natĂŒrlich) der NC-User, das zugehörige Passwort kann mit erfasst werden und wir verschlĂŒsselt gespeichert.

2 Likes