Files
homelab/services/wikijs/README.md
T
x3 4a55944aa8 Homelab-Dokumentation und Konfigurationsvorlagen
Dokumentation aus dem Wiki uebernommen und um die Dienste auf dem Server
erweitert. Alle Anleitungen sind so geschrieben, dass sich der jeweilige
Dienst allein daraus neu aufsetzen laesst.

docs/      Dienste im Heimnetz (aus dem Wiki, anonymisiert)
services/  Dienste auf dem Server mit Konfigurationsvorlagen
           - matrix-synapse: Homeserver, Postgres, Well-Known-Delegation
           - coturn:         TURN-Relay fuer Anrufe
           - element-web:    Web-Client
           - wikijs, gitea, nginx

Durchgehend anonymisiert: echte Domain durch example.com ersetzt, IP-Adressen
und E-Mail-Adressen durch Platzhalter. Konfigurationsdateien liegen nur als
.example mit Platzhaltern statt echter Secrets vor.

Die Anleitungen halten die Stolpersteine fest, die beim Aufbau tatsaechlich
aufgetreten sind, unter anderem:
- Synapse verlangt LC_COLLATE=C, sonst startet es nicht
- server_name ist nachtraeglich nicht aenderbar -> Delegation noetig
- register_new_matrix_user liest conf.d nicht, Secret muss per -k kommen
- coturn braucht external-ip, sonst kommen keine Medien durch
- Gruppenmitgliedschaft fuer den Zertifikatszugriff wirkt erst beim Neustart
- nginx vererbt add_header nicht in location-Bloecke mit eigenen Direktiven
2026-08-31 17:56:02 +00:00

132 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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=<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 |