Fotosammlung mit Photoprism

Fotosammlung und Foto-Backup

Dieser Artikel beschreibt mein Setup für die zentrale Foto-Bibliothek der Familie und wie diese gesichert und von einer Fotoverwaltung indexiert wird.

Ich habe kurz nach der Jahrtausendwende angefangen, digital zu fotografieren (dabei aber nicht mit analog aufgehört 😉). Die erste Kamera war das erste Modell der Canon Digital IXUS. Mit 2 Megapixel Auflösung! Aber das Ding machte richtig gute Fotos und für die damalige Zeit waren 1600x1200 Pixel völlig ausreichend.

Ein Glas Single Malt auf einem Fass

Im Laufe der Zeit kamen einige andere Kameras dazu, von Kompaktkameras wie einer Fujifilm F30 (die übrigens immer noch in Gebrauch ist, weil ein bis 30 Meter zertifiziertes Unterwassergehäuse schweineteuer ist und die drei oder vier Megapixel für “Fischerlfotos” völlig ausreichen) bis zu Canon DSLRs. Zuerst eine 10D, dann eine 50D, dann eine 80D und seit dem iPhone 11 Pro immer mehr Bilder aus dem “immer dabei”-Smartphone. Langes Geschreibsel kurzer Sinn: wir sitzen auf einem echt großen Haufen digitaler Bilder. Spätestens seit der Geburt der Tochter hat sich die Bilderflut wie wahrscheinlich bei fast allen Eltern nochmal deutlich gesteigert.

Backup gut, alles gut

Data safeguarded,
Backups whisper peace of mind,
Vital memories.
– The Backup Haiku

Während das reine Backup nicht das große Problem ist (relativ lange DVDs, dann USB. Das “richtige” Backup läuft täglich auf ein NAS, das geht monatlich auf externe Platten, die im quartalsweise rotierend ins Bankschließfach wandern. Ja, denn wenn die Hütte überschwemmt wird oder abbrennt, hilft Dir die Backup-Platte im Schrank exakt Null 😉), ist die Bereitstellung zum schnellen Ansehen eine andere Nummer.

Da nach zehn Jahren das alte NAS langsam in Rente gehen sollte (einen Salut für die tapfere DS213j, die unermüdlich ein Jahrzehnt problemlos ihren Dienst verrichtet, aber die Platten sind alt und RAM und CPU auch nicht mehr auf der Höhe der Zeit) und ich sowieso dabei war, die neue Synology DS224+ einzurichten (damit sind dann ein paar Container auch kein Problem), wollte ich das Thema mal richtig angehen.

Dazu ein klitzekleiner Exkurs, der für Leute wie mich, die schon etwas länger in der IT unterwegs sind, immer wieder faszinierend ist: wie klein und günstig Speicher geworden ist. Das Bild unten ist eine 4TB-“Disk”. 4000 Gigabyte im Volumen eines kompakten Smartphones für weniger als 250 Euro, vor 30 Jahren war das pure Science Fiction (ganz abgesehen davon, dass niemand gewusst hätte, was ein “kompaktes Smartphone” ist 🤣). Wie schnell die Entwicklung in diesem Bereich ist, könnt Ihr im Artikel “Die Speicher-Explosion” nachlesen, der ist nur sechs Jahre alt.

Eine SSD mit 4 Terabyte

Welcher Bilder-Butler darfs denn sein?

Es gibt eine fast unüberschaubare Anzahl an Fotodatenbanken. Sehr viele haben aber Einschränkungen, die einen Einsatz als nicht sinnvoll erscheinen lassen. iPhoto ist schick und einfach, aber was mache ich mit den Bildern der Kameras? Alle in die Fotobibliothek? Das geht nur manuell und ich habe keine Kontrolle über die Ordnerstruktur der Shootings. Andere erlauben die Ordnerstruktur selbst zu definieren, aber wir bekomme ich da die Bilder von den Smartphones rein? Und die Bilder, die ich mit einer freien Lizenz eventuell für meine Präsentationen nutzen möchte? Dann wieder kann ich die Metadaten nicht sauber auswerten, weil keine Sidecar-Dateien (eine Datei pro Foto mit den Metadaten ein einem sauber maschinen- und menschenlesbarem Format) geschrieben werden. Open Source auf jeden Fall. Kostenlos ist keine Priorität, ich bin gerne bereit, für die Arbeiterleichterung und die bessere Organisation zu bezahlen. Aber irgendwie habe ich das Thema (auch der des “vereinheitlichten” Backup von Kamera- und iPhoto-Bildern) immer vor mir her geschoben.

Ein kleiner Teil des Katalogs gruppiet nach Monaten

Über den “DigitalWriter” (Homepage https://digital-cleaning.de/) Herbert bin ich auf die Software PhotoPrism aufmerksam geworden. Ein kleines Team in Berlin, dass eine Community Edition als Open Source anbietet und mit zusätzlichen bezahlten Features sein Geld verdient. Gebaut in Go (ich mag Go ❤️) und ich kann das per Docker schnell installieren und die Struktur auf dem Datenträger ist der Software egal. Modischer Schnickschnack wie Tagging per maschinellem Lernen (“KI”, huhuuu 👻) und viele Suchoptionen, dazu alles im Browser auch von IT- und Foto-Laien beeinbar, das klingt interessant.

PhotoPrism auf die Synology bringen

Die empfohlene Methode der Installation von PhotoPrism in der Community Edition ist per Docker-Container. Seit dem neuen DSM 7.2 für die Synology-NAS ist ein Container Manager enthalten, der es erlaubt, das alles per GUI zu erledigen. Dazu zuerst an der Synology anmelden und dann aus dem DSM-Desktop das Paketzentrum öffnen. Dort wird nach dem Begriff “container manager” gesucht:

Das Synology Paketzentrum

Dieses Paket installieren. Dabei wird dann ein Ordner docker angelegt. Bei mir heißt das Speichervolume (wie kreativ!) volume1, also komplett /volum1/docker. Falls das nicht automatisch geschieht, kann dieser Ordner mit Dateimanager (der “File Station”) leicht angelgt werden.

Da drunter lege ich mir einen neuen Ordner für das Photoprism-Projekt mit dem Namen photoprism (schon wieder so kreativ 😆) an. Darunter zwei Ordner für Backup und Storage von Metadaten.

Die Ordnerstruktur

Anschließend wieder in den Container Manager wechseln und links den Punkt “Registrierung” (in der engl. Version “Registry”) auswählen. Dann kann oben rechts im Suchfeld photoprism eingegeben werden. Darauf achten, dass der richtige Container ausgewählt wird (photoprism/photoprism) und dann darauf doppelklicken. Es erfolgt die Frage nach dem “Tag”, dem Versionsetikett. Ich habe hier einfach " latest" ausgewählt.

Den Container suchen

Wenn das erledigt ist, in der Auswahl links auf den Punkt “Projekt” klicken. Das Projekt bekommt einen Namen (na was wohl? photoprism 😉) und dann wird der Pfad eingetragen, der vorher angelegt wurde: /docker/photoprism.

Das Projekt

Für die Container gibt es eine Konfigurationsdatei, die im YAML-Format erstellt wird. Entweder ich lade eine fertige YAML-Datei hoch oder ich erstellen in dem kleinen Textfenster eine solceh Datei (oder füge die dort aus der Zwischenablage ein). Aus Backup-Gründen empfiehlt es sich, eine Datei lokal vorzubereiten und dann hochzuladen, so hat man eine Sicherheitskopie.

Die Quelle für die Konfigurationsdatei

Ich habe die YAML-Compose, die ich verwendet habe hier verlinkt, falls jemand einen Ausgangspunkt benötigt (die Datei DURCHLESEN! Das stehen auch Ports und Passwörter drin, die gesetzt werden wollen). Entspricht mehr oder weniger dem Standard von Photoprism, ich habe nur eine Zeile geändert:

PHOTOPRISM_AUTH_MODE: "public" # authentication mode (public, password)

Damit muss sich zum Betrachten und Suchen der Bilder niemand mit Benutzername und Passwort anmelden. Da die Software nur im lokalen LAN betrieben wird und weder die Synology noch mein Router irgendwelche Ports nach außen geöffnet haben und ich der “Foto-Heini” in der Familie bin (Frau und Tochter suchen nur oder gucken Alben an), ist das einfach bequemer.

Nun muss in der Datei noch der Speicherort der Bilder angepasst werden. Das geschieht im Abschnitt volumes:

    volumes:
      # "/host/folder:/photoprism/folder"                # Example
      - "/volume1/photo:/photoprism/originals"            # Original media files (DO NOT REMOVE)
      # - "/example/family:/photoprism/originals/family" # *Additional* media folders can be mounted like this
      # - "~/Import:/photoprism/import"                  # *Optional* base folder from which files can be imported to originals
      - "./storage:/photoprism/storage"                  # *Writable* storage folder for cache, database, and sidecar files (DO NOT REMOVE)

Die Zeile - "/volume1/photo:/photoprism/originals" bedeutet, dass meine Originale auf dem NAS im Ordner /voume1/photo und darunter liegen und der Pfad im Container dann auf /photoprsim/originals umgemappt wird.

Also kommen nun alle Bilder, die von PhotoPrism abgearbeite werden sollen, in den Ordner /volum1/photo und darunter. Von dort werden sie übrigens auch per Hyperbackup vom NAS aus auf einen private Cloudrechner geschoben als zweites Backup.

Wenn das alles erledigt ist, wird die Datei hochgeladen und dann im Container Manager auf Weiter und nochmal auf Weiter geklickt. Dann kann mit einem letzten Klick auf Fertig die Erstellung gestartet werden. Dabei werden in einem Fenster die entsprechenden Meldungen angezeigt. Wichtig ist, das am Ende der erfolgreiche Abschluss mit einer Zeile Exit code: 0 gemeldet wird. Der Container für die Datenbank (MariaDB) wird ebenfalls automatisch mit erzeugt.

Anschließend werden die beiden Container (einer für Photoprism selbst, einer für die Datenbank) im Container Manager als laufend (grün) angezeigt.

Die Container laufen

Aufrufen von PhotoPrism

Um etwas von PhotoPrism zu sehen, wird jetzt ein Browser geöffnet und die IP-Adresse des NAS oder der Servername als URL eingegeben, gefolgt vom eingestellten Port für PhotoPrism (Standard 2342):

http://synonas.sol.local:2342/library/browse
(eure IP bzw der Hostname sehen natürlich anders aus)

Je nachdem, ob Ihr in der YAML-Konfiguration das PHOTOPRISM_AUTH_MODE auf "public" oder "password" gestellt habt, müsst Ihr Euch jetzt mit dem admin-Konto anmelden oder nicht.

Dokumentation?

Für die weitere Arbeit mit PhotoPrism verweise ich auf die sehr gute Dokumentation, die Ihr unter der URL https://docs.photoprism.app findet.

Im nächsten Abschnitt geht es dann um die Organisation meiner Foto-Ordner und wie ich die Bilder aus der Apple-Welt dazuhole, damit diese auch in der Gesamtübersicht aller Fotos enthalten sind und mitgesichert werden (zusätzlich zum bestenenden Backup in der iCloud).

Ordnung halten

Die Sammlung auf dem Synology NAS ist nicht nur der Speicherort, von dem aus Bilder betrachtet werden, sondern auch zentrales lokales Backup unserer Fotos. Daher müssen da auch alle Bilder hin. Es gibt Hunderte (Tausende?) von Blogposts und Forenbeiträgen, wie eine Sammlung von Bilddateien organisiert werden sollte. Alle haben Vor- und Nachteile und nach über 20 Jahren habe ich diverse „Erfahrungen gesammelt“, sprich ich bin öfter auf die Nase gefallen und habe dann mühevoll wieder Ordnung geschaffen. Tief unten so um 2003 rum gibt es noch Ordner mit Narben und Krücken, die davon zeugen und die ich bestimmt sauber aufräumen werde, wenn ich als Rentner Zeit habe. 😉

Bilder von den Digitalkameras

Unterhalb des Basisordners für Bilder (bei mir /volume1/photo) gibt es zwei Ordner: rohbilder und entwickelt.

Jeder Ordner enthält Ordner für ein Jahr (also 2010, 2011… usw). Das dient einfach der leichteren Gruppierung und verhindert, dass sich in einem Ordner dann Hunderte von Shootings oder Fotobuchern sammeln.

Da drunter existiert dann immer ein Ordner mit dem Schema YYYY-MM Beschreibung, also beispielsweise 2017-09 Urlaub Abruzzen oder 2006-08 Fotobuch Amelies erstes Jahr.

Im Ordner entwickelt befinden sich alle bearbeiteten, aussortierten und fertigen Bilder, während in rohbilder alles bleibt, wie es aus der Kamera kommt. Alles, was erkennbar unscharf, schlecht oder anders nicht “aufhebenswert” ist, wird schon in der Kamera gelöscht. Diese Systematik für Backup und Sammlung hat sich für mich persönlich seit weit über einem Jahrzehnt bewährt. Weitere Unterscheidungen wie RAW oder bestimmte Kameras stehen sowieso in den Metadaten der Bilder, da brauche ich keine Ordner.

Außerdem habe ich durch die kurze Beschreibung sofort einen Überblick über den Inhalt. So lassen sich auch viele Bilder, die innerhalb einer Woche entstehen, aber unterschiedliche Inhalte haben, problemlos auseinanderhalten.

Einige Bilder aus meinem “Colors of Life” Zyklus

Die iOS Bilder

Hier wird die Sache interessant. Ich wollte erstens eine Möglichkeit haben, durch alle meine Bilder zu scrollen und darin zu suchen (das erste Backup für die iOS-Bilder ist sowieso die iCloud) und ein zweites Backup zu haben auf dem NAS. Letztes hätte ich auch ereichen können, indem ich einfach die Datei Photoslibrary.photoslibrary aus dem Bilder-Ordner meines Mac gesichert hätte. Aber damit wäre die erste Anforderung nicht erfüllbar gewesen.

Wichtig als Backup ist mir vor allem die Sicherung der Originalbilder und dann die der Bearbeitungen in der Photos-App auf dem Mac oder den iOS-Geräten. Was in welchem Album steckt, ist für den Backup-Aspekt erstmal zweitrangig. Diese Datei Photoslibrary.photoslibrary ist in Wirklichkeit ein Ordner. Klickt man mit der rechten Maustaste im Finder darauf, gibt es die Option “Paketinhalt anzeigen” und dann sieht das Ganze so aus wie im folgenden Screenshot.

Die Strutkur der iPhoto-Dateien

In originals liegen die Originalaufnahmen. Diese werden über einen Hashalgorithmus in 16 Ordner (von 0 bis F) aufgeteilt und da liegen die Bilder dann mit einem Namen wie 1A1C9769-D934-4966-9421-E16D776E176B.heic. Intern verwaltet Photos die Daten mit Hilfe einer sqlite-Datenbank, in der Zugehörigkeit zu Alben, Änderungen, und andere verwaltet werden. Für das reine Backup reicht mir aber erstmal der Inhalt dieses Ordners originals.

Alle Bearbeitungen (wenn es denn welche gab) liegen als Bilder im Ordner resources/renders, der ebenfalls wie die Originale 16 Unterordner von 0 bis F enthält. Die Dateien beginnen mit dem Namen, den das Original hat und werden um ein paar Zeichen ergänzt (z.B. 1C65EEC3-C241-483F-A38E-DA75B81BD0C0_1_201_a.heic). Zusätzlich liegt in dem Ordner eine Sidevar-Datei mit den Anpassungswerte als plist-Datei. Der Vorteil ist, dass sich die Dateinamen von Original und Bearbeitung unterscheiden. So können diese beiden Ordnerbäume gefahrlos in einen vereinigt werden für Backup und zum Durchsehen.

Dafür gibt es auf dem NAS einen Ordner volume1/photo/iphoto, unter dem diese Ordner von 0 bis F angelegt wurden. Jetzt müssen da nur noch die Bilder aus Photoslibrary.photoslibrary rein. Dazu benutze ich das Tool rsync. So weren immer nur die geänderten Bilder von meinem Mac auf das NAS geschoben und ich habe mit diesem Ansatz alle Bilder in der Verwaltung von PhotoPrism.

Für die Übertragung der Originale reicht dann ein Script mit der folgenden Zeile:

/opt/homebrew/bin/rsync -av ~/Pictures/Photos\ Library.photoslibrary/originals/ synobackup@synonas.sol.local:/volume1/photo/iPhoto

Bei den Bearbeitungen sieht das analog aus, nur dass ich hier per exclude-Option die plist-Dateien mit der Bearbeitungsinfos nicht sichere (ob das sinnvoll ist oder nicht, da grüble ich noch. Ich habe festgestellt, dass ich nach der Bearbeitung eigentlich nicht mehr ändere).

/opt/homebrew/bin/rsync -av --exclude='*.plist' ~/Pictures/Photos\ Library.photoslibrary/resources/renders/ synobackup@synonas.sol.local:/volume1/photo/iPhoto

Das Ergebnis

Wenn der Initialbestand (hier über 55.000 Bilder 😆 und etwa 1000 Videos) einmal auf dem NAS liegt, werden nur noch die geänderten Dateien übertragen und das geht rasant. Auch das erneute Scannen und Indexieren durch PhotoPrism dauert im Schnitt weniger als 30 Sekunden bei einem Durchlauf mit etwa 100 neuen Bildern.

  • Ich kann endlich den gesamten Bildbestand auch nach Metadaten durchsuchen
  • Per Browser gibt es eine “endanwenderfreundliche” Möglichkeit zum Bilder ansehen
  • Ein Album kann Bilder sowohl von iOS als auch von anderen Digitalkameras und aus dem Web umfassen 👍
  • Die Metadaten werden als YAML-Dateien in Sidecar-Dateien von PhotoPrism ausgelesen und erlauben spezielle Auswertungen
  • Per Exiftool kann ich die Metdaten auch wieder in Bilddateien zurückschreiben
  • Die Bilder sind zentral in einer Backup-Struktur, die dann nochmal in die private Cloud läuft
  • Per USB-Copy auf der Synology past das Zeug schnell auf den externen Platten für die rotierende Sicherung

Insgesamt gesehen bin ich mit dieser Kombi aus Synology und DSM, rsync, iPhoto und PhotoPrism sehr zufrieden.

Share Kommentieren
X

Ich habe einen Kommentar zum Artikel

Sie können die Kommentarfunktion ohne die Speicherung personenbezogener Daten nutzen. Schreiben Sie Ihren Kommentar und klicken Sie auf "Abschicken", der Versand erfolgt per Mail von meinem Auftritt aus an mich zur Prüfung. Dieser Versand und die Übertragung Ihres Kommentars ist zur Erfüllung der von Ihnen mit dem Klick auf "Abschicken" ersichtlichen Absicht technisch notwendig und bedarf keiner weiteren Einwilligung.

Wichtiger Hinweis: Sie haben keinen Anspruch auf die Veröffentlichung Ihres Kommentars. Jeder hier eingegebene Kommentar wird zuerst geprüft. Ich behalte mir die Entscheidung vor, welche Kommentare ich als Ergänzung an den Artikel anfüge.