Tach!
Lange geplant, nun ist es endlich so weit: das SELFHTML-Wiki zum Offline-Lesen steht vor der Tür.
Auf der vorläufigen, noch ungestalteten Website https://selfhtml.org/offlinewiki/ gibt es eine Anleitung und die nötigen Dateien zum Download (mit einem Datenbestand, der nicht der aktuellste ist). Die Anleitung zitiere ich im folgenden zwischen den beiden Balken, abzüglich der Absätze zur Installation und bitte um Diskussion und selbstverständlich auch um Vorschläge und Korrekturen (inklusive Installation).
SELFHTML-Offline-Wiki
Ziel des Projektes ist, eine offline verwendbare Version des Wikis bereitzustellen. Enthalten ist der Inhalt des Wikis abzüglich des Benutzer-Namensraumes in der zum Veröffentlichungszeitpunkt aktuellen Version.
Lizenz-Fragen
Das SELFHTML-Wiki unterliegt der Lizenz CC-BY-SA 3.0. Darin ist unter anderem Namensnennung enthalten.
In der Offline-Variante soll allerdings nicht der gesamte Datenbestand, insbesondere nicht die Daten der Nutzer, enthalten sein.
Es wird von den Wiki-Seiten und anderen Inhalten nur die zum Zeitpunkt der Erstellung aktuelle Revision übernommen, ohne Versionsgeschichte.
Damit entfallen die Namen der Bearbeiter und somit ist diese Version nicht mehr CC-BY-SA-3.0-konform. Daraus ergibt sich,
dass eine Veröffentlichung außerhalb privater Räume, sprich öffentliche Zugänglichmachung im Internet, nicht von der Lizenz abgedeckt ist.
Warum so und keine statischen Seiten?
Die Ausführungen zu dieser Offline-Version begannen damit, den gerenderten Hauptinhalt der jeweiligen Seiten im Wiki
von der Mediawiki-Software erstellen zu lassen und jeweils in einen statischen Seitenrahmen einzufügen. Erste Erfolge waren vielversprechend.
Recht zeitig wurde jedoch klar, dass für statische Seiten eine Nachbearbeitung/Umschreiben der Links notwendig gewesen wäre.
Die Seitentitel sind nicht dateisystemsicher, und für Links von und zu Unterseiten wären relative Pfad-Hangeleien nötig gewesen.
Ein kleiner Webserver, der die Seitentitel zu dateisystemsicheren Dateinamen übersetzt, erschien als eine gute Lösung. Doch dann zeigte sich,
woran auch schon andere Offline-Reader-Projekte gescheitert sind. Seit einigen Mediawiki-Versionen werden die nötigen CSS- und Javascript-Ressourcen
von einem Resource-Loader eingebettet. Das geschieht teilweise erst per Nachladen zur Laufzeit.
Außerdem sind im Gerüst der Seite Meta-Informationen zum Inhalt eingebettet, die vom CSS und Javascript verwendet werden.
Der statische Seitenrahmen musste also ein Template mit Platzhaltern werden.
Und dafür musste Mediawiki-Funktionalität nachprogrammiert werden, damit die Daten in derselben Form kodiert sind, wie Mediawiki es tut.
Der entscheidenden K.O.-Punkt war jedoch neben den dynamisch nachgeladenen Ressourcen, dass die Suchfunktion so auch nicht geht,
denn die ist serverseitig bereitgestellt und hätte ebenfalls nachprogrammiert werden müssen. Die würde übrigens auch nicht vorhanden sein,
wenn man einen Links-folgenden Downloader auf die Seite ansetzt, weshalb dieser Ansatz bereits früher schon gescheitert war.
Die jetzige Lösung basiert aus diesen Gründen auf einem "handelsüblichen" Webserver (Nginx - relativ klein und für diesen Zweck völlig ausreichend),
einer PHP-Installation und einer SQLite-Datenbank, womit die Notwendigkeit eines Datenbanksystems à la MySQL/MariaDB oder PostgreSQL wegfällt.
Diese beiden Voraussetzungen müssen separat besorgt und gemäß der obigen Anleitungen installiert werden. Vom Offline-Projekt werden
eine Mediawiki-Installation inklusive aller verwendeten Extensions und einer angepassten Konfigurationsdatei geliefert,
die SQLite-Datenbank mit den textlichen Seiteninhalten, die im Wiki verwendeten Bilder, sowie vorgefertigte Konfigurationdateien für Nginx und PHP
und ein Start-Script. So zumindest für Windows, die Vorgehensweise unter Linux ist etwas anders.
Nun zur Installation. Ist diese gemäß der Anleitungen nachvollziehbar? Eine vollständige Anleitung kann ich nur für Windows anbieten. Die Linux/etc.-Versionen sind zu vielfältig und ich setze voraus, dass man da einen Webserver mit PHP selbst aufsetzt. Es gibt natürlich auch (L|M)(A|E)MP-Installationen für den unabhängigen Betrieb (wobei wir den M(ySQL)-Teil nicht brauchen) abseits der in den Distributionen enthaltenen Pakete, die ich jedoch nicht im Detail kenne. Aber die kann ich ja noch mit in der Dokumentation erwähnen, wenn ihr da empfehlenswerte kennt.
Im Prinzip geht auch XAMPP als Basis für die Windows-Version, aber die ist unnötig groß, es braucht ja nur einen Webserver und PHP ohne Datenbank und das zweite P (=Perl). Alternativ zur mehrschrittigen Anleitung könnte ich für Windows auch ein großes ZIP-Paket inklusive Nginx und PHP zum einfachen Auspacken schnüren, aber abzüglich des von PHP benötigten "Visual C++ Redistributable for Visual Studio 20..".
Das PHP-Script, mit dem ich den Datenbestand extrahiere und verSQLite sowie die Bash-Scripte für das Erstellen der Archive soll am Ende auch noch in ein Git(hub)-Repository kommen.
dedlfix.