Nextcloud Galerie richtig betreiben Photos Vorschauen und Speicher

Zwischen Dateiablage und Erinnerungsmaschine

Es gibt diesen Moment in fast jeder gewachsenen Nextcloud-Installation, in dem der Blick auf die Verzeichnisgrößen zur Ernüchterung wird. Zwei Terabyte Fotos, sauber nach Jahren sortiert, dazu die üblichen Handy-Backups in mehrfacher Ausführung – und daneben ein Ordner namens appdata_…/preview, der es locker auf die dreifache Menge bringt. Wer an dieser Stelle anfängt, die Galerie-Funktion seiner Nextcloud als hübsches Beiwerk abzutun, hat das System nicht verstanden. Die Fotoverwaltung ist in der Praxis der Teil, der am meisten Rechenzeit, Speicher und Nerven kostet. Und sie ist gleichzeitig der Teil, der am sichtbarsten entscheidet, ob eine selbst betriebene Cloud im Alltag angenommen wird.

Dabei hat sich in den vergangenen Jahren viel bewegt. Aus der alten Gallery-App ist ein Ablösungsprozess geworden, der bis heute nicht überall sauber vollzogen ist. Die Photos-App hat übernommen, neue Apps wie Memories setzen daneben ganz eigene Akzente, und die Frage nach der richtigen Vorschaubild-Strategie ist inzwischen eher eine Frage der Betriebsplanung als eine der Softwareauswahl. Ein Überblick über den Zustand, die Technik dahinter und die Fallstricke, über die man in Foren und Tickets immer wieder stolpert.

Eine kurze Versionsgeschichte: Gallery, Photos und der Bruch dazwischen

Lange Zeit war die Sache einfach. Die Gallery-App gehörte zum Standardumfang von Nextcloud und zeigte Ordner mit Vorschaubildern an. Technisch war sie ein PHP-Frontend mit ein paar JavaScript-Brocken, das auf die Dateistruktur der Files-App aufsetzte. Wer einen Ordner mit Bildern hatte, sah in der Gallery eine Rasteransicht. Das war ausreichend, aber nicht schön, und vor allem nicht schnell.

Mit dem Aufkommen von Nextcloud 18 etablierte sich daneben die Photos-App, zunächst als schlanke Timeline, später mit Alben, Orten und Tags. Sie war von Anfang an als Vue-Anwendung konzipiert und damit deutlich flüssiger in der Bedienung. Der entscheidende Punkt: Photos zeigt keine Ordner, sondern Bilder. Das ist eine grundlegend andere Sicht auf dieselben Daten. Für technisch geprägte Nutzer war das anfangs gewöhnungsbedürftig, denn die vertraute Ordnerhierarchie verschwand hinter einer chronologischen Ansicht. Genau das aber war die Absicht.

Mit Nextcloud 28 wurde die Gallery-App schließlich offiziell als abgekündigt markiert und in Folgeversionen nicht mehr mitgeliefert. In bestehenden Installationen blieb sie teilweise aktiv, wurde aber nicht weiterentwickelt. Wer bis heute eine alte Gallery-Instanz betreibt, sollte sich nicht wundern, wenn bei Updates Kompatibilitätsprobleme auftauchen. Ein interessanter Aspekt dabei: Anders als bei vielen anderen Abkündigungen im Nextcloud-Ökosystem war der Wechsel hier nicht wirklich optional. Die Photos-App ist der Nachfolger, und sie ist inzwischen weit genug, dass die meisten Gründe für ein Festhalten an der Gallery wegfallen.

Nicht zuletzt hat auch die Funktionstiefe der Photos-App zugelegt. Alben lassen sich teilen, Orte werden auf einer Karte dargestellt, Tags aus den Systemtags der Nextcloud werden übernommen, und über die Recognize-App kommen Personenansichten hinzu. Damit ist die App in einen Bereich vorgestoßen, den man früher eher bei Speziallösungen wie Photoprism oder Immich verortet hätte.

Was eine Galerie technisch eigentlich ist

Der Kern ist unspektakulär. Eine Galerie in Nextcloud ist kein eigener Datenspeicher. Sie ist eine Sicht auf Dateien, die in der Files-Struktur liege. Die Photos-App etwa legt keine Kopien an, sondern liest Metadaten aus den vorhandenen Dateien und stellt sie über eigene Routen bereit. Alben sind in der Regel Datensätze in der Datenbank, die auf Datei-IDs verweisen. Wer ein Album löscht, löscht keine Bilder. Wer ein Bild über die Files-App verschiebt, kann es in einem alten Album trotzdem noch finden – je nach Version und Konfiguration mitunter überraschend.

Die eigentliche Arbeit läuft im Hintergrund und sie hat einen Namen: Preview-Erzeugung. Ein 48-Megapixel-Foto aus einem modernen Smartphone bringt schnell 8 bis 12 Megabyte auf die Waage. In einer Rasteransicht mit 200 Kacheln wären das mehrere Gigabyte Bandbreite pro Seitenaufruf, plus die Dekodierung im Browser. Das ist nicht praktikabel. Also erzeugt Nextcloud beim ersten Zugriff verkleinerte Varianten und legt sie im App-Datenverzeichnis ab.

Die Struktur ist dabei durchdacht, aber auf den ersten Blick kryptisch. Unter appdata_<Instanz-ID>/preview/ liegen Unterordner, die sich aus der fileid der jeweiligen Datei ergeben – üblicherweise die ersten beiden Ziffern, dann die darauffolgenden zwei, darunter die vollständige ID, und darin schließlich die einzelnen Größenstufen als eigene Dateien. Wer das einmal verstanden hat, kann anhand eines Dateinamens sehr schnell nachvollziehen, ob eine Datei überhaupt Vorschauen besitzt.

Ein Detail, das im Betrieb oft unterschätzt wird: Vorschauen werden pro Datei und pro Größe separat erzeugt. Ein und dasselbe Bild existiert also als 64er-Icon, als 256er-Kachel, als 1024er-Vorschau und möglicherweise noch als quadratisch zugeschnittene Variante. Das multipliziert sich. Bei einer mittelgroßen Foto-Sammlung mit 200.000 Bildern sind schnell ein dutzend Dateien pro Original im Vorschau-Verzeichnis.

Vorschaubilder: der eigentliche Kern des Problems

Die Frage, ob eine Nextcloud-Galerie sich flüssig anfühlt, entscheidet sich nicht im Frontend, sondern in der Bildverarbeitung. Three Dinge sind dabei entscheidend: wie schnell ein Bild dekodiert wird, wie viele Vorschauen parallel erzeugt werden dürfen und wie gut die Ergebnisse zwischengespeichert werden.

Standardmäßig arbeitet Nextcloud mit ImageMagick über die PHP-Erweiterung Imagick oder mit der GD-Bibliothek. Beides ist funktional, aber nicht besonders flott. GD ist schlicht zu langsam für große Bilder, Imagick ist brauchbar, hat aber einen entscheidenden Nachteil: Es läuft innerhalb des PHP-Prozesses. Jede Vorschaugenerierung blockiert also einen FPM-Worker, und bei großen JPEGs frisst die Dekodierung schnell mehrere hundert Megabyte Speicher. Wer memory_limit auf 512 MB stehen hat und ein 100-Megapixel-Panorama verarbeiten lässt, bekommt im Log einen netten Fatal Error.

Hier kommt Imaginary ins Spiel, ein in Go geschriebener Bildserver, der auf libvips aufsetzt. Imaginary läuft als eigenständiger Dienst, Nextcloud schickt die Datei per HTTP hinüber und bekommt das fertige Vorschaubild zurück. Das entkoppelt die Bildverarbeitung von PHP, erlaubt eigene Parallelitätsgrenzen und ist bei großen Bildmengen spürbar schneller. Die Konfiguration ist überschaubar: ein Eintrag preview_imaginary_url und ein gemeinsamer Schlüssel über preview_imaginary_key. Voraussetzung ist, dass der Dienst erreichbar ist und ausreichend CPU sowie Arbeitsspeicher bekommt. Auf einem kleinen VPS mit zwei Kernen ist das kein Wundermittel, aber es verhindert zumindest, dass die Web-Oberfläche während der Vorschau-Erzeugung komplett in die Knie geht.

Wer auf maximale Unabhängigkeit setzt und selbst bauen mag, kann Imaginary als Container betreiben. Wer das nicht möchte, bleibt bei Imagick – dann sollte man aber die Konfiguration ernsthaft nachschärfen. Ein interessanter Nebenaspekt: Die Wahl des Vorschau-Formats. Nextcloud kann Vorschauen im JPEG- oder WebP-Format ablegen. WebP spart bei gleicher Qualität deutlich Platz, ist aber nicht in allen Clients und Browsern gleich problemlos. Bei heterogenen Umgebungen ist JPEG nach wie vor die sichere Bank.

Die richtigen Stellschrauben in der config.php

Die Datei config/config.php ist für die Galerie das wichtigste Steuerinstrument überhaupt. Ein paar Einträge, die sich lohnen, in Ruhe durchzugehen.

enable_previews schaltet die Vorschauerzeugung komplett ab. Das klingt radikal, kann aber in Umgebungen sinnvoll sein, in denen ausschließlich synchronisiert wird und niemand im Browser Bilder betrachtet. Achtung: Wer das abschaltet, darf sich danach nicht über ein extrem langsames Webinterface beschweren – die Oberfläche lebt von Vorschauen.

preview_max_scale_factor steuert, um wie viel größer eine Vorschau höchstens sein darf als das Original. Der Standardwert 10 verhindert, dass aus einem 8-Kilobyte-Icon ein riesiges, unscharf hochskaliertes Bild produziert wird. Wer null setzt, hebt die Grenze auf, sollte sich aber im Klaren darüber sein, was das bedeutet. Die älteren Einträge preview_max_x und preview_max_y gelten als überholt, wirken aber in manchen Installationen noch. Hier lohnt ein Blick in die eigene Konfiguration, denn geerbte Einstellungen aus alten Zeiten sind eine häufige Fehlerquelle.

preview_max_filesize_image definiert, ab welcher Dateigröße keine Vorschau mehr erzeugt wird. Standard sind 50 Megabyte. Bei RAW-Dateien oder TIFF-Scans aus der Fotografie ist das schnell erreicht. Wer solche Bestände hat, muss den Wert anheben – oder bewusst akzeptieren, dass diese Dateien in der Galerie nur als generisches Icon auftauchen.

Ebenfalls wichtig: preview_max_memory. Der Standardwert liegt bei 256 Megabyte und begrenzt den Speicher, den die Vorschauerzeugung für ein einzelnes Bild verbrauchen darf. Wer große Panoramen oder hochauflösende Scans verarbeitet, kann hier ein Array hinterlegen, das die Grenze abhängig von der Zielgröße staffelt. Ein durchaus sinnvoller Ansatz, weil ein 64er-Thumbnail natürlich nicht dieselben Ressourcen braucht wie eine Vollbildvorschau.

Die Parallelisierung steuern preview_concurrency_new und preview_concurrency_all. Die Standardwerte orientieren sich an der Zahl der CPU-Kerne. Auf einem System mit vielen Kernen, aber knappem Arbeitsspeicher, ist es ratsam, hier nach unten zu korrigieren. Bildverarbeitung ist speicherhungrig und erzeugt gern Lastspitzen, die andere Dienste ausbremsen.

Schließlich sei noch enabledPreviewProviders erwähnt. Diese Liste entscheidet, welche Dateitypen überhaupt Vorschauen erhalten. Standardmäßig sind die gängigen Bildformate aktiv, dazu PDF und einige Office-Formate. Wer Videos in der Galerie sehen will, braucht einen FFmpeg-Provider. Wer HEIC-Dateien von Apple-Geräten erwartet, braucht einen entsprechenden Provider und eine ImageMagick-Installation mit libheif-Unterstützung. Der Provider für HEIC ist nicht überall zuverlässig; wer viele iOS-Geräte im Haus hat, sollte die clientseitige Umwandlung in JPEG beim Upload aktivieren. Das ist weniger elegant, aber deutlich stressfreier.

Imaginary, ImageMagick und die Frage nach der Rechenlast

Es lohnt sich, die Lastspitzen der Vorschauerzeugung einmal bewusst zu beobachten. Der typische Verlauf sieht so aus: Montagmorgen kommen die Handy-Uploads der vergangenen Woche an, weil die Clients über das Wochenende im Mobilfunknetz unterwegs waren. Gleichzeitig öffnen mehrere Nutzer die Galerie und scrollen durch die Timeline. In diesem Moment werden Hunderte Vorschauen erzeugt, viele davon zum ersten Mal. Die CPU geht auf 100 Prozent, PHP-FPM hat keine freien Worker mehr, und die gesamte Instanz fühlt sich an, als wäre sie im Wartungsmodus.

Genau das ist der Grund, warum Vorabgenerierung in vielen Umgebungen sinnvoll ist. Wenn die Vorschauen bereits existieren, muss der Server beim Zugriff nur noch ausliefern. Die Galerie reagiert dann sofort.

Bei der Verwendung von Imaginary gibt es einen weiteren Aspekt: Der Dienst benötigt eigene Ressourcengrenzen. Wird er ohne Limits betrieben, kann er bei einem Ansturm das System in den Swap treiben. Also: Container-Limits oder systemd-Ressourcenkontrolle, eigene CPU-Zuweisung, und eine sinnvolle Obergrenze für die Anzahl gleichzeitiger Verarbeitungen. Bei ImageMagick übernimmt PHP diese Rolle – weniger flexibel, aber auch weniger überraschend.

Ein weiterer Punkt betrifft die I/O-Last. Wenn Original und Vorschau auf derselben langsamen Festplatte oder gar auf einem entfernten Netzlaufwerk liegen, ist die Bildverarbeitung nicht CPU-, sondern I/O-limitiert. Bei NAS-gestützten Installationen ist das ein häufiges Muster. Hier hilft nur schneller Speicher für appdata, oder eine Aufteilung der Daten – Vorschauen auf NVMe, Originale im großen Array.

Vorschauen massenhaft erzeugen: occ und der Preview Generator

Nextcloud erzeugt Vorschauen standardmäßig bei Bedarf. Das ist ressourcenschonend, führt aber zu den gerade beschriebenen Lastspitzen. Wer das kontrollieren möchte, nutzt die App Preview Generator. Sie bringt eigene occ-Befehle mit, mit denen sich Vorschauen für ganze Benutzer oder einzelne Pfade im Voraus erzeugen lassen.

In der Praxis sieht das etwa so aus: Zuerst wird per occ files:scan --all sichergestellt, dass der Datei-Cache aktuell ist. Danach läuft occ preview:generate-all über alle Benutzer, was je nach Bestand Stunden oder Tage dauern kann. Für einzelne Bereiche lässt sich occ preview:preview mit einem Pfad aufrufen. Die Ausgabe ist bei größeren Läufen durchaus gesprächig; wer sie mit in eine Datei umleitet, hat später eine gute Grundlage für die Fehlersuche.

Zusätzlich erlaubt Preview Generator, die zu erzeugenden Größen festzulegen. Standardmäßig produziert Nextcloud alle Größen, die die Clients anfragen, was ineffizient ist. Wer weiß, dass iPhone und Android-Clients quadratische Kacheln in zwei bis drei Größen anfordern, kann die Liste entsprechend kürzen. Das spart nicht nur Speicher, sondern auch Rechenzeit. Bei sehr großen Installationen ist das einer der wirkungsvollsten Hebel überhaupt.

Ein Hinweis aus der Praxis: Läufe synchron am Terminal bringen wenig, wenn parallel der normale Betrieb weiterläuft. Sinnvoller ist es, den Vorgang in einem Cron-Skript außerhalb der Kernzeiten zu starten und die Anzahl paralleler Prozesse zu begrenzen. Wer zwei Instanzen gleichzeitig generieren lässt, konkurriert mit sich selbst und verschlechtert das Ergebnis.

Speicherplatz: warum 2 TB Bilder zu 4 TB Vorschauen werden können

Die Rechnung überrascht viele. Ein durchschnittliches Smartphone-Foto liegt bei 4 Megabyte. Für dieses eine Foto entstehen schnell sechs bis zehn Vorschaudateien, die zusammen 300 bis 800 Kilobyte belegen. Bei großen Sammlungen ist der Vorschau-Ordner damit gut und gerne 15 bis 20 Prozent der Originaldaten – manchmal mehr. Bei konfigurierten Maximalgrößen und hochauflösenden Vorschauen kann der Anteil deutlich steigen.

Wer seine Instanz plant, sollte diesen Faktor von vornherein einrechnen. Besonders schmerzhaft wird es, wenn die Vorschauen auf demselben Volume wie die Datenbank liegen. Läuft die Platte voll, ist die Datenbank als erstes beschädigt, und das ist ein deutlich unangenehmeres Problem als ein fehlendes Thumbnail.

Zum Aufräumen: Vorschauen werden beim Löschen von Dateien nicht immer sofort entfernt. Wer sein Vorschau-Verzeichnis bereinigen möchte, sollte die Instanz in den Wartungsmodus versetzen und den Inhalt von appdata_<Instanz-ID>/preview löschen. Nextcloud erzeugt die Vorschauen anschließend nach Bedarf neu. Das ist kein Vorgang für zwischendurch, sondern eine geplante Aktion mit entsprechender Zeit- und Ressourcenplanung.

Nicht zuletzt lohnt sich ein Blick auf die Frage, welche Vorschau-Größen überhaupt sinnvoll sind. Wer den Speicherbedarf halbieren möchte, muss nicht die Qualität halbieren – häufig reicht es, eine oder zwei selten genutzte Größen aus der Standardliste zu entfernen.

Die Photos-App im Alltag: Alben, Orte, Menschen

Die Photos-App dürfte in den meisten Installationen der wichtigste Einstiegspunkt sein. Ihre Stärke liegt in der Chronologie. Statt Ordnerstrukturen zeigt sie einen Zeitstrahl, dessen Gruppierung auf den Aufnahmedaten aus den EXIF-Daten basiert. Fehlen diese, greift Nextcloud auf das Änderungsdatum der Datei zurück – was bei importierten Beständen zu falsch sortierten Bildern führt. Wer eine Kuratierung betreibt, sollte deshalb EXIF-Daten pflegen, bevor die Dateien in die Cloud wandern.

Alben sind ein zentrales Element. In der Photos-App lassen sich Bilder zu alben zusammenstellen, wahlweise manuell oder auf Basis bestehender Ordner. Seit einigen Versionen sind auch gemeinsame Alben möglich, bei denen mehrere Personen Bilder beisteuern können. Das ist für Familien oder Projektteams ein echter Zugewinn und ersetzt in vielen Fällen den umständlichen Weg über Dateifreigaben.

Für die Ortsansicht braucht es zwei Dinge: GPS-Koordinaten in den EXIF-Daten und einen konfigurierten Geocoding-Dienst, der aus Koordinaten lesbare Ortsnamen macht. Ohne den bleibt die Karte leer beziehungsweise zeigt nur eine Positionsmarkierung ohne Kontext. Wer den Dienst extern betreibt, sollte sich über die datenschutzrechtlichen Implikationen im Klaren sein – Koordinaten wandern dann an Dritte. In sensiblen Umgebungen ist ein lokal betriebener Dienst die bessere Wahl.

Die Personenansicht schließlich hängt an der Recognize-App. Sie analysiert Gesichter auf den Bildern, gruppiert sie und ordnet sie benannten Personen zu. Das läuft vollständig auf dem eigenen Server, was ein erheblicher Vorteil gegenüber cloudbasierten Diensten ist. Allerdings: Recognize braucht Python, TensorFlow und je nach Bilderbestand mehrere Gigabyte Arbeitsspeicher. Auf einem System mit 8 GB RAM wird das eng. Wer die Funktion nutzen will, sollte die Ressourcenplanung ernst nehmen und die Ausführung als Hintergrundjob mit begrenzter Parallelität konfigurieren.

Das Ökosystem: Memories, Recognize, Media DC

Die Photos-App ist nicht mehr die einzige Option. Vor allem Memories hat sich in den letzten Jahren eine große Anhängerschaft erarbeitet. Die App baut einen eigenen Index aus den EXIF-Daten der Dateien auf und legt ihn in eigenen Datenbanktabellen ab. Das Ergebnis ist eine Timeline, die deutlich schneller reagiert als die Photos-App, besonders bei sehr großen Beständen. Hinzu kommen Kartenansicht, Alben, Tags, Personenerkennung und Videotranskodierung per FFmpeg.

Ein wichtiger Unterschied: Memories arbeitet mit eigenen Routen und einem eigenen Caching. Wer die App einmal benutzt hat, versteht schnell, warum sie so beliebt ist. Die Wischgesten fühlen sich flüssig an, das Zoomen ist präzise, und die Ortsansicht ist die beste, die man derzeit in einer Nextcloud haben kann. Der Preis dafür ist eine gewisse zusätzliche Komplexität im Betrieb. Die Indexierung läuft über einen occ-Befehl und sollte regelmäßig ausgeführt werden, sonst zeigt die Timeline nicht alle neuen Bilder.

Recognize ist dagegen eher als Zulieferer für Metadaten zu verstehen. Es erkennt nicht nur Gesichter, sondern auch Objekte, Landmarken, Musik-Genres und Sprache. Die Ergebnisse landen in der Datenbank und werden von Photos und Memories genutzt. Für Installationen, die eine automatische Verschlagwortung wünschen, ist das eine sinnvolle Ergänzung – vorausgesetzt, die Hardware spielt mit.

Media DC schließlich ist ein vergleichsweise junger Vertreter. Die App baut einen eigenen Katalog aus den Nextcloud-Dateien auf und richtet sich an Nutzer, die eine klassischere Verwaltung mit Bewertungen, Farblabels und Serien-Erkennung suchen. Der Ansatz ist interessant, die Verbreitung noch überschaubar. Wer experimentierfreudig ist, findet hier ein Konzept, das sich stärker an klassischer Medienverwaltung orientiert als an einer Timeline.

Wer eine dieser Alternativen in Betracht zieht, sollte sich fragen, ob die Photos-App die Anforderungen wirklich verfehlt oder ob die Probleme nicht eher in der Vorschaukonfiguration liegen. In sehr vielen Fällen ist die wahrgenommene Langsamkeit ein Preview-Problem, kein Frontend-Problem.

Videos, HEIC und andere Zumutungen

Bilder sind einfach. Videos sind es nicht. Für eine Vorschau eines Videos muss ein Frame dekodiert werden, und das erfordert FFmpeg auf dem Server. Nextcloud bringt zwar einen Provider mit, der auf das externe Binary zugreift, aber der muss installiert und auffindbar sein. Fehlt FFmpeg, zeigt die Galerie für Videos ein generisches Icon – was in der Timeline ziemlich unschön aussieht.

Ein weiterer Punkt: Die Wiedergabe großer Videodateien im Browser ist ein Geduldsspiel, weil der Client die Datei erst herunterladen muss. Memories löst das über HLS-Transkodierung, wobei der Server die Datei in Segmente zerlegt und in passender Qualität ausliefert. Das funktioniert beeindruckend gut, kostet aber CPU und Speicher. Wer Videos in größerem Umfang hat, sollte diese Funktion bewusst einschalten und nicht einfach mitlaufen lassen.

HEIC ist der zweite Klassiker. Apple-Geräte fotografieren standardmäßig in diesem Format, und die serverseitige Verarbeitung ist von der ImageMagick-Kompilierung abhängig. Fehlt libheif, gibt es keine Vorschau. Die pragmatische Lösung ist die clientseitige Umwandlung beim Upload in der iOS-App. Damit landen JPEGs auf dem Server und die Probleme verschwinden. Der Nachteil ist ein geringfügig höherer Speicherbedarf – was bei den heutigen Preisen für Festplatten zu verschmerzen sein dürfte.

Auch RAW-Dateien verdienen Erwähnung. Standardmäßig erzeugt Nextcloud dafür keine Vorschauen. Wer mit RAW arbeitet, braucht andere Werkzeuge; die Galerie ist dafür nicht der richtige Ort. Das ist keine Schwäche der Galerie, sondern eine realistische Abgrenzung.

Teilen, Rechte, Datenschutz

Eine Galerie ist immer auch ein Sharing-Werkzeug. Alben lassen sich in der Photos-App mit einzelnen Nutzern, Gruppen oder per öffentlichem Link teilen. Die Rechteverwaltung folgt dabei den Nextcloud-Mechanismen. Wer eine Freigabe auf einen Ordner erteilt, sieht die darin enthaltenen Bilder in der Galerie – es gibt keine galeriespezifische Rechteebene darüber. Das ist konsistent, sollte aber bei der Planung von Freigabekonzepten berücksichtigt werden.

Ein Punkt, der in der Praxis gern übersehen wird: Vorschauen werden zentral gespeichert und über die Datei-ID ausgeliefert. Der Zugriffsschutz findet bei der Anfrage statt, nicht bei der Speicherung. Wer sich also über die Existenz von Vorschaudateien im appdata-Ordner wundert, die zu gelöschten oder nicht mehr freigegebenen Dateien gehören: Das ist normal, aber es erklärt, warum ein Blick auf die Verzeichnisstruktur allein keine Rückschlüsse auf Berechtigungen zulässt.

Für den Datenschutz ist die Dezentralität der eigentliche Trumpf. Gesichtserkennung, Objekterkennung und Geocoding laufen in einer gut konfigurierten Nextcloud lokal. Das ist ein Argument, das in Zeiten zunehmender Regulierung erheblich an Gewicht gewonnen hat. Allerdings nur, solange man konsequent bleibt: Ein Geocoding-Dienst, der jede Koordinate an einen externen Anbieter schickt, untergräbt genau diesen Vorteil.

Betrieb, Monitoring und Fehlersuche

Wenn die Galerie nicht funktioniert, liegt es selten an der Galerie. Die häufigsten Ursachen sind erschöpfter Speicher in PHP, fehlende Binaries, Timeouts oder eine überlastete Datenbank. Das Vorgehen bei der Fehlersuche ist deshalb immer dasselbe: Log ansehen, Konfiguration prüfen, Ressourcen messen.

Ein paar typische Symptome und ihre Ursachen. Graue Kacheln statt Vorschaubilder deuten meist auf eine fehlgeschlagene Generierung hin; hier hilft ein Blick in das Nextcloud-Log auf Imagick- oder FFmpeg-Fehler. Ganz fehlende Vorschaubilder in der Timeline können darauf hindeuten, dass preview_max_filesize_image zu niedrig steht oder der Provider für das Format nicht aktiviert ist. Extrem lange Ladezeiten bei der ersten Anzeige eines Ordners sind fast immer ein Zeichen für zu geringe Parallelität oder zu wenig CPU.

Für das Monitoring lohnt sich eine einfache Metrik: die Anzahl der noch nicht generierten Vorschauen. Sie lässt sich indirekt über die Zugriffszeiten und die Log-Einträge der Vorschau-Routen abschätzen. Wer den Prometheus-Exporter für Nextcloud betreibt, kann zusätzlich HTTP-Antwortzeiten und PHP-FPM-Status beobachten. Ein schneller Blick auf die Warteschlangen der Hintergrundjobs rundet das Bild ab.

Nicht zuletzt: Nach einem Update lohnt ein Testlauf mit einer Handvoll großer Bilder. Denn Provider-Verhalten und Bibliotheksversionen ändern sich, und was vor drei Monaten noch funktioniert hat, kann nach einem Wechsel der ImageMagick-Version plötzlich anders aussehen.

Skalierung: Redis, Objektspeicher, Edge-Caching

Für Installationen mit vielen Nutzern reicht die Standardkonfiguration nicht aus. Redis als Memcache für Dateisperren und Metadaten gehört inzwischen zum Pflichtprogramm, ebenso APCu für den lokalen Cache. Ohne diese beiden wird die Datenbank bei jedem Galerieaufruf mehrfach belastet, und genau das summiert sich bei einer Rasteransicht mit hundert Kacheln schnell auf hunderte Abfragen.

Für Objektspeicher gilt: Nextcloud kann Vorschauen in einem S3-kompatiblen Speicher ablegen. Das entlastet das lokale Dateisystem und ist besonders dann sinnvoll, wenn mehrere Webserver hinter einem Loadbalancer laufen. Zu beachten ist, dass dann die Latenz für jede Vorschauanfrage eine Rolle spielt. Ein S3-Bucket in einer anderen Region ist keine gute Idee.

Edge-Caching schließlich ist der eleganteste Hebel. Vorschauen sind unveränderlich, sobald sie erzeugt wurden. Ein vorgeschalteter Cache kann sie also mit langer Gültigkeit ausliefern und den Nextcloud-Server komplett umgehen. Voraussetzung ist eine sorgfältige Konfiguration, damit keine Vorschauen an nicht berechtigte Nutzer ausgeliefert werden. Das erfordert entweder einen Cache-Schlüssel, der die Berechtigung berücksichtigt, oder den Verzicht auf öffentliche Caches. Die Details hängen von der Umgebung ab, und man sollte hier nicht raten.

Grenzen und Alternativen

Es wäre unseriös, die Nextcloud-Galerie als vollwertigen Ersatz für eine spezialisierte Fotoverwaltung zu verkaufen. Immich etwa ist in Bezug auf Geschwindigkeit, mobile Apps und Suchfunktionen eine eigene Liga – allerdings mit einem entscheidenden Preis: Es ist ein separates System mit eigenem Datenbestand. Wer Immich betreibt, verwaltet seine Fotos dort und nicht in der Nextcloud. Die Integration beschränkt sich in der Regel darauf, dass Immich die Nextcloud-Daten als externe Quelle liest.

Für viele Selbsthoster ist das trotzdem eine interessante Aufteilung: Nextcloud als Dateiablage und Synchronisationsschicht, Immich als Spezialist für die Bildverwaltung. Wer dagegen eine einzige Oberfläche für alles möchte und die Nachteile bei der Geschwindigkeit akzeptiert, bleibt bei Nextcloud mit Photos oder Memories. Beide Ansätze haben Berechtigung, und die Entscheidung hängt stark davon ab, wie wichtig die Bildverwaltung im eigenen Alltag wirklich ist.

Ein interessanter Aspekt am Rande: Die Diskussion um Alternativen hat über die Jahre auch auf die Nextcloud-Entwicklung zurückgewirkt. Die Photos-App war vor fünf Jahren deutlich schmaler aufgestellt. Der Wettbewerb mit Memories und anderen hat hier spürbar zu Bewegung geführt.

Fazit

Die Nextcloud-Galerie ist heute mehr als ein Beiwerk. Sie ist technisch anspruchsvoller geworden, und sie verlangt von Betreibern ein gewisses Maß an Planung. Wer die Vorschaukonfiguration beherrscht, den richtigen Bildprozessor wählt und die Speichergrößen im Blick behält, bekommt eine Fotoverwaltung, die im Alltag zuverlässig funktioniert und die Daten dort lässt, wo sie hingehören. Wer diese Themen ignoriert, wird früher oder später mit einer trägen Oberfläche, vollem Speicher und unzufriedenen Nutzern konfrontiert.

Der Übergang von der Gallery- zur Photos-App ist vollzogen, die Auswahl an Erweiterungen war nie größer, und die spannendsten Ideen in diesem Bereich entstehen derzeit in der eigenen Community. Das ist eine gute Ausgangslage – vorausgesetzt, man behandelt die Galerie nicht als Nebensache, sondern als das, was sie ist: das Schaufenster der eigenen Cloud.