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
3.1 KiB
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
sudo apt-get install -y nodejs npm postgresql
node --version # Wiki.js 2.x braucht Node 18 oder neuer
2. Datenbank
sudo -u postgres psql <<'SQL'
CREATE ROLE wikijs LOGIN PASSWORD 'HIER-EIN-STARKES-PASSWORT';
CREATE DATABASE wiki OWNER wikijs;
SQL
3. Installation
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:
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:
[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
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:
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:
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 |