# Wiki.js Wiki mit PostgreSQL-Backend, betrieben als systemd-Dienst hinter nginx. | Punkt | Wert | |---|---| | Software | Wiki.js 2.x (Node.js) | | Öffentlich | `https://wiki.example.com` | | Interner Port | `127.0.0.1:3000` | | Datenbank | PostgreSQL (`wiki`) | | Verzeichnis | `/opt/wikijs` | ## 1. Voraussetzungen ```bash sudo apt-get install -y nodejs npm postgresql node --version # Wiki.js 2.x braucht Node 18 oder neuer ``` ## 2. Datenbank ```bash sudo -u postgres psql <<'SQL' CREATE ROLE wikijs LOGIN PASSWORD 'HIER-EIN-STARKES-PASSWORT'; CREATE DATABASE wiki OWNER wikijs; SQL ``` ## 3. Installation ```bash sudo mkdir -p /opt/wikijs && cd /opt/wikijs sudo curl -fLO https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz sudo tar xzf wiki-js.tar.gz sudo rm wiki-js.tar.gz sudo cp config.sample.yml config.yml ``` `config.yml` anpassen: ```yaml port: 3000 bindIP: 127.0.0.1 # nur lokal; TLS macht nginx db: type: postgres host: localhost port: 5432 user: wikijs pass: HIER-DAS-DATENBANK-PASSWORT db: wiki ``` `bindIP: 127.0.0.1` ist wichtig – sonst ist Wiki.js unter Port 3000 direkt aus dem Internet erreichbar, am Reverse Proxy und dessen TLS vorbei. ## 4. systemd-Unit Nach `/etc/systemd/system/wikijs.service`: ```ini [Unit] Description=Wiki.js After=network.target postgresql.service Wants=postgresql.service [Service] Type=simple User=wikijs Group=wikijs WorkingDirectory=/opt/wikijs ExecStart=/usr/bin/node server Restart=on-failure RestartSec=10 Environment=NODE_ENV=production NoNewPrivileges=true ProtectSystem=full ReadWritePaths=/opt/wikijs [Install] WantedBy=multi-user.target ``` ```bash sudo systemctl daemon-reload sudo systemctl enable --now wikijs sudo journalctl -u wikijs -f ``` ## 5. Ersteinrichtung `https://wiki.example.com` öffnen und Administrationskonto anlegen. Danach unter **Administration → Groups → Guests** prüfen, welche Rechte nicht angemeldete Besucher haben – standardmäßig dürfen sie lesen. ## 6. Sicherung Der gesamte Inhalt liegt in PostgreSQL: ```bash sudo -u postgres pg_dump -Fc wiki > wiki-$(date +%F).dump ``` Zusätzlich `config.yml` sichern. Hochgeladene Dateien liegen je nach Einstellung in der Datenbank oder unter `/opt/wikijs/data`. ## Inhalte exportieren Für eine Übernahme in ein Git-Repository lassen sich die Seiten direkt aus der Datenbank holen: ```bash sudo -u postgres psql -d wiki -t -A -F'|' \ -c "SELECT id, path, title FROM pages ORDER BY id;" sudo -u postgres psql -d wiki -t -A \ -c "SELECT content FROM pages WHERE id=;" > seite.md ``` Wiki.js kann Inhalte auch fortlaufend nach Git spiegeln (**Administration → Storage → Git**). Das ist der bessere Weg, wenn die Dokumentation dauerhaft versioniert werden soll. ## Stolpersteine | Symptom | Ursache | |---|---| | Wiki direkt über Port 3000 erreichbar | `bindIP` nicht auf `127.0.0.1` gesetzt | | Start bricht ab | Datenbank nicht erreichbar oder falsches Passwort | | Nach Update fehlen Inhalte | `config.yml` beim Austausch überschrieben | | Wiki öffentlich lesbar | Rechte der Gruppe „Guests“ nicht eingeschränkt |