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:
x3
2026-08-31 17:56:02 +00:00
commit 4a55944aa8
32 changed files with 1848 additions and 0 deletions
+11
View File
@@ -0,0 +1,11 @@
# Anleitungen
Schritt-für-Schritt-Anleitungen zu den Diensten im Heimnetz.
- [Homepage](homepage.md)
- [AdGuard](adguard.md)
- [Jellyfin & ARR-Stack](jellyfin-arr.md)
- [Paperless](paperless.md)
- [Vaultwarden](vaultwarden.md)
- [Netdata](netdata.md)
- [Gitea: Projekt hochladen](gitea-projekt-hochladen.md)
+32
View File
@@ -0,0 +1,32 @@
## AdGuard - Anleitung
**AdGuard** blockt Werbung und Tracker zentral über DNS. So richtest du ihn ein und nutzt ihn im Alltag.
### Aufsetzen unter Portainer
1. Lege in Portainer einen **Stack** mit dem Namen `adguard` an.
2. Füge den AdGuard-Container hinzu. Wichtig ist, dass er einen **DNS-Port** (Standard 53) und ein **Weboberflächen-Port** bereitstellt.
3. Konfiguriere die **Adressen**, auf denen AdGuard laufen soll. Für das gesamte Netz sollte AdGuard auf der Netzwerkadresse erreichbar sein.
4. Starte den Stack und öffne die Weboberfläche, um das Admin-Passwort beim ersten Start zu setzen.
### Einrichtung der Filter
1. Öffne die Weboberfläche von AdGuard.
2. Aktiviere eine oder mehrere **Filterlisten** für Werbung und Tracker. Es gibt öffentliche Listen, die ständig gepflegt werden.
3. Prüfe anschließend in der Statistik-Ansicht, wie viele Anfragen tatsächlich blockiert werden.
### Geräte anbinden
Damit der Schutz greift, müssen die Geräte AdGuard als DNS-Server verwenden:
- Im **Router**: Trage die Adresse von AdGuard als DNS-Server ein. Dann ist das komplette Netz abgedeckt.
- **Pro Gerät**: In den Netzwerkeinstellungen des Geräts die DNS-Adresse manuell setzen.
### Tägliche Nutzung
- Die **Statistik** zeigt blockierte Anfragen und die meistgenutzten Domains.
- In den **Protokollen** sieht man, welche Anfragen blockiert wurden und kann Ausnahmen hinzufügen.
### Stolperfalle
Wenn eine Website nicht mehr richtig lädt, liegt es oft an der DNS-Umleitung. Leere/blockierte Antworten kann man in der Regel per **Ausnahme-Liste (Whitelist)** leicht beheben.
@@ -0,0 +1,82 @@
# Gitea: Projekt hochladen & als „GitHub-Seite“ nutzen
In Gitea (https://git.example.com) lässt sich ein Projekt genauso verwalten wie
auf GitHub: Du legst ein Repository an, pusht lokale Änderungen und nutzt die
README als Projekt-Startseite.
---
## 1. Repository in Gitea anlegen
1. In Gitea einloggen (https://git.example.com).
2. Rechts oben auf das **+** bzw. **Neues Repository** klicken.
3. Werte einstellen:
- **Name:** z. B. `ftptui`
- **Sichtbarkeit:** öffentlich/private (nach Bedarf)
- **README initialisieren:** aktiv (optional)
4. **Repository erstellen** klicken.
Das Repo ist jetzt unter `https://git.example.com/<benutzer>/<name>` erreichbar.
---
## 2. Lokal einrichten & hochladen (Push)
### Variante A: Neues Projekt, bereits existierendes Repo klonen
```bash
git clone https://git.example.com/<benutzer>/<name>.git
cd <name>
# ... Dateien hinzufügen ...
git add -A
git commit -m "Erster Commit"
git push
```
### Variante B: Bestehendes lokales Projekt anbinden
```bash
cd /pfad/zum/projekt
git init
git add -A
git commit -m "Erster Commit"
git branch -M main
git remote add origin https://git.example.com/<benutzer>/<name>.git
git push -u origin main
```
> Aus der `shell`-Umgebung von `example.com` ist das Repo auch per **SSH**
> erreichbar: `<E-MAIL>:<benutzer>/<name>.git`
> (vorher unter **Einstellungen → SSH-Schlüssel** einen öffentlichen Schlüssel hinterlegen).
---
## 3. README als Projekt-Startseite
Die `README.md` im Stammverzeichnis des Repos wird auf der Projektseite in Gitea
automatisch gerendert genau wie die Projektseite bei GitHub. Diese Repo-Seite
folgt dabei **Markdown**.
### README minimal aufbauen
```markdown
# Projektname
> Kurzbeschreibung in einem Satz.
## Funktionsumfang
- ...
## Installation
```bash
pip install .
```
## Verwendung
```bash
projektbefehl
```
## Lizenz
MIT
```
+21
View File
@@ -0,0 +1,21 @@
## Homepage - Anleitung
Die **Homepage** ist das Dashboard, über das ich alle Dienste im Homelab erreiche. Hier die Kurzanleitung zum Einrichten und Verwenden.
### Aufsetzen unter Portainer
1. Lege in Portainer einen neuen **Stack** an und nenne ihn etwa `homepage`.
2. Füge die Container-Definition für ein Dashboard wie Homepage hinzu. Es reicht ein einzelner Dienst, der die Startseite bereitstellt.
3. Vergib einen **Namen** und einen **Port**, über den die Seite erreichbar ist.
4. Trage die **Adressen der einzelnen Dienste** als Kacheln ein - so werden alle Dienste auf der Startseite sichtbar.
5. Starte den Stack und prüfe, ob die Seite unter der eingegebenen Adresse erreichbar ist.
### Tägliche Nutzung
- **Dienst aufrufen:** Ein Klick auf die Kachel öffnet den jeweiligen Dienst.
- **Status erkennen:** Viele Dashboards zeigen an, ob ein Dienst gerade verfügbar ist oder nicht.
### Tipps zur Wartung
- Nach dem Hinzufügen eines neuen Dienstes im Homelab die Kachel in der Konfiguration ergänzen.
- Die Konfigurationsdatei des Dashboards lässt sich in Portainer direkt im Stack ansehen und anpassen.
+38
View File
@@ -0,0 +1,38 @@
## Jellyfin & ARR-Stack - Anleitung
Hier geht es um Jellyfin als Media-Server und die Automatisierung mit den "ARR"-Diensten. So baust du den Stack auf und pflegst ihn.
### Aufsetzen unter Portainer
1. Lege in Portainer einen **Stack** an, zum Beispiel `media`.
2. Füge die Dienste hinzu, die du brauchst. Als Grundgerüst sind das:
- **Jellyfin** als Media-Server
- **Sonarr** für Serien, **Radarr** für Filme
- Dazu ein paar Helfer, die Downloads koordinieren und die Dateien sortieren
3. Wichtig: Richte **gemeinsame Ordner** ein (z.B. für Filme, Serien, Downloads), damit alle Dienste auf dieselben Dateien zugreifen. Sonst funktioniert die Automatisierung nicht.
4. Starte den Stack und richte jeden Dienst einmalig über seine Weboberfläche ein (Benutzer, Qualität, Zielordner).
### Die Verbindung der Dienste
Damit das Zusammenspiel läuft, müssen die Dienste miteinander sprechen:
1. Öffne die Weboberfläche von **Sonarr/Radarr**.
2. Trage dort die **Download-Client-Daten** und die **Zielordner** ein.
3. Richte die **Indexer** (Quellen für Filme und Serien) ein.
4. Verbinde Sonarr/Radarr mit deiner **Medienbibliothek** von Jellyfin, damit neue Inhalte automatisch auftauchen.
### Inhalte verwalten
- **Serie hinzufügen:** In Sonarr die Serie suchen und auf "Hinzufügen" klicken. Neue Folgen werden automatisch übernommen.
- **Film hinzufügen:** In Radarr dasselbe für Filme.
- **Bibliothek prüfen:** In Jellyfin erscheinen neue Inhalte nach kurzer Zeit automatisch im richtigen Bereich.
### Wartung
- **Speicherplatz im Auge behalten** - eine umfangreiche Bibliothek braucht schnell viel Platz.
- **Qualität prüfen:** Die ARR-Dienste können ältere, minderwertige Einträge automatisch durch bessere Versionen ersetzen, sobald sie verfügbar sind.
- **Backups:** Ein Backup der Konfiguration der einzelnen Dienste ist sinnvoll, damit du bei einem Neuaufbau nicht alles von vorne einrichtest.
### Typisches Problem und Lösung
*Ein neuer Eintrag taucht nicht in Jellyfin auf.* Meist liegt es an den **Zielordnern** (Pfad-Mapping). Prüfe, ob alle Dienste auf dieselben Ordner zugreifen und die Pfade in Sonarr/Radarr zu den Pfaden in Jellyfin passen.
+32
View File
@@ -0,0 +1,32 @@
## Netdata - Anleitung
**Netdata** überwacht deine Systeme in Echtzeit. So richtest du es ein und liest die wichtigsten Kennzahlen.
### Aufsetzen unter Portainer
1. Lege in Portainer einen **Stack** mit dem Namen `netdata` an.
2. Füge den Netdata-Container hinzu. Damit er die Systeme sehen kann, muss er Zugriff auf die **Host-System**-Werte bekommen (Prozesse, Netzwerk, Festplatten).
3. Vergib einen **Port** für die Weboberfläche.
4. Starte den Stack und öffne die Webansicht.
### Die Ansicht verstehen
- **Dashboard:** Netdata zeigt eine lange, scrollbare Reihe von Diagrammen für jede Kennzahl.
- **Ein Klick auf ein Diagramm** zoomt hinein und zeigt die Details.
- **Warnungen:** Netdata kann Schwellwerte definieren und eine Meldung zeigen, wenn zum Beispiel die CPU-Last oder der Speicher extrem hoch ist.
### Wichtige Kennzahlen
- **CPU und RAM:** Sieht man schnell, ob ein Dienst das System auslastet.
- **Netzwerk:** Datenverkehr der einzelnen Interfaces.
- **Festplatten:** Auslastung und Zugriffsraten.
- **Applikationen/Container:** Ob ein bestimmter Dienst reagiert und wie viel er verbraucht.
### Als Monitoring für den Alltag
- Nutze die **Alarm-Regeln**, um per Benachrichtigung informiert zu werden, statt ständig selbst zu schauen.
- Wenn du Veränderungen am Homelab machst, siehst du direkt im Dashboard, ob etwas spürbar ansteigt (z.B. mehr Speicher oder CPU).
### Hinweis
Netdata zeigt die Zustände **live** an - es geht hier um den Moment und die letzten Stunden. Für langfristige Verläufe über Wochen oder Monate brauchst du zusätzlich ein eigenes Speichersystem, falls dir das irgendwann wichtig ist.
+36
View File
@@ -0,0 +1,36 @@
## Paperless - Anleitung
Mit **Paperless** organisierst du Dokumente digital, inklusive automatischer Texterkennung. So richtest du es ein und nutzt es im Alltag.
### Aufsetzen unter Portainer
1. Lege in Portainer einen **Stack** mit dem Namen `paperless` an.
2. Füge den Paperless-Container hinzu. Er benötigt einen **Ordner für eingehende Dokumente** (Consume) und einen für die archivierten Dateien, damit die Ablage sauber getrennt ist.
3. Wichtig: Richte eine **Datenbank** ein (z.B. PostgreSQL), in der Paperless die Metadaten speichert. Die eigentlichen Dokumente liegen in den Datei-Ordnern.
4. Starte den Stack und öffne die Weboberfläche, um dich mit dem Admin-Account anzumelden.
### Dokumente einwerfen
1. Lege ein Dokument (PDF, Scan) in den **Eingangsordner** (Consume-Ordner).
2. Paperless erkennt den Text automatisch (OCR) und sortiert das Dokument in die Ablage ein.
3. Nach kurzer Zeit ist das Dokument in der Oberfläche verfügbar und durchsuchbar.
### Dokumente organisieren
- **Tags vergeben:** Vergib Tags wie "Rechnung", "Vertrag" oder "Kontoauszug", damit du klar filtern kannst.
- **Korrespondenten:** Ordne Dokumente einem Absender zu (z.B. deinem Stromanbieter).
- **Suchen:** Die Volltextsuche findet Dokumente auch nach Textstellen im Inneren.
### Berechtigungen und Zugriff
Bei Paperless lassen sich **Benutzer und Gruppen** einrichten. So können mehrere Personen zugreifen, ohne dass alle Dokumente offen sind:
- Lege Benutzer an und weise ihnen die passenden Rechte zu.
- Dokumente können mit Sicht- und Bearbeitungsrechten versehen werden.
Für "nur zur Sicht" kannst du Benutzer so anlegen, dass sie Dokumente nur **lesen**, aber nicht verändern oder löschen können.
### Wartung
- Achte darauf, dass regelmäßig **Backups** der Datenbank und der Dokumenten-Ordner gemacht werden - Dokumente sind schließlich wertvoll.
- Leere den Eingangsordner nach der Verarbeitung, damit nichts doppelt oder gar nicht verarbeitet wird.
+32
View File
@@ -0,0 +1,32 @@
## Vaultwarden - Anleitung
**Vaultwarden** ist dein eigener Passwortmanager auf deiner Hardware. So richtest du ihn ein und nutzt ihn sicher.
### Aufsetzen unter Portainer
1. Lege in Portainer einen **Stack** mit dem Namen `vaultwarden` an.
2. Füge den Vaultwarden-Container hinzu. Er braucht ein **Datenverzeichnis**, in dem die verschlüsselte Datenbank und die Schlüssel abgelegt werden.
3. Vergib einen **Zugang über HTTPS**, damit die Verbindung verschlüsselt ist (z.B. über einen Reverse Proxy wie Nginx). Ein Passwortmanager sollte niemals unverschlüsselt über das Netz erreichbar sein.
4. Starte den Stack und öffne die Weboberfläche.
### Erste Schritte
1. **Registrierung öffnen:** Beim ersten Aufruf kannst du einen Administrator-Account anlegen. Dieser Account ist ausschließlich für die Verwaltung gedacht.
2. **Admin-Bereich schon schützen:** In der Konfiguration kann ein separates Admin-Token gesetzt werden. Aktiviere das, damit nicht jeder die Verwaltung öffnen kann.
3. **Registrierung nach Einrichtung deaktivieren:** Sobald alle Benutzer angelegt sind, die Registrierung in der Konfiguration ausschalten, damit keine fremden Accounts entstehen können.
### Tägliche Nutzung
- **Passwörter speichern:** Lege Einträge für Logins, Notizen oder Karten an.
- **Passwortgenerator:** Direkt in Vaultwarden starke, einzigartige Passwörter erzeugen lassen.
- **Browser und Handy:** Mit der passenden App oder Browser-Erweiterung greifst du von überall auf deinen Tresor zu.
### Sicherheitsempfehlungen
- **Starkes Hauptpasswort:** Es schützt den gesamten Tresor - wähle es mit Bedacht.
- **Backups:** Der Datenordner enthält deinen gesamten Tresor. Sichere ihn regelmäßig, damit du bei einem Ausfall nichts verlierst.
- **2-Faktor-Authentifizierung** (falls gewünscht) für den Bereich nutzen, in dem sensible Daten liegen.
### Stolperfalle
Wenn sich die App nicht verbinden kann, liegt es fast immer an der **erzwungenen HTTPS-Verbindung** oder an einem falsch konfigurierten Reverse Proxy. Prüfe hier zuerst, bevor du woanders suchst.