Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).
Wiki.js nativ unter Linux installieren¶
Diese Anleitung zeigt, wie Wiki.js 2.x ohne Container aus dem offiziellen Release-Archiv eingerichtet und anschließend als systemd-Dienst betrieben wird. Sie setzt eine bereits vorbereitete Datenbank und eine unterstützte Node.js-Version voraus.
Hinweis zur Quelle
Die Arbeitsschritte orientieren sich an der offiziellen Linux-Anleitung von Wiki.js. Der Text wurde eigenständig formuliert, neu gegliedert und um praktische Hinweise ergänzt; er ist keine wörtliche Übersetzung.
Voraussetzungen¶
Vor dem Start sollten folgende Komponenten bereitstehen:
- eine aktuelle Linux-Distribution mit
systemd, - eine von Wiki.js unterstützte Node.js-Version,
- mindestens 1 GB Arbeitsspeicher und ausreichend Speicherplatz,
- eine leere Datenbank mit eigenem Benutzerkonto,
- eine eigene Domain oder Subdomain für das Wiki.
Für produktive Installationen empfiehlt das Wiki.js-Projekt PostgreSQL. Welche Versionen aktuell unterstützt werden, steht in den offiziellen Systemanforderungen.
Achtung
Die unterstützten Versionen von Node.js und den Datenbanken können sich ändern. Prüfe deshalb vor einer Neuinstallation immer die aktuellen Systemanforderungen.
1. Systembenutzer und Zielordner anlegen¶
Ein eigener Benutzer begrenzt die Rechte des Wiki-Prozesses. Das folgende Beispiel verwendet /var/wiki als Installationsverzeichnis:
sudo useradd --system --home-dir /var/wiki --shell /usr/sbin/nologin wikijs
sudo mkdir -p /var/wiki
sudo chown wikijs:wikijs /var/wiki
2. Wiki.js herunterladen und entpacken¶
Lade das aktuelle Release zunächst in ein temporäres Verzeichnis. Danach wird das Archiv direkt in den endgültigen Zielordner entpackt:
cd /tmp
wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz
sudo tar xzf wiki-js.tar.gz -C /var/wiki
sudo chown -R wikijs:wikijs /var/wiki
Tipp
In sicherheitskritischen Umgebungen sollte das Archiv vor dem Entpacken anhand der vom Projekt bereitgestellten Prüfsummen oder Release-Informationen kontrolliert werden.
3. Konfiguration vorbereiten¶
Wiki.js liefert eine Beispielkonfiguration mit. Kopiere sie als config.yml und bearbeite anschließend insbesondere Port und Datenbankzugang:
Eine PostgreSQL-Konfiguration kann beispielsweise so aussehen:
port: 3000
db:
type: postgres
host: localhost
port: 5432
user: wikijs
pass: EIN_LANGES_ZUFAELLIGES_PASSWORT
db: wikijs
Die Datenbank und das angegebene Datenbankkonto müssen bereits existieren. Weitere Optionen erklärt die offizielle Konfigurationsreferenz.
Achtung: Zugangsdaten schützen
Die Datei config.yml enthält üblicherweise das Datenbankpasswort. Beschränke deshalb den Zugriff auf den Dienstbenutzer:
Nur wenn SQLite verwendet wird, müssen zusätzlich dessen native Bindings im Installationsordner neu gebaut werden:
Für den produktiven Betrieb ist PostgreSQL die bessere Wahl.
4. Ersteinrichtung auf einem Headless-Server¶
Wiki.js 2.x stellt nach aktuellem Stand keinen offiziell dokumentierten CLI-Befehl bereit, der den ersten Administrator vollständig im Terminal anlegt. Der gelegentlich genannte Aufruf ist deshalb nicht Bestandteil dieser Anleitung:
Auf einer Maschine ohne grafische Oberfläche wird der Einrichtungsassistent stattdessen sicher über einen SSH-Tunnel aufgerufen. Setze den Host in config.yml zunächst auf die lokale Schnittstelle:
Starte Wiki.js anschließend auf dem Server:
Öffne auf deinem eigenen Rechner ein zweites Terminal und leite den lokalen Port 3000 verschlüsselt zum Server weiter:
Solange die SSH-Verbindung besteht, erreichst du den Assistenten im lokalen Browser unter http://127.0.0.1:3000. Dort legst du das erste Administratorkonto an. Der Setup-Port muss dafür weder öffentlich freigegeben noch vor Abschluss der Ersteinrichtung einem Reverse Proxy ausgesetzt werden. Mehr zu Local Forwarding und weiteren Tunnel-Varianten: SSH-Tunnel: Portweiterleitung über SSH.
Achtung: Keine inoffiziellen Setup-Befehle automatisieren
Ein nicht vorhandener CLI-Aufruf bricht mit einem Modulfehler ab und richtet kein Administratorkonto ein. Auch direkte Änderungen an den Wiki.js-Datenbanktabellen sind keine stabile Automatisierungsschnittstelle. Verwende für reproduzierbare Installationen die offizielle Bereitstellungsanleitung und schließe die einmalige Kontoanlage über den geschützten Web-Assistenten ab.
5. Ersten Start testen¶
Starte Wiki.js zunächst im Vordergrund. So werden Konfigurations- oder Datenbankfehler direkt im Terminal sichtbar:
Sobald der Start erfolgreich war, öffne im Browser http://SERVER-IP:3000 beziehungsweise die konfigurierte Domain und führe den Einrichtungsassistenten aus. Auf einem Headless-Server verwendest du dafür den zuvor beschriebenen SSH-Tunnel. Beende den Testlauf danach mit ++ctrl+c++, bevor der dauerhafte Dienst gestartet wird.
6. systemd-Dienst einrichten¶
Lege die Datei /etc/systemd/system/wikijs.service mit folgendem Inhalt an:
[Unit]
Description=Wiki.js
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=wikijs
Group=wikijs
WorkingDirectory=/var/wiki
Environment=NODE_ENV=production
ExecStart=/usr/bin/node server
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Danach liest systemd die neue Definition ein. Der zweite Befehl aktiviert den automatischen Start und startet Wiki.js sofort:
Status und Protokollausgaben lassen sich so kontrollieren:
Hinweis zum Node.js-Pfad
/usr/bin/node ist ein häufig verwendeter Pfad, aber nicht auf jedem System korrekt. Zeigt command -v node einen anderen Speicherort, muss ExecStart entsprechend angepasst werden.
7. Netzwerk und Reverse Proxy¶
Wiki.js kann selbst Anfragen annehmen. Für eine öffentliche Installation ist dennoch meist ein Reverse Proxy wie Nginx, Caddy oder Apache sinnvoll, insbesondere für HTTPS und eine saubere Domain-Konfiguration.
Wiki.js wird auf einer eigenen Domain oder Subdomain betrieben, zum Beispiel wiki.wissen-ahrensburg.de. Ein Betrieb in einem Unterpfad wie example.org/wiki wird nicht unterstützt.
Beispielkonfiguration für /etc/nginx/conf.d/wikijs.conf mit Let's-Encrypt-Zertifikat (siehe Nginx & SSL zur Zertifikatsbeschaffung mit Certbot):
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name wiki.wissen-ahrensburg.de;
ssl_certificate /etc/letsencrypt/live/wissen-ahrensburg.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/wissen-ahrensburg.de/privkey.pem;
location / {
proxy_pass http://127.0.0.1:3000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
server {
listen 80;
listen [::]:80;
server_name wiki.wissen-ahrensburg.de;
return 301 https://$host$request_uri;
}
Tipp
Statt der TCP-Verbindung über 127.0.0.1:3000 lässt sich Nginx auch über einen Unix-Socket an Wiki.js anbinden — siehe Nginx über Unix-Socket anbinden.
Wiki.js dauerhaft vor direktem Internetzugriff schützen¶
Das bindIP: 127.0.0.1 aus Schritt 4 sollte nicht nur für die Ersteinrichtung gelten, sondern dauerhaft so bleiben:
Damit lauscht Wiki.js ausschließlich auf localhost — von außen ist Port 3000 grundsätzlich unerreichbar, unabhängig von jeder Firewall-Regel. Nginx läuft auf demselben Host und erreicht Wiki.js weiterhin problemlos über 127.0.0.1:3000 (oder über den in Nginx über Unix-Socket anbinden beschriebenen Unix-Socket).
Nach einer Änderung an config.yml den Dienst neu starten:
Zusätzlich als zweite, unabhängige Absicherungsebene (falls bindIP versehentlich wieder auf 0.0.0.0 gestellt wird): Port 3000 nie in der Firewall freigeben, sondern ausschließlich HTTP/HTTPS für Nginx erlauben.
Die explizite deny-Regel ist bei UFWs Standardrichtlinie (default deny incoming) zwar redundant, macht die Absicht aber in ufw status sichtbar und dokumentiert sie selbsterklärend. Details zu UFW: UFW-Firewall installieren und steuern.
Für spätere administrative Zugriffe direkt auf Port 3000 (z. B. Fehlersuche ohne Nginx) eignet sich statt einer Portfreigabe weiterhin ein SSH-Tunnel.
Kurzprüfung¶
Wenn der Dienst aktiviert und aktiv ist und der HTTP-Aufruf eine Antwort liefert, läuft die Anwendung. Danach sollten noch HTTPS, Firewall, Backups und regelmäßige Updates eingerichtet werden.
Quellen und weiterführende Informationen¶
- Wiki.js: Installation unter Linux – technische Ausgangsbasis dieser eigenständig formulierten Anleitung
- Wiki.js: Systemanforderungen
- Wiki.js: Konfigurationsreferenz
- Wiki.js-Agenten-Pipeline – automatisierte Inhaltspflege über die GraphQL-API
- UFW-Firewall installieren und steuern
- SSH-Tunnel: Portweiterleitung über SSH
- Dokumentationsübersicht
Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).