Fotos auf dem Server zu Nextcloud im Container kopieren

Hallo, ich habe auf meinem Server Docker installiert und verwende diese Compose file und Dockerfile fĂŒr meine Installation:

version: '3.8'

services:
  nextcloud_zwei_postgres:
    image: postgres
    restart: always
    volumes:
      - /home/docker-projects/nextcloud_zwei/volumes/db:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=nextcloud
      - POSTGRES_USER=nextcloud
      - POSTGRES_PASSWORD=your-db-password
    networks:
      - nextcloud_zwei_network

  nextcloud_zwei_redis:
    image: redis:alpine
    restart: always
    networks:
      - nextcloud_zwei_network

  nextcloud_zwei:
    build: ./nextcloud-custom
    ports:
      - 8010:80
    links:
      - nextcloud_zwei_postgres:db
      - nextcloud_zwei_redis:redis
    volumes:
      - /home/docker-projects/nextcloud_zwei/volumes/html:/var/www/html
    restart: always
    environment:
      - POSTGRES_HOST=nextcloud_zwei_postgres
      - POSTGRES_DB=nextcloud
      - POSTGRES_USER=nextcloud
      - POSTGRES_PASSWORD=your-db-password
      - NEXTCLOUD_ADMIN_USER=your-admin-username
      - NEXTCLOUD_ADMIN_PASSWORD=your-admin-password
      - NEXTCLOUD_DEFAULT_PHONE_REGION=DE
      - REDIS_HOST=nextcloud_zwei_redis
      - PHP_MEMORY_LIMIT=1024M
    networks:
      - nextcloud_zwei_network

networks:
  nextcloud_zwei_network:
    driver: bridge

Die Dockerfile ist diese:

FROM nextcloud:latest
RUN apt-get update
RUN apt-get install -y libbz2-dev
RUN docker-php-ext-install bz2
RUN apt-get install -y nano
RUN apt-get install -y ffmpeg

Jetzt habe ich auf dem Server hier meine Fotos (eingebunden per fstab von meinem Synology Nas)

/home/nas/NasHome/Photos/

Wie bekomme ich jetzt am sinnvollsten und besten meine Fotos von dieser Quelle in meine Nextcloud installation?

Bisher hatte ich es so versucht:

  1. Kopieren:
rsync -av --no-group --no-owner --no-perms /home/nas/NasHome/Photos/ /home/docker-projects/nextcloud/NasFotos

Diesen Ordner habe ich dann in Nextcloud in der Compose File eingebunden

Beispiel so:

volumes:
  - /home/docker-projects/nextcloud/volumes/html:/var/www/html
  - /home/docker-projects/nextcloud/Fotos-Nextcloud:/mnt/Fotos-Nextcloud

So konnte ich dann per external share auf die Daten Zugreifen. Allerdings gab es dabei des öfteren komplikationen mit den Timesteps, mit den Berechtigungen beim löschen und Thumbs etc. pp

Zwischendurch hatte ich es auch so versucht:

   # Setze die Berechtigungen fĂŒr Dateien und Verzeichnisse
     find /home/docker-projects/nextcloud/volumes/html -type d -exec chmod 750 '{}' \;
     find /home/docker-projects/nextcloud/volumes/html -type f -exec chmod 640 '{}' \;


    # Setze die Datei und verzeichnisberechtigung in dem Ordner
    docker exec -u www-data nextcloud-app-1 chown -R www-data:www-data /mnt/NasPhotos

Anschließend muss man noch die neuen Dateien scannen

docker exec -u www-data nextcloud-app-1 php /var/www/html/occ files:scan your-admin-username

Jetzt also die Frage: Gibt es dafĂŒr bessere Wege? Oder ist das schon eine passable Methode? Wo könnte ich es verbessern oder was könnte ich anders machen?

Die Antwort lautet wie hĂ€ufig - “es kommt darauf an”. Je nach dem ob du diese Fotos dauerhaft ausserhalb der Nextcloud verwalten möchtest und diese nur (un-)regelmĂ€ssig in die Cloud einlesen möchtest oder ob du die Fotos eher innerhalb der NC verwalten möchtest und (un-)regelmĂ€ssig extern verarbeiten möchtest. Im ersten Fall wĂŒrde ich so wie du bereits versucht hast mit dem External Storage arbeiten und den externen Speicherort einbinden (den Grund fĂŒr rsync habe ich nicht ganz verstanden - du kannst den originalen Speicherort direkt einbinden). Im 2. Fall wĂŒrde ich die Daten in die Cloud laden und ab dann mit “offiziellen” Werkzeugen darauf zugreifen z.B. Webseite, WebDAV, client etc
 in diesem Fall sollten nach dem ersten Import kein Problem mit Berechtigungen etc auftreten.

Guten Morgen,

ich verwende rsync, will ich dir Fotos auf dem Nas eigentlich nicht berĂŒhren will. Es ist meine Backup Strategie und ich arbeite/experimentiere nicht mit den originalen.

Aber ich könnte tatsÀchlich den Pfad direkt einbinden und dann innerhalb von Synology sichern. Das geht

Die Dateien sollen eigentlich dauerhaft mit nextcloud verwaltet werden. Wenn den irgendwann alles so funktioniert wie es soll.

Bisher habe ich die StabilitĂ€t der Synology Produkte geschĂ€tzt und bei nextcloud hatte ich bisher immer das GefĂŒhl dass sie Android App eher beta ist.

Ich werde mich aber damit nochmal intensiver befassen:)

Hast du Punkte an der Compose File die auffallen die besser sein könnten?

“links” sind deprecated
 und dadurch dasss du alle Container eher ins Netzwerk hĂ€ngst sind sie obsolet. Ich persönlich lagere verĂ€nderliche Sachen wie Versionen lieber ins .env File, man kann auch mehrere HAben zB nextcloud.env und db.env uns diese in die Container hĂ€ngen, die es brauchen


Backup auf dem gleichen device ist grundsĂ€tzlich nicht optimal. und ich verstehe das auch nicht - ich hĂ€tte gesagt dass man auf jedenfall an dem “original” arbeitet - es macht ja keinen Sinn wenn ich zB ein schlechtes Foto lösche das im Backup zu haben und im Fehlerfall die ganze Arbeit nochmal zu machen. aber ich sehe den Punkt dass du dich absichern möchtest fĂŒr den Fall dass du ein falsches Foto löschst - hier hilft nur hĂ€ufig genug zu sichern
 wobei Nextcloud hier auch Mechanismen wie Papierkorb und Versionen bietet


Danke fĂŒr deine RĂŒckmeldung.

Ich werde zukĂŒnftig so arbeiten wie du es empfohlen hast und den Nas Ordner direkt mounten.

Dann arbeite ich mit Nextcloud an den originalen.

Die Links entferne ich, danke fĂŒr den Hinweis :slight_smile:

ich werde den Photos Ordner auf dem Synology nas in regelmĂ€ĂŸigen abstĂ€nden sichern lassen. So kann ich immer mit den originalen arbeiten.

1 Like

So, jetzt als Abschluss meine Lösung und Anleitung, vielleicht hilft es jemanden:
Hier ist eine ausfĂŒhrliche Anleitung

Anleitung: Synchronisation von Fotos zwischen Nextcloud, Server und NAS

1. Fotos vom NAS zu Nextcloud kopieren (Initial beim ersten mal)

Befehl:

sudo rsync -avh --chown=www-data:www-data /home/nas/NasHome/Photos/ /home/docker-projects/nextcloud/data/rene-next/files/Photos
  • ErklĂ€rung:
    • sudo: FĂŒhrt den Befehl mit Administratorrechten aus, was notwendig ist, um Dateiberechtigungen zu Ă€ndern.
    • rsync -avh: Nutzt rsync fĂŒr die Synchronisation. -a steht fĂŒr “Archivmodus” (kopiert rekursiv und bewahrt Links, Berechtigungen etc.), -v fĂŒr “verbose” (detaillierte Ausgabe), -h fĂŒr “human-readable” (lesbare DateigrĂ¶ĂŸen).
    • --chown=www-data:www-data: Ändert Besitzer und Gruppe der kopierten Dateien zu www-data.

2. Benutzerkonfiguration auf Container und Host:

  • Auf beiden Systemen (Server (Host)) und Container (Nextcloud) hat der Benutzer www-data die UID 33 und GID 33. Dies stellt sicher, dass es keine Berechtigungsprobleme gibt, da der Benutzer identisch ist.

3. Nutzung von External Storage in Nextcloud:

  • Falls externe Speicher genutzt werden, kann der Mount-Pfad im Hostsystem z.B. /home/docker-projects/nextcloud-fotos sein, und im Container als /mnt/Fotos-Nextcloud eingebunden werden.
  • www-data im Container kann dann auf diese Daten zugreifen, sie lesen, löschen und schreiben.

Der Teil der Compose File wÀre dieser:

    volumes:
      - /home/docker-projects/nextcloud-fotos:/mnt/Fotos-Nextcloud
      - /home/docker-projects/nextcloud:/var/www/html

4. Hochladen von Handyfotos:

  • Verwende die Nextcloud-App zum Hochladen der Fotos in den Ordner /home/docker-projects/nextcloud/data/rene-next/files/Photos auf dem Server.

5. Sichern der Fotos auf dem NAS:

Jetzt kommt der Spannende Teil, hier werden die Daten vom Nextcloud Container zurĂŒck zum Nas gesichert, das ist deine Überlebensstrategie. Dein Backup! Ich verwende in meinem Nas 4x 4TB IronWolf Nas HDDs die speziell fĂŒr den Betrieb im Nas sind. Diese kosten zwar sehr viel (180€ pro Platte) aber ich empfehle euch eine Nas HDD fĂŒr eurer Backup! Betrieb ist SHR1, ein Spezielles Synology ding, Ausfallsicherheit von 1 Platte. Wenn euch also warum auch immer eine Kaputt geht habt ihr keinen Datenverlust. Einfach neue kaufen und einbauen (Hot Plug) und die neue Platte ist wieder am Start.

  • Cronjob/Script-AusfĂŒhrung: Ein automatisierter Prozess kopiert die Daten in regelmĂ€ĂŸigen AbstĂ€nden vom Server auf das NAS.
  • rsync-Befehl:
    rsync -av --progress /home/docker-projects/nextcloud/data/rene-next/files/SofortUpload /home/nas/NasHome/Nextcloud-Sicherungen/Fotos
    
  • ErklĂ€rung:
    • --progress: Zeigt den Fortschritt des Kopiervorgangs an.
    • Dieser Befehl kopiert die Fotos inkrementell, d.h., nur neue oder geĂ€nderte Dateien werden ĂŒbertragen.
    • Der NAS-Ordner bleibt so immer auf dem neuesten Stand des Servers.

ZusÀtzliche Hinweise:

  • Synology NAS und Berechtigungen: Synology NAS-Systeme handhaben Dateiberechtigungen in der Regel automatisch. ZusĂ€tzliche Anpassungen der Berechtigungen sind meist nicht notwendig.
  • Sicherheit: SHR-1 (Synology Hybrid RAID mit 1-Disk-Fehlertoleranz) sorgt fĂŒr zusĂ€tzliche Datensicherheit auf dem NAS.

Diese Anleitung ermöglicht es, Fotos effizient zwischen Nextcloud, dem Server und dem NAS zu synchronisieren und zu sichern, wobei Berechtigungen und Benutzerkonfigurationen beachtet werden, um nahtlose Zugriffe und Sicherungen zu gewÀhrleisten.

Ich hoffe es hilft jemanden :slight_smile:

1 Like

Gibt es da nicht einen einfacheren Weg?
Klingt alles sehr sehr komplex!

Du setzt ein NAS ein - Warum dann nicht auch Cloudsync?
Ich nutze den Nextcloud Clienten um Dateien (z.B. Fotos) in meine Nextcloud zu bringen oder auch zu syncen.
Übrigens gibt es da dann noch rclone.

Danke fĂŒr das Teilen - sicher kann jemand davon profitieren.

Ich möchte dich darauf hinweisen dass deine Daten effektiv nur auf dem NAS liegen und bei einem Hardware-Problem (Brand, Überspannung, Hochwassser etc) komplettt verloren sind. Ich wĂŒrde eine externe Sicherung in der Cloud oder externen Disks (woanders gelagert) empfehlen.

1 Like

dito

Raid 5, Raid 10, usw. sind allesamt keine Schutz vor Totalausfall, allerhöchsten vor einem defekten DatentrÀger.
Aber da gibt es dann einen entscheidenden Nachteil:
Schon mal bei 4x4TB (12TB Nutzdaten) ein ReSync bei 8TB Datenmenge gemacht?
Das kann im Betrieb Tage oder Wochen dauern und in der Zeit darf KEIN zweiter DatentrÀger ausfallen, trotz 100% Belastung.

Meine Daten liegen aktuell auf dem Server und auf dem Nas.
Ich habe Initial vom Nas alles auf den Server kopiert, was fĂŒr Nextcloud relevant ist.

Ab dem Punkt sichere ich meine Fotos vom Handy mit der app zu Nextcloud.
Hier greift dann mein Cronjob:

rsync -avh --progress /home/docker-projects/nextcloud/data/rene-next/files /home/nas/NasHome/Nextcloud-Sicherungen/files
rsync -avh --progress /home/docker-projects/nextcloud/data/rene-next/uploads /home/nas/NasHome/Nextcloud-Sicherungen/uploads

Damit sichere ich alle Dateien zum Nas zurĂŒck. Das heißt die Daten liegen alle auf dem Server und werden von da zum Nas gesichert.

Das Nas selbst verwendet Cloudsync und ich speichere zu OneDrive die wichtigsten Daten verschlĂŒsselt. Der SchlĂŒssel ist auf einem Yubikey der ein Klon hat. Das heißt beide Yubikeys haben die Macht an die Daten in der Cloud zu kommen.

rsync arbeitet inkrementell. Vom Server zum Nas werden nur jeweils neue Dateien gesichert. Die Sicherung dauert in dem Fall nicht sehr lange. Zugegeben je nach Datenmenge. Ich rechne aber nich tmit mehreren TB neuer Daten.

Der SHR1 Betrieb sollte im Normalfall ausreichen. Man muss halt auch immer ĂŒberlegen wie wichtig die Daten sind und welchen Aufwand sie es wert sind.
Denke die Dateien auf 3 DatentrÀgern, 1 davon OrtsunabhÀnig reicht. Zumal die Chance eines total Ausfalls relativ gering sind. Deutlich geringer als ein Kaputtes oder gestohlenes Handy, USB Stick oder externe USB Festplatten etc.

Meine Fotos (und Dokumente von paperless-ngx) habe ich jetzt effektiv hier:

  1. Server
  2. Nas
  3. OneDrive (verschlĂŒsselt)

Vor meinem Nextcloud, nach der Fritzbox kommt noch eine dedizierte Opensense (wenn ich die Zeit finde das Netzwerk entsprechend umzubauen) und ab da möchte ich schauen das meine Nextcloud Instanz erreichbar wird von außen. Wie genau, wann genau (oder auch ob) sehe ich aber spĂ€ter.

Naja prinziepiell ist es ja jetzt so:
Daten werden per App gesichert und dann per rsync zum Nas kopiert. Ist schon relativ einfach. Aber TextmĂ€ĂŸig natĂŒrlich erstmal viel.

Bisher habe ich keine Native Möglichkeit gefunden (oder ĂŒbersehen) Daten von oder aus Nextcloud nach extern zu sichern. Deswegen der Weg ĂŒber Rsync.

Das verstehe ich nicht, meinst du in extra so:

Klar, das wÀre eine Option. Ohne Rsync mit Cloudsync. Werde ich mal testen.

Wenn ich jetzt noch einen Denkfehler habe, dann korrigiere ich den gerne :slight_smile:

1 Like

Sorry, mein Hinweis mit 4x4TB war auf den Beitrag von WWE bezogen und darauf, wenn im Raid vom NAS mal eine HDD ausfÀllt.

Dennoch finde ich deine Lösung viel zu kompliziert.
Du kopierst die Daten von A nach B und diese wieder nach C.
Energetisch eine absolute Verschwendung.
Wenn du doch eine externe Cloud zur Datensicherung hast und auf deinem Server die Nextcloud lĂ€uft, warum dann der Umweg ĂŒber das NAS?

Richte auf dem Server eine Backup Lösung mit VerschlĂŒsselung zu der Cloud ein.

Ich Teste gerade Cloudsync und Webdav.

Das war nur Initial! Das war einmalig, weil ich meine Fotos alle auf dem Nas hatte und auch mit der Photos App verwaltet habe. Also mussten die Daten von “C” ja erstmal zum Server.

Ich habe also den Server auf dem ich die Originaldaten habe und diese mit Netxcloud und Paperless-ngx verwalte.

Das Nas ist meine UnverschlĂŒsselte Ablage in meinem Netzwerk. Die Laufwerke habe ich z.b. auch in Windows und den Linux Rechnern im Heimnetzwerk eingebunden.

Da möchte ich keine VerschlĂŒsselung drauf haben. Das Anforderungsprofil gibt das nicht her welches im Netzwerk ist.

Also habe ich die Originalen (Fotos und Dokumente) eben auf dem Server.
Diese werden zum Nas gesichert (per App CloudSync oder auf CLI mit Rsync. Am Ende arbeitet aber Cloudsync auch mit rsync.)

Von Dem Nas werden die wichtigsten Daten, aber nicht alle, verschlĂŒsselt OrtsunabhĂ€nig gesichert. Denke das das eine relativ gute Kombination ist. In meinem Fall mit meinem Anwendung Szenario.

Eben genau deswegen, weil ich in meinem Lokalen Netzwerk keine VerschlĂŒsselten Dateien möchte.

Das bedeutet aber, dass kein Rechner mehr auf die Daten zugreifen kann per Netzwerklaufwerk. Gerade bei Windows.

1 Like

Das bedeutet aber, dass kein Rechner mehr auf die Daten zugreifen kann per Netzwerklaufwerk. Gerade bei Windows.<

Dann richte auf den Rechner den Nextcloud Clienten ein, mit online oder offline sync, oder per Webdav.

1 Like

Das bedeutet aber, dass kein Rechner mehr auf die Daten zugreifen kann per Netzwerklaufwerk. Gerade bei Windows.

Du kannst aber auch eine NFS Freigabe auf den Datenordner der Nextcloud auf dem Server anlegen. In Windows muss das NFS Protokoll aktiviert werden.

1 Like

Moin, ich frage mal hier, ich hatte dazu zwar mal ein Thema auf gemacht aber vielleicht passt es hier besser, wenn es einen Zusammenhang dazu gibt:

Ich lade die Fotos jetzt per app hoch. Sie werden auch angezeigt und der Gesichts und Objekterkennung tagged sie auch.

Im Ordner “SofortUploads” sind die Bilder auch vorhanden, z.b. von 2024.

Aber weder wenn ich auf Medien noch auf Fotos klicke sehe ich sie. Da sehe ich immenroch Bilder von 2023.

Hier hatte ich das mal beschrieben:

Hier sieht man, dass es Bilder gibt die hinzugefĂŒgt werden:

Rufe ich aber “http://192.168.178.36:8811/apps/photos/” auf, dann sind sie nicht zu finden / sehen.

In der Ordneransicht aber schon.

Schon mal nach den versteckten Dateien gesucht “.nomedia” und/oder “.noimage”?

Hallo, ja habe ich.

Diese Dateien habe ich nicht in den Ordner.

Verstecke Dateien auch nicht. Also diese werden angezeigt.

habe ich einen Fehler oder Unstimmigkeit in meiner Compose file die das bewirken könnte?

version: '3.8'

services:
  nextcloud:
    image: nextcloud-custom-28:latest
    container_name: nextcloud
    hostname: nextcloud-server
    volumes:
      - /home/docker-projects/nextcloud:/var/www/html
    restart: always
    environment:
      - POSTGRES_HOST=postgres
      - POSTGRES_DB=nextcloud
      - POSTGRES_USER=nextcloud
      - POSTGRES_PASSWORD=securepassword
      - REDIS_HOST=redis
      - PHP_MEMORY_LIMIT=1024M
      - NEXTCLOUD_TRUSTED_DOMAINS=localhost 192.168.178.36 nipogi nipogi.fritz.box
      - NEXTCLOUD_ADMIN_USER=rene-next
      - NEXTCLOUD_ADMIN_PASSWORD=rene-next#_1
      - NEXTCLOUD_DEFAULT_PHONE_REGION=DE
    ports:
      - "8811:80"
    
    depends_on:
      - postgres
      - redis
  postgres:
    image: postgres:latest
    restart: always
    environment:
      - POSTGRES_DB=nextcloud
      - POSTGRES_USER=nextcloud
      - POSTGRES_PASSWORD=securepassword
    hostname: nextcloud-db
    container_name: nextcloud-db
    volumes:
      - /home/docker-projects/nextcloud/postgres:/var/lib/postgresql/data

  redis:
    image: redis:alpine
    restart: always
    hostname: nextcloud-redis
    container_name: nextcloud-redis

Dockerfile ist diese, simple:

FROM nextcloud:28-apache

# Installiere notwendige Pakete (optional, je nach Bedarf)
RUN apt-get update && \
    apt-get install -y libbz2-dev nano ffmpeg && \
    rm -rf /var/lib/apt/lists/*

# Installiere PHP-Erweiterungen (optional, je nach Bedarf)
RUN docker-php-ext-install bz2

Bisher hat auch das löschen der container und neu bauen nichts bewirkt.
Bei meiner Partnerin ist das nicht so. Finde ich sehr merkwĂŒrdig.

Deswegen glaube ich, dass an meiner Config etwas nicht stimmt.

Also, du lĂ€dst die Dateien hoch und unter “AktivitĂ€ten” wird dieser Upload auch aufgefĂŒhrt. Unter “Dateien” sind diese Dateien auch zu sehen und du kannst sie dort auch öffnen.
“Photo” und “Memories” zeigen sie jedoch nicht an.
Diese Dateien liegen in einem separaten Ordner “2024”.
Ist das soweit richtig?

Wie hast du diesen Ordner angelet?

Was ist dort eingestell?


und was steht dort?

1 Like

Genau das ist alles richtig.

Die Ordner wurden durch die nextcloud App angelegt:

Fotos Einstellungen ist wie bei dir

Auch in der nextcloud App gibt es Probleme, die vielleicht dazu gehören:
Es werden keine Vorschau Bilder gezeigt:

Wenn ich das Bild anklicke, dann sehe ich es aber, z.b. den gerade eben erstellten Screenshot