Files
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

3.1 KiB
Raw Permalink Blame History

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