SFTP Upoad von Bildern von Webcam

Hi,

wie lässt sich das Thema mit NC abbilden:

5 Webcams (Webcam 1-5) legen alle 15 Minuten ein Bild (.jpg) über SFTP in ein Verzeichnis auf den Server.
Das ganze 6 Monate lang ca. 86400 Bilder (jeweils ca. 800KB)

User 1 darf nur die Bilder von Webcam 1-3 sehen und herunterladen.
User 2 darf nur die Bilder von Webcam 4-5 sehen und herunterladen.

Die Webcams schreiben via FTP in ein beliebiges Verzeichnis auf den Server:
*KAMERANAME1/DATUM/PIC_001/UHRZEITxx.xx.xx.*jpg
*KAMERANAME2/DATUM/PIC_001/UHRZEITxx.xx.xx.*jpg
*KAMERANAME3/DATUM/PIC_001/UHRZEITxx.xx.xx.*jpg
*KAMERANAME4/DATUM/PIC_001/UHRZEITxx.xx.xx.*jpg
*KAMERANAME5/DATUM/PIC_001/UHRZEITxx.xx.xx.*jpg

In welches Verzeichniss lege ich die Bilder via SFTP ab?
Es genügt eigentlich, wenn die Bilder im Ordner für den User zu finden sind.
Oder muss NC die Bilder in die Datenbank reinbekommen um die Zugriffrechte der User festzulegen?

Als NC Neuling bin ich da etwas überfragt,
vielleicht habt ihr ja eine Idee, wie ich das lösen kann.

LG

Alex

Hey @Hubidu und willkommen im Userforum der Nextcloudcommunity

wie hast du installiert? Wo liegen deine Server-Daten? Hast du ein externes Laufwerk verbunden?

Sonst können wir das nur sehr allgemein beantworten.

Ohnehin gilt: Von extern Dateien hochladen - das ist möglich aber der Server erkennt die Dateien nciht so ohne weiteres. Du müsstest einen Cronjob dafür einrichten, der die neuen Dateien erkennt und in der Datenbank bekannt macht… Aber eins nach dem anderen

Sorry, ich kenne mich da nicht so gut aus, deshalb versuche ich deine fragen bestens zu beantworten:

Wie habe ich installiert? → keine Ahnung was du meinst, ich habe die “normale” Installation angestoßen, in dem ich die setup-nextcloud.php gestartet habe.

Dann die MariaDB angelegt, und schon hats funktioniert…

Oder hätte ich bei der Installation schon etwas beachten müssen?

Wo liegen die Server-Daten? - > Bei meinen Webhoster bei Profihost.com Dort auf den Verzeichnis auf meinen Server oder in der DB?

Externes Laufwerk- → ich habe die APP “External Storage Support” mal installiert, allerdings kenn ich mich damit nicht aus.

Wäre das schon eine Lösungsansatz?

LG

Alex

Nutzt Du FTP oder SFTP?

Falls die Daten in einem Verzeichnis von Nextcloud liegen kannst Du einen cron-job zum rescan (hinzufügen) ausführen.

Docs: Using the occ command — Nextcloud latest Administration Manual latest documentation

bzw. können die Kameras kein WebDAV?

Hey Alex,

deine Infos bleiben spärlich aber ich denke, ich weiß, wo deine Daten liegen und kenne den Pfad (aber eben nicht zu 100% sicher)

du findest die Daten höchstwahrscheinlich unter

/var/www/nextcloud/data/user*/files

(das ist in Abhängigkeit der Installation - ggf weiß dein Hoster mehr, daher fragte ich wie es installiert wurde)
Da könntest du die Daten der Kameras ablegen. Aber wie gesagt, NC findet sie dann nicht. Du musst einen Cronjon einrichten, der den folgenden Befehl in einem gewissen Zeitabstand wiederholt.

der rescan-Befehl, den @rakekniven explizit (und ich implizit) erwähnt hat, lautet

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

Auf diese Weise tauchen die externen Bilder nach der eingestelltren re-scan-Zeit bei den entsprechenden Benutzern auf.

Scheinbar nutzt du einen reinen Webserver. Das wird nicht empfohlen und kann irgendwann zu Problemen führen, da du z. B. zur Reperatur oder auch wie in diesem Fall kein files:scan --all mit dem Kommandozeilenberfehl occ durchführen kannst.

Wie weiter oben beschrieben kann das Protokoll WebDAV dein Problem lösen. Denn per WebDAV übertragene Dateien werden von Nextcloud korrekt erkannt und die die Nextcloud Datenbank direkt eingebaut. Schau hierzu in deine Webcam-Optionen.

Da du SFTP nutzten kannst, kannst du vielleicht auch ein eingeschränktes SSH verwenden. Das könnte dann etwa so aussehen:

ssh user@server (unter Windows z. B. Putty)
php /pfad/zur/nextcloud/occ files:scan --all

Tiny File Manager

Als Alternative zu Nextcloud könntest du Tiny File Manager (Demo Bilderordner ) nutzen. Für eine möglichst einfache Konfiguration müsstest du aber für jeden Ordner eine eigene Benutzer/Passwort-Kombination verwenden. Tiny File Manager besteht nur aus einer PHP-Datei und über CDNs aus dem Internet nachgeladene CSS- und JavaScript-Komponenten. Bei Interesse melde dich gerne.

1 Like

Die Kameras übertragen die Bilder per SFTP.
Das Verzeichnis, wo die Kameras die Bilder ablegen, kann ich frei auswählen.
Zum testen habe ich dafür den ordner: /cam im Verzeichnis von NC angelegt.
Dorthin werden die Bilder derzeit übertragen.

WebDAV können die Kameras nicht.
SMB oder NFS können die Kameras auch, wäre das eine hilfe?

Hi Jimmy,

den Pfad habe ich geändert:
Die Daten der Kamera werden jetzt via SFTP in den Ordner /Nextcloud/data/user/files/AE06E80PANBF252/2024-11-15/pic_001* geschrieben.

Dabei wird der Pfad /2024-11-15/ täglich neu von der Kamera angelgt.

Wie du geschrieben hast, erscheinen die Bilder aber nicht in NC.
Jetzt muss ich mich mal an den Cronjob mit den rescan-Befehl machen.
Das mit den Cronjob´s ist für mich neuland, mal schauen ob ich das hinbekomme.

Falls du eine elegantere Lösung haben möchtest, die kein occ files:scan benötigt, könntest du folgendes Script nutzen, welches die inotify-tools nutzt um neue Files in einem lokalen Folder zu erkennen, und sie dann automatisch via Rclone auf die Nextcloud hochzuladen.

Ich nutze das in einer separten VM in Verbindung mit einem MFP/Scanner, der kein WebDAV kann.

1 Like

@bb77
Ich denke bei dem beschränkten Webspace ist das keine Lösung.

@Hubidu
Hast du mal geschaut, ob dir dein Hoster einen eingeschränkten SSH-Zugang z. B. per Putty bereitstellt wie ich oben geschrieben habe? Wobei das ist wahrscheinlich auch nicht praktikabel, da du ja regelmäßig den Befehl absetzen müsstest.

Ich weiß aber auch nicht, ob die Verwendung von Cron sinnvoll ist. Hierbei müsste man mal schauen wie lange der Cron-Prozess überhaupt läuft. Zudem befürchte ich, dass du gar keinen Cron-Prozess konfigurieren kannst.

Das muss nicht auf dem Nextcloud Server selbst laufen. Man könnte es z.B. zuhause oder halt dort wo die Kameras sind, auf irgendeinem Raspi o.Ä. installieren, denn das braucht wenig bis gar keine Rescourcen.

Die Kameras senden die Bilder per SFTP in einen Ordner auf dem Raspi, der von Inotfiy überwacht wird und Rclone (ebenfalls auf dem Raspi) triggert, das die Bilder dann automatisch in die entfernte Nextcloud hochlädt.

@devnull74

Das mit den SSH-Zugang könnte zwar klappen, aber:

Wie du schon geschrieben hast, muss das ganze regelmäßig laufen.
D.H. alle 15 Minuten müssen neue Bilder automatisch für NC aktualisiert werden.

Cronjobs können aktiviert werden.
Das habe ich zwar noch nicht gemacht, hier könnte mir aber Profihost helfen.

Das passende Script dazu kann ich aber nicht schreiben, dazu fehlt mir das wissen … :roll_eyes:
Habt Ihr zum script einen Tipp wie das ausschauen soll?

LG

Alex

@bb77

Ich möchte den aufwand möglichst gering halten.
Wenn ich jetzt noch einen Raspi (ich hätte auch ein QNAP zuhause…) dazwischenschalte, wird das ganze noch fehleranfälliger.

Daher lasse ich die Kameras die Bilder gleich den Server hochladen, wo auch schon NC läuft.

Oder sehe ich das falsch?

LG - Alex

Ich habe mal ein wenig gesucht. Laut hier und hier musst du in deinem obersten Webverzeichnis eine Datei z. B. nextcloud.sh anlegen wie folgt:

#!/bin/sh

/usr/local/php8.x/bin/php ~/nextcloud/occ files:scan --all

PHP-Version anpassen

Dateiendung: sh, z. B. nextcloud.sh
zweite Zeile: leer
dritte Zeile: Befehl für Nextcloud (~ ist der relative Pfad in deiner Ordnerstruktur)

Dann musst du laut hier einen Cron-Job einrichten. Bei Fenster muss als Ziel dann wohl stehen:


/home/username/www.domain.de/nextcloud.sh

(natürlich für dich angepasst)

Vielleicht kann man das .sh-Script auch umgehen und man kann direkt php occ ausführen. Ich denke aber mal eher nicht.

Wenn es funtkioniert (wovon ich erst mal nicht ausgehe), dann messe die Laufzeit. Wenn es alle 5 Minuten läuft, darf es natürlich nicht länger als 5 Minuten laufen, da sonst irgendwann der Server abstürzt.

Ja ein wenig Aufwand ist es schon das einzurichten, aber wenn es mal läuft, läuft es meiner Erfahrung nach zuverlässig.

Ich nutze es aber nur zum gelegentlichen Scannen von Dokumenten, und nicht um alle 15 min Bilder hochzuladen. Ich sehe aber keinen Grund, warum das für deinen Usecase nicht funzen sollte. Probleme gäbe es vielleicht, wenn die Bilder im Sekundentakt kämen, aber warscheinlich nicht mal dann.

Ja das geht schon, wobei alle 15min occ files:scan -all auszuführen imho halt auch nicht so toll ist, weil das je nach Anzahl der Dateien auch länger als 15min dauern kann und weil es immer Last auf dem Server bzw. der Datenbank erzeugt. Müsstest du aber halt testen, wie sich das konkret auswirkt auf deiner Nextcloud Instanz.

Falls der Scan zu lange dauert, oder die Nextcloud langsamer wird während dem der Scan läuft, könntest du eine separten User dafür einrichten, die Dateien in einer Ordner unter diesem User hochladen, und dann den Ordner mit deinem Hauptuser teilen. Dann musst du nur die Files dieses Users scannen und nicht alle Files auf dem Server oder alle Files in deinem Hauptuseraccount, was dann deutlich schneller gehen sollte.

occ files:scan --<user_id>

Oder du könntest, wenn deine Hostingumgebung das zulässt, die Bilder in einen Ordner ausserhalb der Nextcloud hochladen, und diesen dann als “External Storage” in die Nextcloud einbinden. Dann könntest du auf den Scan komplett verzichten.

Das ist vielleicht eine gute Lösung. Als External Storage wäre dann wohl Local sinnvoll. Habe ich auch schon mal genutzt. In deinem Fall wären es dann wohl 5 Local External Storage, die du dann entsprechend teilen würdest. Die Ordner wären dann außerhalb von Nextcloud also z. B. /nextcloud für Nextcloud und /cam1 oder /cam/cam1 für Cam1. Eintragen musst du es hier.

1 Like

@devnull74

External Storage: Das ist wohl die einfachste Lösung. :grinning:

Ich habe jetzt mal testweise diese Ordner angelegt:

/Nextcloud/cam1
/Nextcloud/cam2

Die Kameras senden die Bilder via SFTP dorthin.

Die Ordner habe ich dann über Verwaltung → Externer Speicher “Lokal” eingebunden und den jeweils berechtigten Benutzer verfügbar gemacht.

Funktioniert bislang.
Ich teste das mal jetzt ein paar tage lang…

LG - Alex

1 Like

Achte darauf, dass es außerhalb von Nextoud liegt. Sonst gibt es vielleicht Probleme bei Updates.

1 Like

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.