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
132 lines
3.1 KiB
Markdown
132 lines
3.1 KiB
Markdown
# 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 |
|