Nextcloud: Direkter Zugriff auf Dateien über das Dateisystem

Nextcloud Logo

Heute gibt es einen praktischen Tipp für Nextcloud: Der Artikel zeigt, wie man einen direkten Zugriff auf Cloud-Dateien direkt über das Dateisystem realisieren kann, ohne den Umweg über die Weboberfläche von Nextcloud oder WebDAV nehmen zu müssen.

Das Datenverzeichnis von Nextcloud

Bei der Installation von Nextcloud wird während des Setups das Datenverzeichnis der Cloud angegeben. Das ist ein lokales Verzeichnis, in dem u.a. die Daten gespeichert werden, die die Benutzer in die Cloud hochladen.

Der Zugriff die diese Dateien erfolgt dann üblicherweise über die Weboberfläche von Nextcloud. Alternativ kann auch per WebDAV auf die Cloud-Dateien zugegriffen werden, indem z.B. ein WebDAV-Netzlaufwerk unter Windows eingebunden wird.

Eine Anforderung könnte nun sein, dass ein direkter Zugriff auf die Nextcloud-Daten über das Dateisystem möglich sein soll. Auch wenn man nicht direkt Dateien auf dem Server kopieren/verschieben wird, ist diese Szenario durchaus relevant: Eine Freigabe per Samba oder FTP ist relativ schnell eingerichtet, da könnte man auf die Idee kommen, einfach das Nextcloud-Datenverzeichnis auf diese Art zugänglich zu machen. Anschließend könnte man nun Daten z.B. per Netzwerkfreigabe oder FTP ins Datenverzeichnis von Nextcloud transferieren. Diese sollten dann auch automatisch in der Weboberfläche von Nextcloud auftauchen, oder?

Leider ist die Sache nicht ganz so einfach. Wenn man versucht, Dateien auf diese Art Nextcloud „unterzujubeln“, dann wird man diese in der Weboberfläche nicht zu sehen bekommen. Die Begründung dafür ist recht einfach: Jede Datei und jedes Verzeichnis besteht nicht nur aus einem Eintrag im Dateisystem, sondern auch aus einem Eintrag in der Datenbank von Nextcloud. Ist die Datei nun auf dem Dateisystem vorhanden, aber es existiert kein Eintrag in der Datenbank, dann ist diese Datei für Nextcloud quasi nicht vorhanden.

Da dies nicht automatisch funktioniert, muss man nun Nextcloud veranlassen, das ganze Datenverzeichnis nach neuen und geänderten Dateien zu durchsuchen. Dazu bemühen wir einfach occ:

sudo -u www-data php /var/www/nextcloud occ files:scan --all

Je nach Umfang der Cloud kann dieser Befehl einige Zeit in Anspruch nehmen, aber nach dem Scan sind nun auch Dateien sichtbar, die man einfach manuell über das Dateisystem zum Datenverzeichnis hinzugefügt hat.

Für die Praxis ist dies leider keine gute Lösung, da man nun den Scan-Vorgang immer wieder anwerfen muss, wenn Dateien „hinten rum“ in das Datenverzeichnis kopiert wurden.

Die bessere Lösung: Verwendung von externem lokalem Speicher

Nextcloud überwacht sein Datenverzeichnis als nicht von selbst auf geänderte Dateien. Diese Option ist allerdings bei externem Speicher verfügbar. Hier kann man Nextcloud anweisen, bei jedem aktiven Zugriff auf neue und geänderte Dateien zu achten. Genau diese Option machen wir uns nun zu Nutze, damit man Dateien auch direkt über das Dateisystem der eigenen Cloud hinzufügen kann.

Lokalen externen Speicher einbinden

Zum Einbinden von lokalem externen Speicher benötigen wir erst einmal ein Verzeichnis auf dem lokalen Dateisystem, auf das Nextcloud (d.h. der Webserver-Benutzer) zugreifen kann:

mkdir -p /var/nextcloud_external_data 
chown -R www-data:www-data /var/nextcloud_external_data

Auch PHP braucht natürlich Zugriff auf dieses Verzeichnis, so dass wir noch die Variable open_basedir anpassen müssen.

Für PHP FPM muss dazu der virtuelle Host für Nextcloud (siehe hier) modifiziert werden. Das soeben angelegte Verzeichnis wird bei fastcgi_param PHP_VALUE einfach bei open_basedir hinzugefügt. Der komplette Block kann dann z.B. so aussehen.

fastcgi_param PHP_VALUE "open_basedir=/var/www:/tmp/:/var/nextcloud_data:/dev/urandom:/proc/meminfo:/var/nextcloud_external_data/
	upload_max_filesize = 10G
	post_max_size = 10G
	max_execution_time = 3600
	output_buffering = off";

Nach der Anpassung des vHosts muss der Webserver noch neu gestartet werden:

service nginx restart

Damit auch der Cronjob von Nextcloud Zugriff auf das Verzeichnis hat, wird dieses ebenfalls in der entsprechenden php.ini Datei unter open_basedir hinzugefügt:

nano /etc/php/7.2/cli/php.ini

Der Eintrag kann hier z.B. dann so aussehen:

open_basedir = /var/www/:/tmp/:/var/nextcloud_data/:/var/nextcloud_external_data/

In den Einstellungen von Nextcloud kann dieses Verzeichnis nun als externer lokaler Speicher eingebunden werden. Dies kann jedoch nur in den Admin-Einstellungen erfolgen, da Benutzer nicht selbst externen lokalen Speicher einbinden können.

Nextcloud: Lokalen externen Speicher einbinden
Nextcloud: Lokalen externen Speicher einbinden

Folgende Optionen sind hier wichtig:

  • Ordnername: Kann beliebig vergeben werden. In der Dateiübersicht von Nextcloud erscheint der externe Speicher dann unter diesem Namen.
  • Konfiguration: Hier ist der Order auf dem lokalen Dateisystem anzugeben. In diesem Beispiel also /var/nextcloud_external_data.
  • Verfügbar für: Hier werden die Benutzer/Gruppen hinterlegt, für die der externe Speicher zugänglich sein soll.
  • Auf Änderungen prüfen: Diese Einstellung verbirgt sich in den erweiterten Optionen (Menü mit drei Punkten). Wichtig ist hier die Angabe Einmal bei jedem Direktzugriff.

Nach dem Speichern der Einstellungen sollte der externe Speicher erfolgreich eingebunden worden sein.

Hinzufügen von Dateien direkt über das Dateisystem

Durch die Option, dass Nextcloud den soeben eingebundenen externen Speicher bei jedem Zugriff auf Änderungen durchsuchen soll, können nun einfach Dateien über das Dateisystem hinzugefügt werden. Für einen schnellen Test legen wir einfach eine einfache Textdatei an:

nano /var/nextcloud_external_data/test.txt

Der Inhalt spielt für den Funktionstest keine Rolle, daher einfach irgendwas eingeben und die Datei speichern.

Wenn man nun wieder über die Nextcloud-Oberfläche im Browser das Verzeichnis des externen Speichers öffnet, wird die neu erzeugte Datei von Nextcloud erkannt und kann auch direkt bearbeitet werden.

Der nächste Schritt würde nun darin bestehen, einen „Direktzugriff“ auf das Verzeichnis des externen Speichers zu legen, beispielsweise per Samba-Freigabe oder auch per FTP.

Anschließend hat man einen direkten Zugriff auf die Dateien von Nextcloud (zumindest auf jene, die auf dem externen lokalen Speicher liegen).

Aus der Praxis – OCR von gescannten Dokumenten

Nun fragt sich der eine oder andere sicher: „Was bringt mir das?“

In der Praxis hat sich bei mir das gezeigte Vorgehen bei der Verwaltung von (gescannten) Dokumenten bewährt.

Dazu habe ich zwei lokale externe Speicher eingebunden: Scan Eingang und Dokumente Eingang. In das Verzeichnis Scan Eingang werden nun Dokumente oder Bilder gespeichert, die vom Scanner erfasst wurden (z.B. als PDF). Diese Dokumente besitzen noch keinen Text-Layer (OCR).

Um diesen Text-Layer hinzuzufügen nutze ich nun das Script OCRmyFiles. Details zu diesem Script habe ich bereits im Artikel Linux: OCR-Texterkennung für PDF-Dateien und Bilder beschrieben. Dieses Script wird nun regelmäßig per Cronjob aufgerufen (z.B. alle 30 Minuten). Das Script ist so konfiguriert, dass es als Eingangs-Verzeichnis den Order /var/nextcloud_external_data/scan_eingang nutzt (Eingebunden als Order Scan Eingang in Nextcloud). Als Ausgabeordner nutze ich /var/nextcloud_external_data/dokumente_eingang (In Nextcloud als Dokumente Eingang eingebunden).

Nun sorgt das Script dafür, dass Dokumente ohne Text-Layer erfasst werden, per OCR mit Text versehen werden und anschließend in den Order Dokumente Eingang in der eigenen Cloud verschoben werden.

Das ganze wäre nicht möglich, wenn die OCR-Dokumente direkt in das Nextcloud-Datenverzeichnis verschoben werden würden. Erst durch die Nutzung von lokalem externen Speicher bekommt Nextcloud mit, dass im Ordner Dokumente Eingang neue gescannte Dokumente mit Text-Layer verfügbar sind.

Zu guter Letzt werden die Dokumente dann vom Ordner Scan Eingang dann in den jeweils passenden Order verschoben (über die Weboberfläche von Nextcloud).

Fazit

Der direkte Zugriff auf Nextcloud-Dateien über das Dateisystem mag zunächst nicht sonderlich aufregend klingen. In der Praxis merkt man allerdings schnell, dass das Nextcloud-Datenverzeichnis nicht aktiv auf Änderungen überwacht wird.

Der kleine Umweg über lokalen externen Speicher lohnt allemal: Damit wird es zum einen möglich, dass Benutzer Dateien direkt über eine Samba-Freigabe oder auch FTP der Cloud hinzufügen können. Zum anderen eröffnen sich dadurch auch weitere Möglichkeiten, die Cloud-Infrastruktur durch Scripte, o.ä. für Automatisierungen zu nutzen.

Weiterführende Artikel

Links

59 Kommentare zu „Nextcloud: Direkter Zugriff auf Dateien über das Dateisystem“

  1. Danke für die Anleitung Jan!

    In Eigenregie hab ich, nachdem ich Ubuntu neu installiert hab und mich dann an deine Anleitung gehalten hab, inzwischn eine Nextcloud Installation in meiner VM bei der ich die Daten in einem SMB Share auch als Netzwerklaufwerk zur Verfügung gestellt hab.

    Das läuft quasi analog wie hier von dir beschrieben.

  2. Hallo Jan,
    ein kleiner Fehler dürfte dir in der Beschreibung unterlaufen sein. Der Eintrag bei fastcgi_param PHP_VALUE ist ja nicht im Gateway zu finden, sondern im Virtuellen Host von Nextcloud.
    Dennoch hab ich eine Frage/Problem mit den Dateirechten. Obwohl die beiden zuvor angelegten Verzeichnisse dem user www-data gehört, hab ich in der NC-Weboberfläche nur Leseberechtigung. Woran kann das liegen ?
    Dateirechte meiner Testdatei
    -rw-r–r– 1 www-data www-data 2165141 Jan 23 23:13 /var/nextcloud_external_data/ /dokumente_eingang/Test.txt

    1. Hi Rainer,

      danke für den Hinweis, habe das im Artikel schnell geändert.
      Die Datei-Rechte sehen eigentlich gut aus, es sollte auch ein schreibender Zugriff möglich sein. Setz doch testweise die Dateirechte mal auf 777. Wenn es dann immer noch nicht geht, dann muss es an etwas anderem liegen.

      Gruß,
      Jan

      1. Hallo Jan,
        auch die Änderung der Dateirechte auf 777 bringt keine Änderung. Bei einer über das NC-Webinterface erstellte Datei hab ich zwar Lese-und Schreibrechte, allerdings ist mir dabei aufgefallen, dass ich aus diesem Ordner auch nicht teilen kann.
        Im „scan_eingang“ dito, allerdings kann ich da die Dateien teilen.
        Vermute mal, dies hängt alles zusammen, aber lässt dies eine Vermutung bei dir zu, wo ich einen „Schnitzer“ in meine config reingebracht habe ?

        gruss Rainer

        1. Hi Rainer,

          also aus einem externen Speicher kannst du Teilen, aus dem anderen nicht? Ich würde da zunächst versuchen, die externen Speicher wieder zu entfernen und neu hinzuzufügen.
          Ansonsten: Wenn du Teilen willst, erscheint dann eine Meldung im Nextcloud-Log?

          Gruß,
          Jan

  3. Hallo Jan,

    danke erst einmal für die super Anleitungen.

    Ich habe ein kleines Problem in den Admin-Einstellungen. Hier wird mir beim Prüfen der Konfiguration folgender Fehler angezeigt.

    „smbclient“ ist nicht installiert. Das Hinzufügen von „SMB / CIFS“, „SMB / CIFS mit OC-Anmeldung“ ist nicht möglich. Bitte wenden Sie sich zur Installation an Ihren Administrator.

    Auch das Manuelle installieren des smbclients war ohne Erfolg.

    Vielleicht kannst du mir hier noch einen kleinen Tipp geben (Bin beim Aufsetzen des Servers komplett deiner Anleitung gefolgt)

    Vielen Dank
    Micha

    1. Ok habe den Fehler gefunden.
      Bei der Verzeichnis Anlage scheine ich einen Fehler gemacht zu haben. Habe es jetzt neu angelegt und es funktioniert.

      Das einzige was jetzt noch nicht funktioniert ist das Löschen der Dateien, welche nicht direkt in nextcloud angelegt wurden. Vermute aber hier ein Rechte Problem.

      1. Hi Micha,

        die Dateien, die du hier über das Dateisystem anlegst, müssen dem User/der Gruppe „www-data“ gehören. Nur dann können diese über die Nextcloud-UI bearbeitet/gelöscht werden.

        Gruß,
        Jan

      2. Ich hatte das Problem, allerdings bei einer FreeBSD installation, in einem Jail. Die nutzer mussten mitglied in der Gruppe WWW sein, um schreibzugriff zu erhalten. (auf dem NAS -> (jail mit Nextcloud))

  4. Hallo Jan,

    Micha hat soweit ich es sehe recht mit seiner Anmerkung, es fehlen für den Ordner /var/nextcloud_external_data die Berechtigungen. Da ich davon ausgehe, dass die wenigsten Nutzer sich per Samba mit dem User www-data auf die Freigabe verbinden, müss hier noch die Recht korrekt gesetzt werden.
    Anderenfalls kann Nextcloud per Samba angelegte Dateien in der Weboberfläche nicht änderen oder löschen.
    Habs ebenfalls über ACL gelöst:
    sudo apt-get install acl
    sudo setfacl -d -m g:www-data:rwx /var/nextcloud_external_data
    sudo setfacl -d -m u:www-data:rwx /var/nextcloud_external_data

    Bewirkt, dass alle Dateien, die angelegt werden automatisch für die Gruppe und den User www-data verfügbar sind.

    1. Hi Philipp,

      OK, mit Samba ist das mit den Rechten manchmal etwas kompliziert.
      Hier würde sich generell ein eigener Artikel zu Samba, Rechten, etc. lohnen. Was meinst du?

      Gruß,
      Jan

      1. Bei Linux ist es ja generell so, dass es auf die Einstellungen ankommt ;-) Gerade auch bei Samba
        Würde also schon Sinn mache. Natürlich könnte man als Windows User auch einfach Nextcloud installieren und hätte dann auch entsprechenden Zugriff, aber das wäre ja zu einfach und ohne „gefummel“ :-D

        1. Hi Philipp,

          OK, dann werde ich Samba mal in meine Todo-Liste mit aufnehmen. Ist zwar kein Hexenwerk, aber ich bin bei mir hier im Netz auch über Berechtigungen gestoplert. Habe das aber ohne setfacl hinbekommen.
          Macht sicher auch Sinn, denn Samba ist der Standard, wenn es um Netzwerk-Shares geht. Klar, man könnte auch einfach die NC einbinden, aber das basiert auf WebDAV und ist (unter Windows) meiner Erfahrung nach nicht immer 100% stabil.

          Gruß,
          Jan

          1. Hallo Jan,

            eine ausgezeichnete Idee mit der Scan Erfassung!

            Ähnliches habe ich auch vor – innerhalb NC funktioniert alles soweit.
            Nur scheitere ich daran über SMB Schreibrechte zu bekommen – lesen des ‚lokal externen‘ Verzeichnisses funktioniert im Mac Finder. Ich vermute es liegt am chown www-data (?) Der SMB user wurde zur Gruppe www-data hinzugefügt, hat allerdings nicht geholfen.

            Hast du das Thema „Samba“ auf deiner Todo-Liste bereits in Angriff genommen?
            Bzw. gibt es Hinweise, was in der smb.conf zu beachten ist?

            Besten Dank im Voraus.

    2. Hallo zusammen,

      das ist so eigentlich ganz schick. Allerdings bin ich dabei über einen offensichtlich >10 Jahre alten Samba-Bug gestolpert, der bei den per Samba-Share erstellten Dateien bei der Gruppenberechtigung das x-Bit hinzufügt (Dateien die per ACL 660 haben sollten, bekommen von Samba 670). Die Maske der ACL wird von Samba nicht korrekt für Dateien angepasst/übernommen. Für Ordner passt es dann (770).
      Alles mögliche ausprobiert, aber das kriegt man nicht weg. Im Netz findet man uralte Bugreports und Foren-Beiträge dazu… Von den Samba-Devs wird das aber offensichtlich ignoriert.
      @Jan: Vielleicht interessant für den kommenden Artikel zum Thema Samba, Rechte, etc. ?!

      Gruß
      Gerrit

  5. Hi Jan,
    hat soweit alles funktioniert.
    Kann man auch den NextcloudSpeicher damit erweitern?
    Ich habe Ubuntu Server damals auf 200GB Festplatte erstellt.
    Nun reicht der speicher nicht mehr.
    Ich möchte den gesamtspeicher mit der sdb1 partition erweitern.
    Wie funktioniert das?

    1. Hi Timo,

      erweitern kann man den Speicher damit nicht. Externer Speicher wird immer in einem eigenen Ordner eingebunden. Was du allerdings machen kannst: Den externen Speicher ganz normal einbinden. Dann sollen alle User ihre Daten auf den externen Speicher verschieben. Anschließend kannst du den externen Speicher als Haupt-Speicher der Cloud einbinden. Wie das geht, ist schon in diesem Artikel beschrieben („Externer Speicher als Haupt-Speicher“).

      Gruß,
      Jan

  6. Hallo Jan, könntest Du noch bitte eine Zeile einbauen, dass man nach der Anpassung des vHosts für Nextcloud den nginx einmal mit „systemctl reload nginx“ dazu bringt seine Konfig neu einzulesen.

    Eigentlich selbstverständlich, aber ich musste gerade einmal nachdenken, warum es nicht klappte :-)

    Grüße
    Frank

  7. Hallo Jan!

    Vielen Dank für die vielen tollen Anleitungen! Nur diese hier klappt bei mir leider nicht. Meine Dateien im externen Speicher kommen von einem Netzwerk-Scanner und werden per Samba dort abgelegt (mit Rechten „-rw-r–r– 1 www-data www-data“). Leider sehe ich sie über den Windows Explorer nicht. Melde ich mich über den Browser auf meinem Nextcloud Konto an, dann sehe ich sie sofort. Ebenso über die Android App. Habe ich das einmal gemacht, dann sehe ich sie auch im Explorer. Das gleiche gilt übrigens auch, wenn ich irgendeine Datei im externen Speicher über den Explorer umbenenne, dann erscheint kurz darauf die neue Datei.

    Hast du eine Idee, wie ich das beheben könnte? Vielen Dank!

    Viele Grüße, Simon

    1. Hallo Simon,

      ist das nur bei gescannten Dokumenten, oder auch bei allen anderen Dateitypen der Fall?
      Sieht für mich aber eher nach einem Problem mit Windows aus. Da bin ich leider kein Experte. Kannst du mal versuchen, den Netzwerk-Share in Linux einzubinden und schauen, ob das Problem hier auch auftritt?

      Gruß,
      Jan

      1. Hi Jan!

        Danke für deine Antwort. Aber es scheint doch irgendwie an Nextcloud zu liegen, dass Änderungen im externen Speichers nicht in die Datenbank kommen, wenn z.B. Dateien neu erstellt werden. Ich habe es trotz intensiver Recherche auch nicht geschafft, über ein „occ files:scan“ nur die Dateien des vom Admin angelegten externen Speichers neu einzulesen. Oder ich bin zu blöd…

        Ich bin jetzt folgenden Weg gegangen (vielleicht hilft es ja nochmal jemand anders)
        1. Ablegen der Dateien des Netzwerk-Scanners über Samba in ein beliebiges Verzeichnis.
        2. Überwachen dieses Verzeichnisses mittels incrond.
        3. Erscheinen neue Dateien, dann werden sie in ein Verzeichnis eines Nextcloud-Users „scan“ geschoben, das für alle freigegeben ist.
        4. Mit „occ files:scan“ aktualisieren dieses Users. Das sollte nicht lange dauern, weil die gescannten Dokumente ja nur temporär dort liegen und vom jeweiligen Nutzer in seine eigenen Verzeichnisse verschoben werden.

        Das funktioniert wunderbar. In diesem Sinne wäre das Problem für mich gelöst. Sollte doch noch jemand eine Tipp zum ursprünglichen Problem haben, dann trotzdem immer her damit! :-)

        Viele Grüße, Simon

        1. Hallo Simon,

          ein manuelles Anstoßen eines occ-Scan sollte eigentlich nicht nötig sein.
          Hast du für den externen Speicher bei der Option „Auf Änderungen prüfen“ die Einstellung „Einmal bei jedem Direktzugriff“ gewählt? Hier sollte dann ein „Mini-Scan“ erfolgen, wenn du das erste mal per NC auf das Verzeichnis zugreifst.

          Hast du den Cronjob richtig eingerichtet (also kein AJAX oder Webcron)? Könnte u.U. auch damit zusammen hängen.

          Gruß,
          Jan

          1. Hi Jan!

            Ja, „Auf Änderungen prüfen“ ist so eingestellt. Der Cronjob ist eingerichtet. Ich vermute, dass ein Aktualisieren des Windows Explorers nicht vom NC Windows Client erkannt oder richtig weitergeleitet wird. Oder könnte es daran liegen, dass der externe Speicher vom Admin angelegt wurde? Werde ich nochmal ausprobieren.

            Viele Grüße, Simon

          2. Hi Simon,

            was meinst du mit „…ein Aktualisieren des Windows Explorers nicht vom NC Windows Client…“?
            Wie hängt hier der NC Desktop Client mit drin? Ich dachte, das die Dateien vom Drucker direkt in einen Samba-Share gespeichert werden.

            Dass der externe Speicher vom Admin angelegt wurde, kann damit eigentlich nichts zu tun haben. Das habe ich bei meinen Instanzen auch so gemacht.

            Gruß,
            Jan

          3. Hallo Simon und Jan,
            Jahre später bin ich an dieser Stelle und habe folgende Lösung gewählt. Falls was dagegen spricht, bin ich natürlich für einen Hinweis dankbar. Ich bin auch dankbar für die tollen Anleitungen zur Nextcloud, danke!
            Mein Problem war (und ich glaube vielleicht, dass Simon das in seiner Antwort vom 5.2.2020 auch meinte), dass alles gut funktioniert, wenn man die Weboberfläche der NC offen hat (durch die Aktualisierung bei Direktzugriff). Es kam aber bei mir nicht zur Aktualisierung des auf dem Client-Rechner mit dem NC-Desktop-Sync-Client syncronisierten Verzeichnisses (/var/nextcloud_external_data/dokumente_eingang), wenn die Weboberfläche nicht geöffnet war.
            Dazu habe ich dann zu einem begrenzten Filescan über die crontab von www-data gegriffen:
            */2 * * * * php /var/www/nextcloud/occ files:scan –path=“[Benutzername]/files/[EinbindungsnameExternesVerzeichnis]/dokumente_eingang“
            Herzliche Grüße, JanG

          4. Hi,

            hierzu gibt es schon einen Bug, dass der Sync-Client von Änderungen nichts mitbekommt. Aber wenn das mit dem Cronjob klappt, dann ist das denke ich mal ein guter Workaround.

            Gruß,
            Jan

  8. Hallo Jan!

    Vielen Dank für deine Anleitung.

    Ich benötige eine modifizierte Fassung des Ansatzes: Ich möchte ein externes SMB-Verzeichnis mit Home-Verzeichnissen von Windows-Benutzern mounten und in die Nextcloud einbinden, so dass jeder Benutzer auf sein Verzeichnis (z.B. als Unterverzeichnis seines Nextcloud-Speichers) zugreifen kann – und natürlich auf kein anderes. Denkbar wäre auch, dass jeder Benutzer nur genau dieses Homeverzeichnis auf dem externen Speicher als Nextcloud-Speicher hat. Die Benutzer authentifizieren sich gegenüber der Nextcloud via LDAP durch ihre Accounts im ActiveDirectory.

    Dein Weg würde bedeuten, dass ich die ganzen Benutzerverzeichnisse von Hand verknüpfen müsste, richtig? Das möchte ich für die ca. 800 Benutzer, von denen auch jahresweise 15% gelöscht werden/neu hinzukommen, natürlich automatisieren… Hast du dazu eine Idee?

    Viele Grüße
    Joachim

    1. Hallo Joachim,

      wenn ich dich richtig verstehe, bräuchtest du beim Einbinden vom externen Speicher eine Art Variable, die den Usernamen enthält.
      Schau dir mal diesen Link an: Anscheinend gibt es hier die Variablen $user und $loginname (wobei nur ersteres funktioniert).

      Ich würde das zuvor aber auf jeden Fall mal in einer Test-Umgebung verproben, bevor ich das auf einem produktiven System so umsetze.

      Gruß,
      Jan

  9. Hallo Jan,

    ich stehe bischen auf dem Schlauch. Ich würde auch gerne den Scannordner in die Nextcloud legen. Bin im Moment noch im Testbetrieb. RaspPi mit externen Plate. Die Verzeichnisse der Benutzer (außer Admin natürlich) liegen auf dieser Platte. Damit der Scanner auf den Ordner (media/ExtHDD/Scanner) zugreifen kann:
    1. Muss dieser für den Scanner wie erreichbar gemacht werden?
    2. Mit welchen Daten muss sich der Scanner anmelden?
    3. Reicht es diesen Ordner in den Einstellung als externen Speicher für alle Benutzer anzulegen oder muss ich die von dir beschriebenen Schritte im Artikel durchführen damit alle auf diesen Ordner zugreifen können?

    Tut mir leid falls die Fragen trivial sind, trotzdem danke ich dir schon mal Voraus

    Gruß
    Klaus

    1. Hi Klaus,

      Punkt 1 und 2 sind vom Scanner abhängig, wenn dieser automatisch gescannte Objekte in einem solchen Verzeichnis ablegen soll. Je nachdem, was der Scanner unterstützt (Samba, NFS, FTP, etc.) muss auf dem Raspi noch ein entsprechender Dienst/Service eingerichtet werden. Die Zugangsdaten werden dann bei der Konfiguration des Services hinterlegt.
      Zu Punkt 3: Da User keinen externen lokalen Speicher einbinden können, wirst du dies über über die Admin-Einstellungen der Cloud machen müssen.

      Gruß,
      Jan

      1. Hallo Jan,

        vielen Dank für die schnelle Reaktion.

        Es ist ein HP LaserJet 200 MF-Gerät. Im Moment scannt dieser die Dokumente in ein freigegeben Ordner auf meinem Laptop mit WIN7. Also kann es Samba. Ich habe gelesen, dass das System (Ubuntu, PHP, MariaDB, Nextcloud etc. nach deiner Anleitung) Samba direkt nicht kann (muss nachinstalliert werden).
        1. Habe ich es richitg verstanden?
        2. Damit der Scanner über Samba für alle Benutzer in die Nextcloud scannt muss die Samba-Freigabe wo eingerichtet werden (Ubuntu oder Nextcloud)?
        Wie ist es bei dir gelöst? Du hast in deinen Kommentaren ja geschrieben, dass dein Scanner auch über Samba in ein Netzwerkordner scannt. Kannst du vielleicht etwas genauer dein Scann-Szenario beschreiben.

        Tut mir leid, dass ich dir deine Zeit stehle aber hast du vielleicht ein Link für ein Forum wo mir geholfen werden kann, falls es dir Zeitlich nicht passt.

        Danke dir natürlich nochmal.

        Viele Grüße
        Klaus

        1. Hi Klaus,

          du benötigst dafür einen Samba-Server auf der Maschine, auf der auch Nextcloud eingerichtet ist. Wie du einen solchen Server aufsetzt, habe ich hier schon einmal erklärt.
          Von Nextcloud-Seite bindest du dann diesen Samba-Share dann einfach per SMB ein, oder eben als externen lokalen Speicher. So kommen die beiden Systeme dann zusammen.

          Gruß,
          Jan

  10. Hi Jan,
    nachdem das eine geklappt hat, habe ich mich an weiteren Artikeln versucht ;)

    Folgedes Problem, wie auch schon Leute vor mir, leider wurde die Lösung nicht reingeschrieben.

    1) SMB Share über windows erreichbar. Ich sehe den Kram auch in NC, allerdings kann ich ihn nicht modifizieren.
    Ich habe wie oben empfohlen „sudo setfacl -d -m u:www-data:rwx /var/nextcloud_external_data“ gesetzt, es hat aber nichts geholfen.

    2) ich habe testweise 2-3 files über das filesystem auf meinen NC benutzer kopiert. Anschließend „sudo -u www-data php /var/www/nextcloud occ files:scan –all“ ausgeführt. Leider werden die Dateien in NC nicht sichtbar. Habe ich das falsch verstanden?

    1. Hi,

      das ist wohl irgendein Berechtigungs-Problem. Mehr kann ich hier nun mangels Fehlermeldung o.ä. auch nicht sagen.
      Welche Berechtigungen hat der Share auf der Linux-Maschine (das gemountete Verzeichnis)? Was passiert, wenn du mit dem User www-data direkt über die Kommandozeile auf den Share etwas schreiben willst?

      Gruß,
      Jan

      1. Hi Jan,
        du hast natürlich recht, ich wusste nicht so Recht in welchem Log ich suchen sollte, da ich nichts zu den „unsichtbaren“ Dateien gefunden habe.

        Sie sind nun sichtbar, ich habe in der config.php von Nextcloud „filesystem_check_changes => 1“ gesetzt.

        Nun bleibt das Berechtigungsproblem, der von außen auf nextcloud_external kopierten Daten.
        Könnte es helfen meinen samba user in die gruppe www-data aufzunehmen? (und ist das empfehlenswert?)

        Eine weitere Frage:
        Weißt du ob die config.php bei einem update von nextcloud überschrieben wird?
        Falls ja, würde es sinn machen die Änderungen (inkl der aus deiner Anleitung) in eine config zu schreiben [zB. config.meinedomain.php], die man dann in der config.php ran zieht?

        1. Hi,

          wenn Daten auf einem externen Speicher „hinten rum“ geändert werden, muss die Option „Auf Änderungen prüfen“ in den Optionen des externen Speichers aktiv sein. Dann sollte er solche Dateien automatisch erkennen.

          Die config.php wird beim Update nicht überschrieben, das wäre fatal. Diese wird mit jedem Update übernommen.

          Gruß,
          Jan

  11. Hi Jan,
    ich bin nach deinem neuesten Tutorial (https://decatec.de/home-server/nextcloud-auf-ubuntu-server-20-04-lts-mit-nginx-mariadb-php-lets-encrypt-redis-und-fail2ban/) vorgegangen und möchte nun, einen externen Speicher auf meinem PC/Server anlegen, auf den ich auch immer zugreifen kann.
    Ich schaffe es aber nicht, sowohl Nextcloud, als auch dem lokalen User (in meinem Falle „htpc“) Zugriff auf die Dateien zu gewähren.
    Kannst du mir bitte kurz helfen?
    Vielen Dank

    1. Hi Jochen,

      wo liegt denn der externe Speicher? An deinem PC (also Client-seitig)? Oder am Server selbst und wird vom PC dann irgendwie eingebunden? Du brauchst ja auf der einen oder anderen Seite ja eine NFS- oder Samba-Freigabe…

      Gruß,
      Jan

      1. Achso, bitte entschuldige dass ich es nicht genau erklärt habe.
        Der „Server“ ist bei mir ein HTPC der an den Fernseher angeschlossen ist und mit dem ich auch ganz normal arbeite (z.B. Videos schauen und im Internet surfen).
        Möchte diesen (sparsamen) PC nun aber eben auch als Cloud nutzen, da er doch viel performanter ist als mein Raspi 3…
        Ziel wäre also für mich, überall den Zugriff auf die Dateien zu haben, aber auch auf dem HTPC selbst damit arbeiten zu können.
        Ich bin jetzt vorläufig den „Umweg“ gegangen und öffne den filemanager bzw. die Dateien mit „sudo“ – das klappt, ist aber wohl nicht die eleganteste Lösung… Kann man das noch irgendwie schöner lösen?
        Danke und LG, Jochen

        1. Hi Jochen,

          OK, dann ist ja alles rein lokal.
          Hier könntest du beide Nutzer in die gleiche Gruppe aufnehmen und die entsprechenden Rechte auf den Ordner setzen. Allerdings weiß ich nicht, ob NC dann evtl. meckert, wenn die Gruppe nicht „www-data“ ist. Eine andere Möglichkeit wäre dann, ACLs zu nutzen.

          Gruß,
          Jan

  12. Vielen Dank für deine Hilfe Jan!
    Ich hab mir inzwischen gedacht, dass die derzeitige Variante – auch wenn vielleicht nicht besonders schön gelöst – vielleicht sogar die beste ist, da nicht unkontrolliert Dateien manipuliert werden können, ohne nicht zumindest einmal das Superuser-Passwort eingegeben zu haben…
    Werde trotzdem vielleicht ein bisschen herum experimentieren. ;-)

    Eine letzte Frage wenns ok ist:
    Ich hab ja derzeit meine komplett eingerichtete Nextcloud (inkl. Kalender, Bookmarks, Kontakten und verbunden Geräten) auf dem Raspberry Pi.
    Gibt es eine Möglichkeit bzw. ist es überhaupt sinnvoll das ganze 1:1 zu übersiedeln? Oder sollte ich die einzelnen Sachen exportieren und von neuem starten?

    1. Hi,

      ja, eine NC kann migriert werden. Ich mach das immer über meine Backup-Restore Skripte.
      Auf dem Zielsystem müssen aber schon sämtliche Voraussetzungen da sein (Webserver, Zertifikate, PHP, etc.). Nach der Migration sollte mittels OCC ein File-Scan angeworfen werden, v.a. wenn sich das Datenverzeichnis geändert hat.

      Gruß,
      Jan

  13. Moin,

    danke für die vielen Anleitungen und Tipps.

    Ich habe mal ne logistische Frage:
    Ich habe mir einen neuen Server geholt und dank deiner Anleitungen Nextcloud usw. drauf installiert. Jetzt möchte ich gerne die externe Festplatte von meinem alten Server (Raspi 4 mit NextCloudPi) auf dem neuen Server verwenden. Wie realisiere ich das am besten, damit die Dateien auf dem neuen Server erscheinen? Festplatte per fstab einbinden, neues Datenverzeichnis auf der Platte erstellen und in Nextcloud ändern, dann externe Festplatte über external Storages einbinden und die Dateien rüber kopieren? Oder geht das schneller/einfacher?

    Vielen Dank für die Hilfe

    1. Hi Sebastian,

      wenn du keinen triftigen Grund hast, die Daten per externem lokalen Speicher einzubinden (d.h. einfach die alten Daten in der neuen Cloud verfügbar machen willst), dann kannst du die Daten auf dem neuen System einfach in genau den gleichen Speicherort kopieren/mounten und danach Nextcloud migrieren.
      Wenn der Speicherort auf dem neuen System anders ist/sein muss, dann kannst du das natürlich auch an eine andere Stelle kopieren. Bei der Migration muss dann der Pfad in der config.php angepasst werden. Danach ist auf jeden Fall ein kompletter File-Scan der Cloud notwendig.

      Gruß,
      Jan

      1. Danke schonmal für den Hinweis. Ich möchte nur die Daten von der alten Cloud in die neue Cloud übernehmen. Der neue Server hat derzeit das Datenverzeichnis lokal, da die Festplatte aber definitiv zu klein ist, brauche ich die externe Festplatte. Hier liegen ja auch bereits die Daten der alten Cloud. Spielt es eine Rolle, dass ich bereits Benutzer in der neuen Cloud angelegt habe? Teilweise etwas anders geschrieben als in der alten Cloud. Spielt es einen Unterschied, dass ich jetzt durch die manuelle Installation eine andere Serverkonfiguration (nginx statt apache, mariadb statt mysql, php8 statt php7.4) habe?

        Tausend dank für dein tun

        1. Hi Sebastian

          die empfohlene Vorgehensweise wäre, ein Backup der alten Instanz zu ziehen und dieses auf dem neuen Rechner wieder herzustellen. Nur dann kann das alte Datenverzeichnis problemlos übernommen werden. Ansonsten stimmen hier die Ordner nicht mehr (z.B. weil ich Benutzernamen geändert haben).
          Der „technische Unterbau“ (Webserver, PHP, etc.) spielt hier übrigens keine Rolle, dies ist für Nextcloud ja mehr oder weniger transparent. Deshalb kannst du z.B. auch ein Backup einer Apache/MySQL-Nextcloud in einen nginx/MariaDB-Stack einspielen – in dem Fall geht das aber nur, da MariaDB binärkompatibel zu MySQL ist (mit PostgreSQL ginge das z.B. nicht).

          Bzgl. Backup/Restore könnten hier diese Skripte für dich interessant sein (falls noch nicht bekannt).

          Gruß,
          Jan

  14. Hallo, ich habe Nextcloud nun erfolgreich mit Deiner Anleitung am Start!
    Nun stehe ich aber hier vor meinem Dokumentenscanner und frage mich, wie kommen nun die Daten vom Scanner in die NC?
    Zuerst einmal zu meinem Aufbau:
    – Basis ist ein Proxmox
    – ein CT mit Ubuntu 22.04 und allem drum und dran (nochmal ein dickes Lob für die gute Anleitung!)
    – Daten der Benutzer liegen auf /var/naxtcloud_data/
    Nun würde ich gerne in Proxmox zwei weitere Laufwerke mounten
    – /var/nextcloud_external_data/scan_eingang
    – /var/nextcloud_external_data/dokumente_eingang
    Das habe ich auch erfolgreich gemacht, in NC konnte ich im Admin Account auch die ext. Speicher anbinden und sie werden angezeigt. Lege ich über ssh (root Benutzer) eine test.txt ab, wird diese in NC auch angezeigt.
    Mein Problem ist nun, wie kann mein Scanner (der wie fast alle nichts von Webdav versteht und nur FTP/SMB zulässt) in dieses Verzeichnis scannen. Woher bekomme ich login Daten (Benutzername und Passwort)?
    Die zweite Frage ist, muss ich unbedingt ein zweites/drittes Laufwerk mounten oder könnte ich diese Ordner auch direkt auf /var/nextcloud_data/scan_eingang und /var/nextcloud_data/dokumente_eingang erstellen?
    VG Alexander

    1. Hi Alexander,

      der Ansatz geht schon mal in die richtige Richtung. Dennoch „spricht“ die NC erst einmal nur WebDAV. Eine Lösung könnte sein, einen Samba-Server auf der Maschine einzurichten. Die Shares entsprechen dann den o.g. Ordnern. Die Einbindung in NC kann vermutlich weiterhin als lokaler externer Speicher erfolgen. Der Drucker kann diese Verzeichnisse dann mittels SMB ansprechen.
      Wichtig: Die beiden Verzeichnisse, die dann als SMB-Share zur Verfügung gestellt werden, sollten nicht unterhalb des NC-Datenverzeichnisses liegen, sondern z.B. unter /var/scan/…

      Gruß,
      Jan

      1. Hallo Jan,

        ja das habe ich gestern und heute versucht umzusetzen. Habe sogar die Beispiele „Bob“ und „Alice“ genommen. Jetzt kann ich die Shares auch auf meinem Windows 11 sehen, leider aber keine Dateien hochladen. Keine Berechtigung?

        mkdir -p /mnt/nextcloud_data_external/shares/bob
        chown -R bob /mnt/nextcloud_data_external/shares/bob

        mkdir -p /mnt/nextcloud_data_external/shares/alice
        chown -R alice /nextcloud_data_external/shares/alice

        mkdir -p /mnt/nextcloud_data_external/share
        setfacl -R -d -m u:bob:rwx,u:alice:rwx /mnt/nextcloud_data_external/share

        Einträge in der smb.conf
        [bob]
        valid users = bob
        path = /mnt/nextcloud_data_external/shares/bob
        guest ok = no
        writeable = yes

        [alice]
        valid users = alice
        path = /mnt/nextcloud_data_external/shares/alice
        guest ok = no
        writeable = yes

        [shares]
        valid users = bob alice
        path = /mnt/nextcloud_data_external/share
        guest ok = no
        writeable = yes

        Gehe ich ins Verzeichnis zeigt mir ein ls -ldh /mnt/nextcloud_data_external/share folgend an:
        drwxr-xr-x+ 2 root root 4.0K Jan 7 11:21 /mnt/nextcloud_data_external/share/

        VG Alexander

        1. Hi Alexander,

          hast du die User quasi auch zwei mal angelegt (einmal als normaler Linux-User und einmal als Samba-User)? Diesen Schritt übersieht man nämlich gerne mal.
          Ich würde dann als erstes ausprobieren, auf der Linux-Maschine mit den Usern alice und bob in die jeweiligen Verzeichnisse zu schreiben. Wenn du das als Root-User machst, gehören die erzeugten Dateien natürlich auch dem User root.

          Gruß,
          Jan

  15. Hallo Jan,

    ich denke ich muss einen User anlegen der sich nicht am System anmelden muss. Ich habe es nach Deiner Anleitung gemacht.
    adduser –no-create-home –disabled-login –shell /bin/false bob
    danach das passwort mittels passwd bob vergeben und für den Samba das Passwort für den User Bob mittels smbpasswd -a bob.

    Ist das falsch?

    VG Alexander

    1. Hi Alexander,

      das ist soweit alles korrekt.
      Kannst du mit dem User bob dann Dateien in Samba-Verzeichnis anlegen („sudo -u bob touch test.txt“)?

      Gruß,
      Jan

  16. Hallo Jan,

    das scheint nicht zu funktionieren.
    root@ubuntu:~# sudo -u bob touch \mnt\nextcloud_data_external\share\test.txt
    touch: cannot touch ‚mntnextcloud_data_externalsharetest.txt‘: Permission denied
    in seinem eigenen Verzeichnis das gleiche:
    root@ubuntu:~# sudo -u bob touch \mnt\nextcloud_data_external\share\test.txt
    touch: cannot touch ‚mntnextcloud_data_externalsharetest.txt‘: Permission denied

    Die Berechtigungen in den Verzeichnissen:
    Bob

    root@ubuntu:~# ls -ldh /mnt/nextcloud_data_external/shares/bob
    drwxr-xr-x 2 bob root 4.0K Jan 8 10:48 /mnt/nextcloud_data_external/shares/bob
    root@ubuntu:~# ls -ldh /mnt/nextcloud_data_external/share
    drwxr-xr-x+ 2 root root 4.0K Jan 8 10:45 /mnt/nextcloud_data_external/share

    Ich steh jetzt völlig auf dem Schlauch.
    VG Alexander

    1. Hi Alexander,

      also bei /mnt/nextcloud_data_external/share kann das nicht gehen, da dieser Order noch komplett root gehört.
      Bei dem anderen müsste es eigentlich gehen, hier wundern mich nur die Pfade, die du im Kommentar angegeben hast. Kann es sein, dass du „touch“ und „ls“ nicht auf dem gleichen Verzeichnis ausgeführt hast?

      Gruß,
      Jan

      1. Hallo Jan,

        ich kann sagen „es funktioniert einfach“

        Des Rätsels Lösung liegt wie immer irgendwo dazwischen.
        addgroup smb_user
        usermod -aG smb_user bob
        usermod -aG smb_user alice
        usermod -aG smb_user www-data
        chown -R www-data:smb_user /mnt/nextcloud_data_external/share
        chmod -R 775 /mnt/nextcloud_data_external/share

        ls -ldh /mnt/nextcloud_data_external/shares/bob
        drwxr-xr-x 2 bob root 4.0K Jan 8 10:48 /mnt/nextcloud_data_external/shares/bob

        ls -ldh /mnt/nextcloud_data_external/share
        drwxrwxr-x+ 2 www-data smb_user 4.0K Jan 10 19:50 /mnt/nextcloud_data_external/share

        Auf „share“ sollen alle @smb_user zugreifen können. Auf die eigenen „Homes“ /mnt/nextcloud_data_external/shares/*Beispiel Bob *“ nur der jeweilige Benutzer.

        Nun habe ich die App „Externer Speicher“ mit dem Verzeichnis „/mnt/nextcloud_data_external/share“ als „Lokal“ verbunden.

        Meinen Scanner mit Bob und Passwort gefüttert. Jetzt kann ich endlich von meinem Dokumentenscanner in die Nextcloud scannen!!

        Ein großes Lob für Deine Arbeit und ich bin dankbar für die Geduld.

        Jetzt mach ich einen Snapshot und wage mich an „https://decatec.de/it/linux-ocr-texterkennung-fuer-pdf-dateien-und-bilder/“ wenn mein Blutdruck sich beruhigt hat. :-)

Kommentar verfassen

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