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
This commit is contained in:
@@ -0,0 +1,131 @@
|
||||
# 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 |
|
||||
Reference in New Issue
Block a user