Ein Zwischenbericht aus der Entwicklung – Oktober 2026

Vor einiger Zeit habe ich damit begonnen, eine eigene Anwendung für ownCloud zu entwickeln. Die Idee dahinter war eigentlich recht einfach: Ich wollte eine Möglichkeit schaffen, mit der Kunden nach einem Fotoshooting ihre Bilder bequem online auswählen und gleichzeitig ihre Bearbeitungswünsche mitteilen können. Daraus ist inzwischen ein recht umfangreiches Softwareprojekt geworden, das den Namen OC-PhotoSelector trägt. In den vergangenen Monaten hat sich einiges getan. Die Anwendung wurde mehrfach erweitert, Funktionen wurden überarbeitet und auch die technische Architektur hat sich weiterentwickelt. Aktuell beschäftigen ich mich allerdings weniger mit neuen Funktionen, sondern vor allem mit Themen, die bei der Softwareentwicklung gerne unterschätzt werden: Updates, Sicherheit und die langfristige Wartbarkeit einer Anwendung.

Warum eigentlich noch eine eigene Lösung?

Es gibt bereits zahlreiche Plattformen, über die Fotografen ihren Kunden Bilder zur Auswahl bereitstellen, Feedback einholen und fertige Aufnahmen austauschen können. Viele dieser Angebote funktionieren gut und sind technisch ausgereift. Allerdings haben gerade die kommerziellen Cloud-Lösungen häufig entscheidende Nachteile: Die Bilder liegen auf fremden Servern, für die Nutzung fallen regelmäßig Gebühren an und die Anzahl der Benutzer oder der verfügbare Speicherplatz sind häufig vom gewählten Tarif abhängig. Der Fotograf hat damit nur begrenzten Einfluss darauf, wo und wie seine Daten gespeichert werden, und macht sich gleichzeitig von einem externen Anbieter und dessen Preismodell abhängig.

Ein weiterer wichtiger Punkt ist die Skalierbarkeit. Mit einer eigenen ownCloud-Installation lassen sich grundsätzlich beliebig viele Kunden, Projekte und Bilder verwalten, ohne dass für jeden zusätzlichen Benutzer oder ein größeres Bildkontingent automatisch ein höherer Softwaretarif notwendig wird. Die tatsächlichen Grenzen ergeben sich aus der verfügbaren Infrastruktur, insbesondere dem Speicherplatz, der Serverleistung und der Datenbank. Benötige ich mehr Kapazität, kann ich meine eigene Umgebung entsprechend erweitern.

Genau hier setzt OC-PhotoSelector an: volle Kontrolle über die eigenen Daten, keine zusätzlichen Abo-Gebühren für die Fotoauswahl, keine Abhängigkeit von einem externen Cloud-Dienst und eine flexibel skalierbare Infrastruktur. Die Anwendung läuft direkt in der eigenen ownCloud-Installation. Wo die Bilder gespeichert werden, wer darauf zugreifen darf, wie lange sie verfügbar bleiben und wie viel Speicherkapazität bereitgestellt wird, entscheidet der Betreiber selbst.

Von der Bildauswahl zum kompletten Workflow

Wer fotografiert und seine Bilder anschließend Kunden zur Auswahl bereitstellt, kennt das Problem vermutlich. Nach einem Shooting entstehen schnell einige Hundert Bilder, aus denen der Kunde diejenigen auswählen soll, die er später haben möchte. Vielleicht sollen einzelne Aufnahmen noch bearbeitet, ein bestimmter Ausschnitt gewählt oder störende Elemente entfernt werden. Natürlich könnte man die Bilder einfach in einen Cloud-Ordner legen und den Kunden bitten, die gewünschten Dateinamen per E-Mail zurückzuschicken. Das funktioniert grundsätzlich, ist aber weder besonders komfortabel noch wirklich übersichtlich. Meine Idee war deshalb, diesen Ablauf direkt in ownCloud abzubilden.

Der Fotograf legt die Bilder in einem Projektordner ab und stellt sie dem Kunden zur Verfügung. Dieser meldet sich an ownCloud an und startet OC-PhotoSelector. Dort kann er die Bilder durchsehen, seine Auswahl treffen und zu einzelnen Aufnahmen Kommentare oder Bearbeitungswünsche hinterlegen. Die Informationen werden in einer Projektdatei gespeichert, die der Fotograf anschließend wieder einlesen kann. Daraus lässt sich ein Produktionsauftrag erstellen, der die gewünschten Bearbeitungen übersichtlich zusammenfasst. Nach der Bearbeitung werden die fertigen Bilder dem Kunden bereitgestellt. Ein Punkt war mir dabei von Anfang an besonders wichtig: Der Kunde soll die Bilder zunächst auswählen können, ohne automatisch sämtliche Originaldateien herunterladen zu können. Gerade dieser Punkt ist technisch nicht ganz trivial, weil ownCloud ursprünglich natürlich dafür entwickelt wurde, Dateien bereitzustellen und auszutauschen.

Da ich schon seit längerer Zeit eine eigene ownCloud-Installation auf meinem Server betreibe, lag es nahe, diese als technische Grundlage zu verwenden. Benutzerverwaltung, Gruppen, Freigaben und Dateispeicherung sind dort bereits vorhanden. Warum also für eine neue Anwendung noch einmal eine komplette Benutzerverwaltung, ein eigenes Dateisystem und zusätzliche Sicherheitsmechanismen entwickeln? OC-PhotoSelector verwendet deshalb möglichst die vorhandenen Funktionen von ownCloud und integriert sich als eigene App direkt in die Plattform. Der Kunde benötigt keine zusätzliche Software und arbeitet vollständig im Browser. Eine wichtige Vorgabe war dabei von Anfang an, möglichst keine Änderungen am eigentlichen ownCloud-Kern vorzunehmen, damit die Anwendung auch nach zukünftigen Updates weiterhin funktioniert.

Anfangs ging es tatsächlich nur um die Auswahl von Bildern. Relativ schnell kamen aber weitere Anforderungen hinzu, denn eine reine Bildauswahl reicht nicht aus, wenn anschließend auch die Bearbeitung organisiert werden soll. Deshalb wurde die Anwendung schrittweise erweitert. Heute gibt es unter anderem eine Projektverwaltung, Funktionen zur Verarbeitung der Kundenauswahl, Bearbeitungskommentare und die Möglichkeit, aus den Angaben einen strukturierten Produktionsauftrag zu erstellen. Auch die Kundenverwaltung wurde erweitert, sodass Kunden direkt im vorgesehenen Workflow angelegt und mit den notwendigen Berechtigungen ausgestattet werden können. Dabei gab es natürlich auch Änderungen an der ursprünglichen Architektur. Nicht jede Idee aus den ersten Versionen hat sich langfristig als sinnvoll erwiesen. Das gehört für mich aber zur Softwareentwicklung dazu. Man beginnt mit einer Vorstellung, sammelt Erfahrungen und passt die Lösung entsprechend an.

Softwareentwicklung mit Unterstützung von KI

Ein interessanter Aspekt ist die Art, wie ich die Anwendung entwickle. Ich verwende inzwischen verschiedene KI-Systeme als Unterstützung bei der Softwareentwicklung, darunter ChatGPT, Codex, Cline und IBM Bob. Dabei habe ich festgestellt, dass die Systeme durchaus unterschiedliche Stärken haben. Gerade bei Änderungen an PHP-Controllern, HTML und Stylesheets habe ich mit IBM Bob bisher sehr gute Erfahrungen gemacht. Manche Aufgaben wurden damit schneller und aus meiner Sicht auch qualitativ besser umgesetzt als mit anderen Werkzeugen. ChatGPT verwende ich hauptsächlich für Architekturfragen, die Planung neuer Funktionen, Sicherheitsanalysen und die Erstellung konkreter Entwicklungsaufträge. Der eigentliche Code wird dann häufig durch einen der Coding-Assistenten umgesetzt.

Das bedeutet allerdings nicht, dass ich einfach einen Auftrag formuliere und anschließend ungeprüft übernehme, was die KI produziert. Die Änderungen werden in Git dokumentiert, getestet und bei Bedarf überarbeitet. Ich finde diese Art der Entwicklung ausgesprochen interessant, weil man damit auch als einzelner Entwickler recht umfangreiche Projekte umsetzen kann. Allerdings merkt man spätestens bei Themen wie Sicherheit und Kompatibilität, dass KI-Unterstützung allein noch keine fertige Software garantiert. Die Verantwortung für Architektur, Qualität und den späteren Betrieb bleibt letztlich beim Entwickler.

Das Update auf ownCloud 11 und die Sache mit den Zertifikaten

Im Oktober habe ich meine ownCloud-Installation auf Version 11 aktualisiert. Das Update der eigentlichen Plattform war dabei gar nicht das größte Problem. Nach der Aktualisierung waren verschiedene Anwendungen nicht mehr aktiv beziehungsweise mussten erneut installiert und geprüft werden. Das betraf auch meinen OC-PhotoSelector. Zunächst dachte ich, dass ich die Anwendung einfach wieder einspielen könnte, schließlich hatte sie vorher funktioniert. Ganz so einfach war es dann allerdings nicht. Bei der Beschäftigung mit den aktuellen Anforderungen wurde schnell klar, dass ich mich intensiver mit der Signierung der Anwendung, den notwendigen Zertifikaten und dem Aufbau eines korrekten Installationspakets beschäftigen müssen. Und damit war ich plötzlich bei einem Thema, das mit der ursprünglichen Bildauswahl eigentlich überhaupt nichts zu tun hat.

Eine ownCloud-App besteht aus einer ganzen Reihe von Dateien. Dazu gehören PHP-Programme, JavaScript, Stylesheets, Konfigurationsdateien und verschiedene weitere Bestandteile. Damit später überprüft werden kann, ob diese Dateien unverändert sind, gibt es einen Mechanismus zur kryptografischen Signierung. Vereinfacht gesagt werden für die Dateien der Anwendung kryptografische Prüfinformationen erstellt, die mithilfe eines privaten Schlüssels signiert werden. Über den dazugehörigen öffentlichen Schlüssel beziehungsweise ein Zertifikat lässt sich anschließend überprüfen, ob die signierten Dateien verändert wurden. Das ist übrigens etwas anderes als das SSL- beziehungsweise TLS-Zertifikat, das für eine verschlüsselte HTTPS-Verbindung verwendet wird. Bei HTTPS geht es darum, die Kommunikation zwischen Browser und Server abzusichern. Bei der App-Signierung geht es dagegen um die Integrität des Softwarepakets und die Zuordnung der Signatur zu einem bestimmten Schlüssel.

Für den Entwickler bedeutet das, dass zusätzliche Schritte notwendig werden. Es müssen die passenden Schlüssel und Zertifikate verwendet, die Signatur erzeugt und das fertige Anwendungspaket überprüft werden. Besonders wichtig ist natürlich, dass der private Schlüssel auch privat bleibt und nicht versehentlich im Git-Repository landet. Das Ganze ist zunächst etwas gewöhnungsbedürftig, aber der Hintergrund ist durchaus nachvollziehbar. Schließlich wird eine ownCloud-App innerhalb einer Serveranwendung ausgeführt und kann je nach ihren Berechtigungen auf Benutzer, Dateien und andere Funktionen zugreifen.

Natürlich könnte ich versuchen, die Anwendung irgendwie wieder auf meiner eigenen Installation zum Laufen zu bringen. Das würde für den privaten Einsatz vielleicht zunächst ausreichen. Allerdings habe ich inzwischen den Anspruch, dass OC-PhotoSelector nicht nur auf meinem eigenen Server funktioniert, sondern möglichst auch auf anderen ownCloud-Installationen eingesetzt werden kann. Dafür braucht man ein ordentliches Installationspaket, eine nachvollziehbare Versionierung und einen reproduzierbaren Release-Prozess. Außerdem möchte ich vermeiden, dass ich bei jedem größeren ownCloud-Update wieder vor denselben Problemen stehe. Wenn man sich ohnehin mit diesen Themen beschäftigt, kann man es auch gleich vernünftig machen. Eine spätere Veröffentlichung über den ownCloud Marketplace wäre ebenfalls denkbar, auch wenn noch offen ist, ob und wann es dazu kommt.

Ein Sicherheitscheck mit einigen Überraschungen

Im Zusammenhang mit der Vorbereitung auf die neue ownCloud-Version habe ich die Anwendung auch einer ausführlicheren Sicherheitsprüfung unterzogen. Das Ergebnis war durchaus interessant: Insgesamt wurden zwei kritische, sieben hohe, vierzehn mittlere und vier niedrige Feststellungen dokumentiert. Das hört sich zunächst nicht besonders erfreulich an. Allerdings muss man berücksichtigen, dass die Anwendung über längere Zeit schrittweise entwickelt und erweitert wurde. Dabei sind auch Funktionen entstanden, die ursprünglich gar nicht vorgesehen waren.

Ein Beispiel ist die Kundenverwaltung. Hier stellte sich heraus, dass Administratoren der App unter bestimmten Voraussetzungen zu weitreichende Möglichkeiten bei der Verwaltung von ownCloud-Benutzern hatten. Das muss natürlich sauber begrenzt werden. Auch bei verschiedenen Schnittstellen wurde festgestellt, dass zusätzliche Schutzmaßnahmen gegen sogenannte CSRF-Angriffe erforderlich sind. Hinzu kommen einige technische Punkte, beispielsweise veraltete Schnittstellen, nicht mehr passende Routen und Anforderungen an die Paketierung. Interessant war für mich vor allem, dass die eigentlichen Funktionen der Anwendung im Alltag durchaus funktionieren können, während bei einer systematischen Prüfung trotzdem solche Probleme auffallen. Genau deshalb halte ich diese Überprüfung für sinnvoll. Eine Software ist schließlich nicht automatisch sicher, nur weil sie das macht, was sie soll.

Für die Kundenverwaltung habe ich mich bewusst dafür entschieden, die bestehenden Funktionen nicht einfach zu entfernen, sondern sie mit einer konsequenten Rechteprüfung abzusichern. Das bedeutet zwar zusätzlichen Entwicklungsaufwand, ist aus meiner Sicht aber der bessere Weg. Schließlich sollen die vorhandenen Möglichkeiten erhalten bleiben, ohne dass dadurch die Sicherheit der gesamten ownCloud-Installation beeinträchtigt wird.

Wo steht das Projekt aktuell?

Stand 24. Oktober 2026 ist OC-PhotoSelector funktional bereits recht weit entwickelt. Der grundlegende Ablauf von der Bereitstellung der Bilder über die Kundenauswahl bis zur Vorbereitung des Produktionsauftrags ist vorhanden. Momentan arbeite ich hauptsächlich daran, die Anwendung technisch auf einen Stand zu bringen, der auch für zukünftige Updates und gegebenenfalls eine breitere Nutzung geeignet ist. Dazu gehören die Überarbeitung der Benutzerberechtigungen, weitere Sicherheitskorrekturen, Kompatibilitätstests mit ownCloud 11 sowie die Fertigstellung des Signierungs- und Release-Prozesses. Auch eine Installation auf einer vollständig neuen ownCloud-Instanz muss noch erfolgreich getestet werden. Es gibt also noch einiges zu tun, bevor ich die Anwendung guten Gewissens als fertigen Release bereitstellen kann.

Als ich mit OC-PhotoSelector begonnen habe, wollte ich eigentlich nur eine komfortable Möglichkeit schaffen, Bilder von Kunden auswählen zu lassen. Inzwischen beschäftige ich mich mit Benutzerrechten, REST-Schnittstellen, Datenbankmigrationen, Sicherheitsprüfungen, Zertifikaten und Software-Signaturen. Das war ursprünglich so nicht geplant. Andererseits macht genau das für mich auch den Reiz solcher Projekte aus. Man beschäftigt sich mit immer neuen technischen Fragestellungen und lernt dabei eine ganze Menge. Besonders spannend finde ich nach wie vor, wie viel sich inzwischen mit Unterstützung verschiedener KI-Systeme entwickeln lässt. Aber ich sehe auch, dass die eigentliche Herausforderung nicht unbedingt darin besteht, möglichst schnell neuen Code zu erzeugen. Viel wichtiger ist es, eine Anwendung zu entwickeln, die verständlich aufgebaut ist, zuverlässig funktioniert und auch in einigen Jahren noch gewartet werden kann.

Deshalb investiere ich momentan lieber etwas mehr Zeit in Sicherheit, Signierung und eine saubere technische Grundlage, bevor ich mich wieder neuen Funktionen widme. Und wenn OC-PhotoSelector irgendwann auch von anderen Fotografen genutzt werden kann, wäre das natürlich ein schöner zusätzlicher Erfolg. Bis dahin wird aber noch ein wenig entwickelt, getestet und vermutlich auch der eine oder andere Fehler gesucht.

Eine weitere Idee für die zukünftige Entwicklung ist die Anbindung an Dolibarr, ein Open-Source-System für die Kunden-, Auftrags- und Rechnungsverwaltung, das ich ebenfalls bereits einsetze. Damit ließe sich der Workflow noch einmal deutlich erweitern. Die Bildauswahl und die Bearbeitungswünsche würden weiterhin in OC-PhotoSelector erfasst, während die daraus entstehenden Aufträge über eine Schnittstelle an Dolibarr übergeben werden könnten. Dort wäre dann die weitere kaufmännische Abwicklung bis hin zur Rechnungsstellung möglich. Besonders interessant finde ich dabei, dass beide Anwendungen auf der eigenen Infrastruktur betrieben werden können. Es wäre also keine zusätzliche externe Plattform notwendig, und die Daten blieben unter der eigenen Kontrolle. Noch ist diese Integration Zukunftsmusik, aber sie würde gut zum ursprünglichen Konzept passen: ein möglichst durchgängiger Workflow für Fotografen, ohne zusätzliche Abo-Modelle und ohne die Abhängigkeit von externen Cloud-Dienstleistern.

Fortsetzung folgt.