ADMIN

2022

01

2022-01-01T12:00:00

Rechenzentrum und Netze verwalten

PRAXIS

042

Datenbanken

Wiki-Server

Wiki-Server im Überblick

Privatbibliothek

von Andreas Stolzenberger

Veröffentlicht in Ausgabe 01/2022 - PRAXIS

Ein Wiki-Server dient als Dokument- und Wissensdatenbank für Arbeitsgruppen. Wer ein Wiki im eigenen Datacenter betreiben möchte, findet eine reiche Auswahl an Open-Source-Anwendungen. Wir haben fünf freie Wiki-Plattformen für verschiedene Einsatzgebiete im lokalen Netzwerk installiert und ausprobiert. Welche Vorzüge die durchaus unterschiedlichen Plattformen zu bieten haben, lesen Sie in diesem Beitrag.

Die Wikipedia ist nicht nur als große Enzyklopädie berühmt. Auch die Websoftware, die es Nutzern ermöglicht, gemeinschaftlich an Online-Dokumenten zu arbeiten, erfreut sich nach wie vor großer Beliebtheit. Die Wiki-Markup-Sprache erlaubt Anwendern, mit sehr simplen Methoden Dokumente zu formatieren, ohne dazu spezielle WYSIWYG-Editoren oder komplexe Seitenbeschreibungssprachen wie HTML, XML oder LaTex (für wissenschaftliche Dokumente) verwenden zu müssen.
Wikis kommen daher gerne in lokalen Netzwerken für interne Dokumentensammlungen zum Einsatz. Code Repositories, Projektmanagement-Tools oder IT-Service-Management-Werkzeuge setzen Wikis für die Dokumentation ein. Die Anforderungen an Wiki-Server sind recht gering. Meistens genügt ein Web- und ein Datenbankserver. Einige Systeme kommen sogar gänzlich ohne Datenbank aus. Auch der Lernaufwand für die Nutzer hält sich in Grenzen, denn die Markdown-Syntax für Texte lässt sich im Handumdrehen erlernen. Zudem beinhalten moderne Wikis immer öfter optionale Online-WYSIWYG-Editoren, die den Einstieg noch einfacher machen.
Dokuwiki
Dokuwiki [1] ist einer der populärsten Wiki-Server überhaupt, speziell für kleinere Installationen. Das PHP-Programm kommt ohne eigenen Datenbankserver aus und braucht eigentlich nur eine Linux-Installation mit einem Apache- oder Nginx-Server. Dokuwiki speichert alle Seiten in separaten TXT-Dateien im Originalformat. Das vereinfacht es dem Administrator, das komplette Wiki zu sichern und mit einem Repository-Management wie Git zu versionieren. Für Dokuwiki gibt es eine große Zahl von Plug-ins, sowohl für die Funktionalität als auch für die Optik.
Die Wikipedia ist nicht nur als große Enzyklopädie berühmt. Auch die Websoftware, die es Nutzern ermöglicht, gemeinschaftlich an Online-Dokumenten zu arbeiten, erfreut sich nach wie vor großer Beliebtheit. Die Wiki-Markup-Sprache erlaubt Anwendern, mit sehr simplen Methoden Dokumente zu formatieren, ohne dazu spezielle WYSIWYG-Editoren oder komplexe Seitenbeschreibungssprachen wie HTML, XML oder LaTex (für wissenschaftliche Dokumente) verwenden zu müssen.
Wikis kommen daher gerne in lokalen Netzwerken für interne Dokumentensammlungen zum Einsatz. Code Repositories, Projektmanagement-Tools oder IT-Service-Management-Werkzeuge setzen Wikis für die Dokumentation ein. Die Anforderungen an Wiki-Server sind recht gering. Meistens genügt ein Web- und ein Datenbankserver. Einige Systeme kommen sogar gänzlich ohne Datenbank aus. Auch der Lernaufwand für die Nutzer hält sich in Grenzen, denn die Markdown-Syntax für Texte lässt sich im Handumdrehen erlernen. Zudem beinhalten moderne Wikis immer öfter optionale Online-WYSIWYG-Editoren, die den Einstieg noch einfacher machen.
Dokuwiki
Dokuwiki [1] ist einer der populärsten Wiki-Server überhaupt, speziell für kleinere Installationen. Das PHP-Programm kommt ohne eigenen Datenbankserver aus und braucht eigentlich nur eine Linux-Installation mit einem Apache- oder Nginx-Server. Dokuwiki speichert alle Seiten in separaten TXT-Dateien im Originalformat. Das vereinfacht es dem Administrator, das komplette Wiki zu sichern und mit einem Repository-Management wie Git zu versionieren. Für Dokuwiki gibt es eine große Zahl von Plug-ins, sowohl für die Funktionalität als auch für die Optik.
Nach der Erstinstallation erlaubt Dokuwiki zunächst allen Benutzern, Dokumente anzulegen und zu editieren. Das Tool verfügt aber auch über ein ausgeklügeltes Benutzer- und Gruppenmanagement. Über Access-Control-Lists legt der Administrator fest, welche Nutzer und Gruppen in welchem Bereich des Wikis verschiedene Rechte haben. Häufig dürfen dabei nicht authentisierte Nutzer den Content des Wikis nur lesen. Registrierte User und Gruppen bekommen im Gegenzug Autorenrechte in ihren jeweiligen Unterverzeichnissen. Spezielle Seiten wie "start" oder "sidebar" ermöglichen die Navigation innerhalb des Wikis. Die Seiten "Links" und "Menüs" bauen die Nutzer dabei ebenfalls in der Wiki-Sprache. Neben der internen Nutzerverwaltung kann sich Dokuwiki auch mit Authentisierungsdiensten wie dem Active Directory (AD), LDAP und anderen verbinden.
Der eingebaute Media-Manager verwaltet zusätzliche Binärdateien wie Bilder, Filme oder PDFs, die sich in die Wiki-Seiten verlinken lassen. Die initiale Optik von Dokuwiki wirkt funktionell, aber ein wenig veraltet. Über Themes kann der Anwender die Darstellung etwas auffrischen. Allerdings hält sich die Auswahl in Grenzen und kann natürlich nicht mit einer Themensammlung eines Blog-Systems wie Wordpress mithalten. Sehr gut gelungen ist hingegen das Plug-in- und Theme-Management. Der Administrator kann direkt im Verwaltungsmenü nach Extensions suchen und diese auch gleich installieren.
Schnell einsatzbereit
Das Wiki ist simpel und in wenigen Minuten einsatzbereit. Jeder, der sich mit dem Thema Wiki-Server auseinandersetzen will, das aber noch nie gemacht hat, sollte mit einer Dokuwiki-Installation anfangen. Die komplette Wiki-Struktur und Menüführung schreibt der Administrator genau wie die Dokumente in der Wiki-eigenen Markdown-Syntax "Wikicloth", wie sie auch Mediawiki (Wikipedia) verwendet. Simple Themen wie "Bootstrap3" peppen die Optik des Wiki auf, behalten aber den Aspekt der Funktionalität im Vordergrund. Die Verwaltung und Sicherung des Contents gehen sehr leicht, da Dokuwiki keine Datenbank benötigt.
Für den Einsteiger allerdings eher negativ ist, dass Dokuwiki prinzipiell nur Wikicloth verwendet und dafür auch keinen WYSIWYG-Editor anbietet. Wer viel mit Github arbeitet, würde gerne beim dort verwendeten Markdown bleiben. Für Dokuwiki existieren eine ganze Reihe von Markdown-Plug-ins, die neben dem Wikicloth auch "MD" erlauben. Das Plug-in "Slackedit" zusammen mit "Mdpage" fügt dem Dokuwiki-System dann auch einen sehr nützlichen WYSIWYG-MD-Editor hinzu.
Bild 1: Dokuwiki benutzt die selbe Markdown-Sprache wie die Wikipedia. Autoren arbeiten in einem simplen Texteditor. Über Plug-ins lässt sich auch ein WYSIWYG-Editor für Markdown einfügen.
Testsetups mit Podman und Ansible
Für diesen Artikel rollen wir die Wiki-Applikationen und Datenbanken als Container mit Hilfe von Ansible-Plabooks auf einem Podman-Host aus. Damit dabei mehrere parallele Installationen sich nicht um den Web- oder MySQL-Port auf der einen IP-Adresse des Container-Hosts streiten, rollen wir die Container mit jeweils eigenen IP-Adressen im Netzwerk aus. Dazu definieren wir auf dem Podman-Host zunächst das Bridged-Network "host_local" vom Typ "macvlan". Das erlaubt, dass die Container nicht auf der IP-Adresse des Hosts laufen müssen, sondern eigene IP-Adressen belegen dürfen. Entsprechend erstellen wir die Container dann via Ansible. Hier ein Ausschnitt aus dem Playbook:- name: wiki.js   containers.podman.podman_container:      name: wikijs      image: docker.io/requarks/wiki:2      state: started      network:      - host_local      ip: "192.168.2.188"      dns: "192.168.2.2"      expose:      - "3000"      env:....
Wiki.js
Seit Ende 2016 ist die JavaScript-Applikation Wiki.js [2] auf dem Markt. In den letzten zwei bis drei Jahren hat dieses Tool enorm zugelegt. Es verbindet die originale Wiki-Funktionalität mit einer modernen, schicken UI und einem von Haus aus integrierten WYSIWYG-Editor für Dokumente. Das erleichtert Anwendern ohne Markdown-Erfahrung den Einstieg beträchtlich. Wer Markdown kennt, wird sich darüber freuen, dass Wiki.js keinen eigenen Dialekt verwendet. Es arbeitet mit dem Standard, den auch GitHub nutzt.
Zudem bietet Wiki.js ebenfalls ein flexibles Plug-in-System für die Erweiterung der Funktionalität. Darunter gibt es auch sogenannte Renderer, also alternative Seitenbeschreibungssprachen. Wer technisch-wissenschaftliche Dokumente unter Wiki.js nutzen will, wird sich beispielsweise über den LaTex-Renderer sehr freuen. Module sorgen auch dafür, dass die Benutzerauthentisierung mit
Backenddiensten wie Google, LDAP oder Ähnlichen arbeitet.
Die Grundinstallation fällt zunächst einmal nicht ganz so einfach aus wie bei Dokuwiki. Wiki.js braucht eine PostgreSQL-Datenbank. Zwar unterstützt die aktuelle Version auch Backends wie Microsoft SQL, MariaDB oder auch nur SQLite. Doch der Support für diese Datenbanken steht auf der Streichliste, sodass künftige Versionen nur noch mit PostgreSQL arbeiten. Im Testsetup genügen zwei Container: Einer für die Wiki-App und ein zweiter für die PostgreSQL-Datenbank. Dabei verzichtet der Wiki-Container auf ein "durchgereichtes" Verzeichnis, um Daten auf der Platte des Hosts zu speichern. Hier liegen alle Informationen in der Datenbank ohne ein separates Dokumentenverzeichnis.
Die Anwendung kommt mit einer ganzen Reihe unterstützter File-Backends wie S3, SFTP oder Git daher. Diese beliefern nicht die Live-Applikation, sondern dienen als Backup-Storage. Im Betrieb gefällt bei Wiki.js die vertraute moderne Weboberfläche, wenngleich einige Prozesse dort komplizierter als beim simplen Dokuwiki ausfallen. Für verschiedene Themes und Darstellungen ist bereits ein Manager vorhanden. Aktuell ist das Themenmanagement aber noch nicht fertig und Wiki.js daher noch an die Standardoptik gebunden. Überhaupt stehen im Admin-Backend von Wiki.js sehr viele Funktionen nur mit der Bemerkung "coming soon". Requarks.io als treibendes Unternehmen hinter Wiki.js hat für den Beginn des Jahres 2022 die neue Version 3 angekündigt, die eine ganze Reihe an Verbesserungen und Änderungen mit sich bringen soll.
Großer Funktionsumfang
Wiki.js ist eine ansehnliche, moderne Applikation mit einer modularen Architektur. Hier und da fehlen noch einige der versprochenen Module wie das flexible Theme-Management. Dafür gibt es besonders im Backend bereits einen großen Funktionsumfang. Was die Anwender jetzt bereits bekommen, funktioniert solide und durchdacht. Wiki.js spricht vor allem Nutzer an, die eine kollaborative Wiki-Plattform wünschen, aber dafür lieber mit WYSIWYG ans Werk gehen als mit Markdown. Schade dabei ist nur, dass der zugehörige Editor die Dokumente intern direkt als HTML-Code ablegt. An einem Dokument können Nutzer daher nicht mit verschiedenen Methoden (Markdown und WYSIWYG) arbeiten.
Bild 2: Wiki.js präsentiert eine moderne Oberfläche und viele Plug-ins. Mehr als die Hälfte der angezeigten Funktionen soll aber erst in künftigen Releases folgen.
Mediawiki
Der Vollständigkeit halber müssen wir hier kurz die Mediawiki [3] vorstellen – auf der auch die Wikipedia selbst läuft. Prinzipiell kann jeder Interessierte den Open-Source-Code herunterladen und nutzen. Mediawiki bedarf dazu eine MySQL-Datenbank. Auch die Installation via Container funktioniert, allerdings nur mit einem kleinen Workaround. Für Administratoren kleiner und mittelgroßer Netzwerke dürfte Mediawiki ohnehin nicht die erste Wahl sein. Das Tool ist für sehr große Umgebungen und riesige Datenbestände konzipiert – wie es eben bei einer Enzyklopädie wie Wikipedia der Fall ist. Für kleine und mittlere Arbeitsgruppen ist das Tool zu komplex und unübersichtlich in der Administration.
BookStack
Das Open-Source-Wiki BookStack [4] bezeichnet sich selbst als "Open-Source-Alternative zu Confluence" und zielt darauf ab, Dokumente wie Bücherregale zu sortieren. Entsprechend gibt es im Programm die Hierarchie von Shelves, Books und Pages. BookStack wirkt auf den ersten Blick nicht wie ein herkömmliches Wiki, sondern eher wie ein simples Dokumenten-Managementsystem (DMS). Die GUI ist sehr aufgeräumt und fokussiert auf das Wesentliche. Das betrifft auch das simple Admin-Menü. Anders als Tools wie Dokuwiki stellt BookStack nicht jede erdenkliche Konfigurationsoption im Admin-Menü dar. Um Funktionen wie LDAP-Integration oder ein S3-Storage-Backend einzurichten, muss der Administrator das ENV-Konfigurationsfile von Hand bearbeiten. Auch gibt es keine vorgefertigten Themes. Die Dokumentation verweist zumindest darauf, wo der Administrator im Stylesheet (CSS) Anpassungen vornehmen kann.
In der aufgeräumten UI finden sich die Anwender binnen kurzer Zeit zurecht. Lediglich die Hierarchie kann anfangs verwirren: An das Konzept, innerhab eines "Books" die "Chapters" und "Pages" als separate Dokumente zu verwalten, muss man sich erst gewöhnen. Eine "Page" alleine könnte bereits ein komplettes Book erhalten.
Zu den Stärken und zugleich Schwächen von BookStack zählt der Editor. BookStack bringt zwei Editoren mit, einen für WYSIWYG und einen für Markdown. Beide funktionieren hervorragend und die Markdown-Variante bietet gleich eine passende Live-Preview an. In den WYSIWYG-Editor können Anwender formatierte Texte aus Quellen wie LibreOffice oder Google-Office per Copy-und-Paste einfügen, sodass BookStack die Formatierung übernimmt. Das funktioniert sogar aus Tabellenkalkulationen heraus. Das ist ein tolles Feature – vor allem, wenn die Anwender ihr neues BookStack-Wiki mit bestehenden Dokumenten befüllen möchten. Allerdings kann der User nur einen der beiden Editoren für das komplette Wiki auswählen. Hier wäre eine Option wie bei Wiki.js wünschenswert, durch die der Nutzer zumindest für jedes Dokument entscheiden kann, welchen Editor er benutzen möchte.
Bild 3: Bookstack nutzt eine übersichtliche Hirarchie in einer simplen und sehr übersichtlichen UI. Das Tool liefert zudem den besten WYSIWYG-Editor der getesteten Programme.
Simpel und übersichtlich
Als PHP-Applikation ist auch BookStack schnell installiert oder als Container gestartet. Das Wiki braucht die üblich verdächtige MySQL/MariaDB-Datenbank im Backend. Verglichen mit anderen Wikis bietet BookStack weniger flexible Anpassungsmöglichkeiten und Plug-ins. Dafür liefert das Tools eine sehr simple und übersichtliche Oberfläche, läuft sehr schnell und bietet tolle Editoren. Die Umgebung eignet sich gut als Dokumentationsserver im internen Netzwerk.
Gollum
Für ein Wiki braucht es nicht immer Server, Datenbanken und eine Internetverbindung. Wer unterwegs Seiten vorbereiten, editieren und korrigieren will, dabei aber keine Verbindung zu seinem Wiki hat, kann das mit Gollum [5] erledigen. Das kleine Ruby-Tool baut ein Wiki ausschließlich aus den Dateien eines lokalen Verzeichnisses auf, das via Git für die Versionskontrolle sorgt. Prinzipiell lässt sich eine Reihe lokaler Markdown-Dateien auch mit einem geeigneten Editor wie VSCode oder Atom bearbeiten. Gollum hat jedoch den Charme, dass es die Seiten renderd, sodass Markdown-Hyperlinks und damit die Wiki-Seitenstrukturen funktionieren.
Neben dem regulären Markdown (wie bei GitHub) unterstützt Gollum weitere Sprach-Plug-ins wie Wikicloth oder AsciiDoc. Zur Installation gibt es nicht viel zu sagen. Auf einem System mit installiertem Ruby (und ruby-devel) tippen Sie einfach gem install gollum ein. Dann starten Sie das Tool mit gollum </pfad/zum/wiki>, wobei Sie in diesem Pfad zuvor ein git init ausgeführt haben. In dem Verzeichnis liegen entweder bereits vorhandene Markdown-Dateien oder Sie fügen Inhalte mit Gollum hinzu. Das Werkzeug lauscht auf dem Port "localhost:4567" und lässt sich mit jedem Browser bedienen.
Mit Gollum erhalten Sie so einen simplen Markdown-Editor und Renderer. Das Tool eignet sich prima, um Markdown-Content auf dem lokalen Rechner vorzubereiten und später in ein Wiki hochzuladen.
Bild 4: Simpler als bei Gollum geht es nicht. Das lokale Tool eignet sich jedoch gut, um im Offline-Betrieb Markdown-Seiten vorzubereiten und zu editieren.
Fazit
Admins, die eine eigene Wiki-Plattform aufsetzen möchten, stehen mehrere interessante Alternativen zur Verfügung. Natürlich erhebt unsere Aufstellung keinen Anspruch auf Vollständigkeit, denn es gibt noch eine Fülle weiterer Werkzeuge wie Xwiki oder Outline. Für den Beitrag haben wir vor allem Tools ausgewählt, die sich simpel installieren und nutzen lassen. So können Anwender, die noch wenig mit Konzept, Betrieb und Nutzung von Wikis vertraut sind, sich erst einmal in die Materie einarbeiten und verschiedene Aspekte näher ansehen. Dokuwiki steht hierbei für den "klassischen" Wiki-Aufbau, BookStack für das DMS unter den Wikis und Wiki.js für eine moderne Architektur.
Grundsätzlich offerieren Wiki-Plattformen vergleichsweise simple Ansätze, um Dokumentensammlungen zentral, zugänglich für alle und im eigenen Datacenter aufzubewahren. Das geht zwar ein wenig gegen den aktuellen "Cloud First"-Trend, aber nicht alle Informationen und Dokumentationen sind auf Cloudservern unbedingt besser aufgehoben als im eigenen Datacenter.
(dr)
Link-Codes
[2] Wiki.js: https://js.wiki/