Files
Piwigo_Bratonien_Tools/CURRENT_STATUS.md
2026-08-18 21:22:32 +02:00

6.4 KiB
Raw Blame History

Aktueller Entwicklungsstand

Stand: 18.08.2026

Plugin

  • Aktuelle Plugin-Version: 0.9.5.6
  • 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-view
  • user-shares
  • selected-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

  1. Ausgewählte Nextcloud-Verzeichnisse werden über WebDAV/PROPFIND gelesen.
  2. Das Plugin erfasst Ordner, Dateinamen, Datei-ID, MIME-Typ, Größe, ETag und WebDAV-Pfad.
  3. Für jedes Bild wird nur ein winziger lokaler Platzhalter bereitgestellt.
  4. Der bestehende Shadow Tree bleibt die physische Piwigo-Quelle.
  5. Der Shadow Tree bildet die reale Ordner- und Dateinamensstruktur ab, seine Bildziele zeigen jedoch auf Platzhalter statt auf Originale.
  6. Ein separates Mapping verbindet Shadow-Tree-Pfad, Connection-ID, Nextcloud-Datei-ID und WebDAV-Pfad.
  7. Piwigo soll Album und Bild über diese Struktur registrieren.
  8. Wenn echte Bilddaten benötigt werden, wird das Original bei Bedarf über WebDAV gelesen.
  9. Piwigo-Derivate werden normal lokal unter _data/i/ gecacht.
  10. 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 begonnen

Der Parallelweg ist jetzt erstmals als eigener Connection-Typ im Plugin angelegt.

Neu:

  • include/nc_connector_webdav.inc.php
  • Backend-Aktion nc_connector_create_webdav_parallel
  • neue Verbindungen dieses Typs erhalten source_mode=webdav-placeholder;
  • sie werden als adapter=remote und zunächst deaktiviert gespeichert;
  • bestehende Verbindungen werden dabei nicht verändert;
  • ausgewählte WebDAV-Wurzeln werden verbindungseigen gespeichert;
  • Nextcloud-Basis-URL und Benutzer werden verbindungseigen gespeichert.

Das Secret-Format wurde rückwärtskompatibel auf Version 3 erweitert um:

  • nextcloud_user
  • nextcloud_password

Bestehende v1/v2-Inhalte bleiben lesbar. Neue lokale Wizard-Verbindungen können die Nextcloud-Zugangsdaten ebenfalls mitführen, ohne ihren bisherigen Quellenmodus zu ändern.

Die verbindungseigene Fallback-Verwaltung wurde so angepasst, dass vorhandene WebDAV-Zugangsdaten bei späteren Secret-Änderungen erhalten bleiben. Für webdav-placeholder ist kein db_password erforderlich.

Bestehender produktiver Weg

Unverändert:

  • PostgreSQL-/View-/Storage-Mapping-Logik;
  • lokale Symlinks auf bereits vorhandene Originalpfade;
  • runtime/reconcile.php für bestehende lokale Adapter;
  • runtime/sync.sh mit legacy-view, user-shares und selected-fileids;
  • API-first-Piwigo-Sync;
  • gemeinsame Runtime für aktive bestehende Verbindungen.

Die neue WebDAV-Verbindung wird aktuell absichtlich noch nicht von dieser Runtime aktiviert.

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ächste Bauphase

Der neue Verbindungstyp existiert jetzt parallel. Als Nächstes wird ausschließlich seine Runtime gebaut, ohne die bestehenden drei Modi umzuschreiben.

Reihenfolge:

  1. runtime/reconcile.php um einen getrennten Zweig für adapter=remote + source_mode=webdav-placeholder erweitern.
  2. Für diesen Zweig keine PostgreSQL- und Storage-Mapping-Prüfung durchführen.
  3. Nextcloud-Zugang aus dem verschlüsselten Connection-Secret in eine verbindungseigene, nur für die Runtime lesbare Credential-Datei überführen.
  4. WebDAV-Wurzeln mit webdav_path, display_name und optionaler fileid als eigene Runtime-Konfiguration schreiben.
  5. runtime/sync.sh um einen strikt getrennten webdav-placeholder-Zweig erweitern.
  6. Dort build_webdav_placeholder_source.py aufrufen.
  7. Das erzeugte Manifest durch den bestehenden shadow_tree.py schicken.
  8. Erst dann eine neue kleine WebDAV-Testverbindung aktivieren und prüfen, ob Piwigo Albumstruktur und Bilddatensätze korrekt registriert.
  9. Bestehende Verbindungen laufen während dieses Tests unverändert weiter.

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.