Files
Homelab--Bratonein-Kontroll…/Kapitel 10/Free Rhohtext.md

273 lines
12 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Kapitel 10 n8n (Free)
## Einleitung
Mit dem Tool **n8n** (gesprochen: „nn“) führst du eine zentrale Komponente für Automatisierungen in dein UCC-System ein. Das Ziel ist, wiederkehrende Aufgaben wie Erinnerungen, Uploads oder Social-Media-Posts nicht manuell erledigen zu müssen sondern automatisiert, nachvollziehbar und kontrolliert im Hintergrund ablaufen zu lassen.
n8n ist eine sogenannte Low-Code-Automatisierungsplattform. Du erstellst Abläufe („Workflows“) visuell, indem du vordefinierte Funktionen sogenannte „Nodes“ miteinander verbindest. Es gibt Nodes für Zeitpläne, HTTP-Requests, Datenbanken, Social Media, Kalender, E-Mail, Twitch, Discord und viele weitere Dienste. Gleichzeitig kannst du eigene JavaScript-Logik ergänzen, wenn du mehr Kontrolle brauchst.
Im Gegensatz zu externen Diensten wie Zapier, Make oder IFTTT läuft n8n vollständig lokal in einem eigenen Container auf deinem Server. Das bedeutet:
- keine Daten verlassen dein Netzwerk,
- keine Anmeldung oder Drittanbieter-Abhängigkeit,
- keine Einschränkungen bei der Anpassung.
[!NOTE]
Wir verwenden in diesem Tutorial ausschließlich die kostenfreie **Community Edition** von n8n. Diese wird lokal installiert, läuft dauerhaft im eigenen Container und stellt alle für den Einstieg relevanten Funktionen bereit.
Dieses Kapitel behandelt ausschließlich die Grundlagen:
- Installation von n8n auf einem dedizierten Ubuntu-Container,
- Konfiguration und Start als systemweiter Dienst,
- Integration über Nginx Proxy Manager mit Subdomain und HTTPS,
- Erstellung eines ersten produktiven Workflows (Stream-Reminder + Social Post).
Das hier erstellte Setup bildet die technische Basis für spätere Erweiterungen, z.B. das automatische Auslesen von Twitch-Kalenderdaten (ICS-Dateien), das Erzeugen und Planen von Social-Media-Inhalten oder automatisierte Uploads in deine Nextcloud. Diese folgen im Premium-Kapitel.
Wie immer setzen wir kein technisches Vorwissen voraus. Alles, was du für dieses Kapitel brauchst, hast du in den vorherigen Schritten bereits eingerichtet: Proxmox, LXC, Proxy, Domain und grundlegende Netzwerkstruktur. Wenn du diesen Abschnitt erfolgreich abgeschlossen hast, kannst du erste Automatisierungen vollständig eigenständig umsetzen mit deinem eigenen System und ohne Drittanbieter.
---
## Voraussetzungen & Ressourcen
Bevor du mit der Installation von n8n beginnst, solltest du sicherstellen, dass dein System korrekt vorbereitet ist. In diesem Abschnitt definieren wir die nötigen Ressourcen für den LXC-Container und klären, welche technischen Voraussetzungen erfüllt sein müssen, damit alle späteren Schritte funktionieren.
### Container-Ressourcen
Für den n8n-Container legen wir folgende Ausstattung fest:
* **CPU: 2 vCPUs**
Zwei virtuelle Prozessoren reichen für die Ausführung typischer n8nWorkflows im Hintergrund.
Falls du später viele parallele Abläufe oder aufwendige API-Abfragen nutzen möchtest, kannst du die CPU-Zahl bei Bedarf erhöhen.
* **RAM: 2 GB**
Der Node.js-Prozess von n8n benötigt vergleichsweise wenig Arbeitsspeicher.
Mit 2 GB läuft das System auch bei mehreren gleichzeitig aktiven Workflows stabil.
Nur bei sehr großen Datenverarbeitungen (z.B. viele gleichzeitige Uploads oder komplexe Datenmanipulationen) kann mehr RAM sinnvoll sein.
* **Speicherplatz: 10 GB**
Dieser Platz reicht für die Grundinstallation, Logdateien und temporäre Workflow-Daten.
Da n8n keine großen Medien speichert, ist der Speicherbedarf überschaubar.
Wenn du viele eigene Skripte oder große JSON-Daten verarbeitest, kannst du den Container später vergrößern.
* **Betriebssystem: Ubuntu 24.04 LTS (64Bit)**
Wir setzen hier auf Ubuntu, da es moderne Pakete für Node.js bereitstellt und sich gut für die manuelle Installation eignet.
Zudem verwenden wir Node.js ≥ 18.x, was unter Ubuntu besonders gut unterstützt wird.
* **Netzwerk: Feste IP-Adresse per DHCP-Reservierung**
Wie in Kapitel 1 beschrieben, richtest du im Router eine DHCP-Reservierung für den Container ein.
So bleibt er immer unter derselben Adresse erreichbar und kann später korrekt im Proxy Manager eingebunden werden.
[!TIP]
Plane beim Erstellen des Containers genug Reserven ein auch wenn n8n anfangs wenig verbraucht.
Gerade wenn du das System später für Uploads, VOD-Verarbeitung oder komplexe Kalenderanalysen nutzt, steigen RAM- und CPU-Anforderungen deutlich.
### Technische Voraussetzungen
Dieses Kapitel baut auf der bestehenden UCC-Grundstruktur auf. Folgende Komponenten solltest du bereits eingerichtet haben:
* **Proxmox läuft stabil** (Kapitel 1)
Der LXC-Container für n8n wird direkt dort erstellt und verwaltet.
* **Nginx Proxy Manager ist eingerichtet** (Kapitel 3)
Darüber wird n8n später mit Subdomain, HTTPS und Zertifikat erreichbar gemacht.
* **Domain oder DynDNS-Adresse ist vorhanden** (Kapitel 4)
Für die öffentliche Erreichbarkeit und Let's Encrypt brauchst du eine gültige Subdomain, z.B. `n8n.deinprojekt.de`.
* **Zugriff auf das Container-Terminal**
Du benötigst entweder direkten Zugriff über die Proxmox-Konsole oder per SSH auf den Container.
[!IMPORTANT]
Wenn du n8n nur im lokalen Netzwerk einsetzen möchtest, kannst du den Container auch ohne Domain und HTTPS betreiben. Die Anleitung funktioniert in diesem Fall ebenfalls du musst später lediglich eigene Proxy-Regeln anpassen.
### Software und Versionen
In diesem Kapitel installierst du alle benötigten Komponenten manuell ohne Docker, vollständig nachvollziehbar:
* **Node.js** ab Version 18.x (erforderlich für aktuelle n8n-Releases)
* **npm** Node Package Manager, wird automatisch mit Node.js installiert
* **n8n** Automatisierungstool, wird systemweit per `npm install -g` eingerichtet
* **PM2** Prozessmanager, sorgt für dauerhaften Hintergrundbetrieb und Autostart
Alle Schritte erfolgen in der richtigen Reihenfolge und mit ausführlichen Erklärungen du brauchst keine Vorkenntnisse im Umgang mit Node.js oder JavaScript.
[!TIP]
Die direkte Installation ohne Docker erhöht die Transparenz. Du behältst volle Kontrolle über die Dateien, Logs und Prozesse und kannst das System bei Bedarf gezielt sichern oder migrieren.
---
## Schritt 1 Grundsystem aktualisieren
Bevor wir mit der Installation von n8n beginnen, sorgen wir dafür, dass das Betriebssystem im Container auf dem neuesten Stand ist.
Das ist wichtig, um Fehler durch veraltete Pakete zu vermeiden und eine stabile Grundlage für die weiteren Schritte zu schaffen.
Öffne dazu in Proxmox die **Shell** des n8n-Containers.
Wähle in der linken Seitenleiste den Container aus und klicke auf **Shell**.
👉 Screenshot geeignet: Proxmox Container ausgewählt und Konsole geöffnet
Gib anschließend den folgenden Befehl ein, um alle Paketlisten zu aktualisieren und die verfügbaren Updates zu installieren.
Starte danach den Container neu, damit die Aktualisierungen aktiv werden:
```bash
apt update && apt upgrade -y
reboot
```
[!NOTE]
Führe diesen Schritt auch dann durch, wenn der Container gerade erst erstellt wurde.
Ein aktuelles Grundsystem verhindert spätere Konflikte bei der Installation von Node.js und n8n.
## Schritt 2 Node.js & n8n installieren
Nach dem Update ist das System bereit für die Installation der benötigten Software.
n8n basiert auf Node.js, daher müssen wir zunächst Node.js und den zugehörigen Paketmanager **npm** einrichten.
Anschließend installieren wir n8n selbst sowie den Prozessmanager **PM2**, damit n8n dauerhaft im Hintergrund laufen kann.
### Benutzer wechseln
Wir installieren n8n nicht mit Administrator-Rechten, sondern unter einem eigenen Benutzerkonto.
Melde dich daher mit dem Benutzer an, den du in Schritt 1 erstellt hast:
```bash
su - n8nuser
```
👉 Screenshot geeignet: Konsole Anmeldung als Benutzer `n8nuser`
### Node.js installieren
Zuerst fügen wir das offizielle NodeSource-Repository hinzu, um die aktuelle Version (mindestens 18.x) zu erhalten, und installieren dann Node.js und npm:
```bash
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
```
Prüfe nach der Installation die Versionen:
```bash
node -v
npm -v
```
Die angezeigten Versionsnummern sollten mindestens `v18.x` für Node.js und eine aktuelle npm-Version zeigen.
[!NOTE]
Falls eine deutlich ältere Version angezeigt wird, wiederhole die Installation oder kontrolliere die Repository-Adresse.
### n8n und PM2 installieren
Installiere nun n8n und den Prozessmanager PM2 global über npm:
```bash
sudo npm install -g n8n pm2
```
Mit PM2 stellst du sicher, dass n8n auch nach einem Neustart automatisch startet.
Überprüfe anschließend, ob n8n korrekt installiert wurde:
```bash
n8n --version
```
Die Ausgabe zeigt die aktuell installierte n8n-Version an.
[!TIP]
PM2 sorgt dafür, dass n8n später automatisch als Hintergrunddienst läuft.
Die Konfiguration dafür nehmen wir im nächsten Schritt vor.
## Schritt 3 n8n als Dienst einrichten und starten
Damit n8n nicht nur manuell über die Konsole gestartet werden kann, richten wir den automatischen Start mit **PM2** ein.
So läuft n8n dauerhaft im Hintergrund und wird bei jedem Neustart des Containers automatisch geladen.
### n8n erstmals starten
Starte n8n zunächst einmalig, um sicherzustellen, dass es fehlerfrei läuft:
```bash
n8n
```
Die Konsole zeigt nun Startmeldungen von n8n an und wartet anschließend auf Anfragen.
Beende den Prozess wieder mit der Tastenkombination `Strg + C`.
👉 Screenshot geeignet: Konsole n8n erfolgreich gestartet und wartet auf Anfragen
### PM2 einrichten
Mit PM2 starten wir n8n als Hintergrundprozess:
```bash
pm2 start n8n
```
Damit n8n automatisch beim Systemstart geladen wird, registriere den PM2-Startdienst:
```bash
pm2 startup
sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u n8nuser --hp /home/n8nuser
pm2 save
```
* `pm2 startup` zeigt den notwendigen Befehl für den Autostart an.
* Mit `pm2 save` speicherst du die aktuelle PM2-Prozessliste.
### Dienststatus prüfen
Überprüfe, ob n8n nun im Hintergrund läuft:
```bash
pm2 list
```
Die Ausgabe sollte den Prozess `n8n` mit dem Status **online** anzeigen.
[!NOTE]
Ab diesem Punkt läuft n8n automatisch im Hintergrund und wird bei jedem Neustart des Containers selbstständig gestartet.
## Schritt 4 n8n im Nginx Proxy Manager einbinden
Öffne den **Nginx Proxy Manager** und lege einen neuen Proxy-Host für n8n an.
1) **Anmelden** im NPM-Dashboard
👉 Screenshot geeignet: NPM Dashboard nach Login
2) Klicke auf **Add Proxy Host**
3) Trage im Reiter **Details** folgende Werte ein:
| Feld | Wert / Auswahl |
|--------------------------------|------------------------------------------|
| **Domain Names** | `n8n.deinedomain.tld` |
| **Scheme** | `http` |
| **Forward Hostname / IP** | IP-Adresse des n8n-Containers |
| **Forward Port** | `5678` |
| **Block Common Exploits** | aktivieren |
| **Websockets Support** | aktivieren |
👉 Screenshot geeignet: Formular „Add Proxy Host“ mit IP des n8n-Containers und Port 5678
4) Wechsle zu **SSL** und setze:
| Feld | Einstellung |
|-----------------------------------|----------------------------|
| **Request a new SSL Certificate** | aktivieren |
| **Force SSL** | aktivieren |
| **HTTP/2 Support** | aktivieren |
👉 Screenshot geeignet: SSL-Tab mit aktivierter Option „Force SSL“
5) Klicke **Save**, um den Proxy-Host anzulegen.
Nach wenigen Sekunden ist n8n über die gewählte Subdomain erreichbar, z. B.:
`https://n8n.deinedomain.tld`
👉 Screenshot geeignet: Browser n8n-Anmeldeseite über die Subdomain aufgerufen
[!TIP]
Falls der Zugriff auch von außen möglich sein soll, muss im Router Port 443 auf den NPM-Host weitergeleitet werden.