7.0 KiB
Aktueller Entwicklungsstand
Stand: 18.08.2026
Plugin
- Aktuelle Plugin-Version: 0.9.5.7
- Aktueller Entwicklungsblock: NC Connector – WebDAV-basierter Parallelweg bei vollständigem Erhalt des bestehenden produktiven Wegs
- GitHub ist das führende Repository.
- Das private Gitea-System bleibt Mirror/Fallback.
Nicht verhandelbare Migrationsregel
Der bestehende lokale NC Connector bleibt vollständig erhalten, bis der neue WebDAV-Weg End-to-End funktioniert.
Bestehende Quellenmodi:
legacy-viewuser-sharesselected-fileids
Sie werden nicht automatisch migriert, deaktiviert oder auf den neuen Weg umgestellt.
Der neue Weg entsteht zusätzlich als eigener Modus:
webdav-placeholder
Ziel des neuen Wegs
Benötigt werden sollen nur:
- normale Piwigo-Installation;
- bereits vorhandene Linux-/PHP-Umgebung;
- Nextcloud-Adresse;
- Nextcloud-Benutzer bzw. App-Passwort;
- WebDAV-Zugriff auf die Inhalte dieses Benutzers.
Nicht vorausgesetzt werden dürfen:
- PostgreSQL-Zugriff auf Nextcloud;
occ-Adminzugriff;- Rootzugriff des Betreibers;
- Storage-IDs oder Backend-Pfade;
- zusätzliche Host-Mounts;
- FUSE;
- davfs;
- rclone;
- zusätzliche Connector-Systempakete.
Originalbilder werden nicht dauerhaft nach Piwigo kopiert.
Architektur des WebDAV-Parallelwegs
- Ausgewählte Nextcloud-Verzeichnisse werden über WebDAV/PROPFIND gelesen.
- Das Plugin erfasst Ordner, Dateinamen, Datei-ID, MIME-Typ, Größe, ETag und WebDAV-Pfad.
- Für jedes Bild wird nur ein winziger lokaler Platzhalter bereitgestellt.
- Der bestehende Shadow Tree bleibt die physische Piwigo-Quelle.
- Der Shadow Tree bildet die reale Ordner- und Dateinamensstruktur ab, seine Bildziele zeigen jedoch auf Platzhalter statt auf Originale.
- Ein separates Mapping verbindet Shadow-Tree-Pfad, Connection-ID, Nextcloud-Datei-ID und WebDAV-Pfad.
- Piwigo soll Album und Bild über diese Struktur registrieren.
- Wenn echte Bilddaten benötigt werden, wird das Original bei Bedarf über WebDAV gelesen.
- Piwigo-Derivate werden normal lokal unter
_data/i/gecacht. - Das Original bleibt ausschließlich in Nextcloud.
Bereits vorhandene Bausteine
runtime/lib/build_webdav_placeholder_source.py
- liest WebDAV rekursiv;
- lädt keine Originalbilder herunter;
- erzeugt eine lokale Platzhalterquelle;
- erzeugt Manifest und WebDAV-Mapping;
- verwendet einen nur wenige Dutzend Byte großen Platzhalter.
0.9.5.6 – Verbindungsschicht
Der Parallelweg wurde als eigener Connection-Typ im Plugin angelegt.
include/nc_connector_webdav.inc.php- Backend-Aktion
nc_connector_create_webdav_parallel source_mode=webdav-placeholderadapter=remote- ausgewählte WebDAV-Wurzeln werden verbindungseigen gespeichert;
- Nextcloud-Basis-URL und Benutzer werden verbindungseigen gespeichert;
- Secret v3 enthält
nextcloud_userundnextcloud_passwordrückwärtskompatibel zu älteren Secrets.
0.9.5.7 – parallele Runtime angelegt
Der neue Weg besitzt jetzt eine eigene Runtime neben dem bestehenden produktiven Connector.
Neu:
runtime/reconcile-webdav.phpruntime/sync-webdav.shruntime/run-all.shverarbeitet lokale und WebDAV-Verbindungen getrennt.
Wesentliche Regeln:
runtime/reconcile.phpfür die bestehenden lokalen Modi bleibt unverändert.runtime/sync.shfür die bestehenden lokalen Modi bleibt unverändert.- WebDAV-Verbindungen erhalten eigene Runtime-Dateien
webdav-connection-ID.*. - Es werden keine PostgreSQL-/View-/Storage-Mapping-Werte für WebDAV verlangt.
- Nextcloud-Zugang wird aus dem verschlüsselten Connection-Secret in eine Runtime-Passwortdatei mit restriktiven Rechten geschrieben.
- WebDAV-Wurzeln werden getrennt als Runtime-Konfiguration gespeichert.
- Der Platzhalter-Builder erzeugt die lokale Platzhalterquelle, Manifest und WebDAV-Mapping.
- Das Manifest wird anschließend durch den bestehenden
shadow_tree.pyverarbeitet. - Der parallele Shadow Tree liegt absichtlich unter
galleries/bratonien-webdav-IDund kann deshalb den bestehenden Galeriebaum nicht ersetzen oder überschreiben. - Die Platzhalterquelle liegt unter Piwigo
_data/bratonien-tools/nc-webdav-source/connection-ID, damit Piwigo den Symlink-Zielen später folgen kann. - Piwigo-Synchronisierung ist in dieser Stufe hart auf
PIWIGO_SYNC_ENABLED=0gesetzt. Die Runtime darf aktuell nur den parallelen Shadow Tree bauen. Die Registrierung in Piwigo wird erst nach Sichtprüfung bewusst freigeschaltet.
Damit existieren lokaler Produktivweg und WebDAV-Testweg jetzt gleichzeitig, ohne dass ein Umzug stattgefunden hat.
Bestehender produktiver Weg
Unverändert:
- PostgreSQL-/View-/Storage-Mapping-Logik;
- lokale Symlinks auf bereits vorhandene Originalpfade;
runtime/reconcile.phpfür bestehende lokale Adapter;runtime/sync.shmitlegacy-view,user-sharesundselected-fileids;- API-first-Piwigo-Sync;
- gemeinsame Runtime für aktive bestehende Verbindungen.
Gemessene WebDAV-Performance
Testbild: 16.091.204 Byte.
Intern:
- 1,829 s
- 8.796.915 Byte/s
Extern:
- 1,865 s
- 8.627.524 Byte/s
Die externe Verbindung war im Test nur ungefähr 2 % langsamer. Der Ansatz bleibt deshalb für bedarfsweisen Originalzugriff geeignet, solange Piwigo-Derivate lokal gecacht werden.
Löschverhalten seit 0.9.5.5
Das Löschen einer Connector-Verbindung darf nicht an Dateirechten Root-eigener Runtime-Dateien scheitern.
- Datenbankeintrag wird entfernt;
- verwaiste Runtime-Dateien werden vor einem späteren Sync bereinigt;
- andere Verbindungen bleiben unangetastet;
- Nextcloud-Originale und vorhandene Piwigo-Bilder werden nicht gelöscht.
Nächster Testschritt
Die parallele Runtime ist jetzt vorbereitet. Der nächste Schritt ist bewusst klein und kontrolliert:
- Plugin auf 0.9.5.7 aktualisieren.
- Eine kleine neue WebDAV-Testverbindung mit einem überschaubaren Verzeichnis anlegen.
- Gemeinsamen Runner einmal ausführen lassen.
- Prüfen, ob unter
galleries/bratonien-webdav-IDausschließlich die erwartete Ordnerstruktur und Platzhalter-Symlinks entstehen. - WebDAV-Mapping und Manifest im Connection-State prüfen.
- Bestehende produktive Galerie und bestehende Verbindungen dabei auf Unverändertheit prüfen.
Erst wenn dieser Test sauber ist, wird PIWIGO_SYNC_ENABLED für WebDAV separat freigeschaltet und die Piwigo-Registrierung getestet.
Danach – noch nicht umsetzen
Erst wenn die Registrierung mit Platzhaltern funktioniert:
- echte Bilddaten über WebDAV anfordern;
- Piwigo-Derivate aus echten Originalen erzeugen;
- normalen Derivat-Cache weiterverwenden;
- ETag-basierte Änderungserkennung ergänzen;
- Fehlerfälle und Parallelität testen.
Voraussetzung vor irgendeinem Umzug
Erfolgreich getestet sein müssen mindestens:
- Verbindungsanlage;
- WebDAV-Verzeichnisauswahl;
- Shadow Tree;
- Piwigo-Registrierung;
- echte Bildausgabe;
- Derivat-Cache;
- Änderungserkennung;
- Löschen/Deaktivieren;
- Fehlerbehandlung;
- Verhalten bei vielen noch ungecachten Bildern.
Erst danach kann eine freiwillige Migration bestehender Verbindungen überhaupt diskutiert werden.