Kapitel 13/Tutorial.md aktualisiert

This commit is contained in:
2025-08-31 20:21:04 +00:00
parent 923b1f7407
commit 680997f693

View File

@@ -279,24 +279,207 @@ Ersetze `<CLIPPER-IP>` durch die IP/den Hostnamen deines Clipper-LXC (z. B. `10.
---
### Zugangsdaten für Nextcloud-WebDAV erstellen (Weboberfläche)
### Nextcloud SFTP einrichten
> **Ort in Nextcloud**: Avatar (oben rechts) → **Persönliche Einstellungen** → **Sicherheit** → **ganz nach unten** zum Bereich **App-Passwörter**.
WebDAV ist in Nextcloud eingebaut, aber bei großen Dateien wie VODs oft unzuverlässig. Gerade Streams oder lange Aufnahmen können abbrechen.
Darum richten wir hier eine stabile Alternative ein: SFTP mit eigenem Upload-Benutzer.
So landet jedes VOD automatisch in einem eigenen Sammelordner in Nextcloud sauber sortiert, sicher übertragen und sofort sichtbar.
**Anleitung:**
1. Logge dich in den Nextcloud Container per ssh ein:
2. Neuen SFTP-Benutzer anlegen
Mit den folgenden Befehlen legen wir uns den user an, der auf Linuxebene den Upload übernimmt.
Jetzt wird der ein oder andere fragen warum nicht mein Nextclouduser? Die Antwort darauf ist so einfach wie simpel. Wir arbeiten zwar im Nect
Container, aber nicht in Nextcloud, sondern auf Linux. Das heißt wir haben keinen Zugriff auf unseren Nextclouduser.
1. Melde dich in der **Nextcloud-Weboberfläche** an.
2. Gehe zu **Persönliche Einstellungen****Sicherheit**.
3. **Ganz nach unten scrollen** bis zum Abschnitt **App-Passwörter**.
4. Trage bei **App-Name** z. B. `n8n Clipper` ein und klicke auf **Neues App-Passwort erstellen**.
5. Kopiere das **einmalig angezeigte App-Passwort** sofort und notiere zusätzlich deinen **Benutzernamen**.
```bash
useradd -m -s /usr/sbin/nologin sftp_uploader
passwd -l sftp_uploader
```
**WebDAV-URL für n8n/Uploads:**
Damit bekommt er ein Home-Verzeichnis, aber keine Shell. Passwort ist gesperrt wir nutzen gleich Schlüssel.
3. Um eine unkomplizierte Verbindung zu garantieren nutzen wir statt der Passwort abfrage einen SSH Schlüssel. Das erhöht zusätzlich die Sicherheit.
Logge dich hierfür per SSH auf deinem Clipper LXC ein.
Mit `ssh-keygen -t ed25519 -C "sftp_uploader@nextcloud" -f ~/.ssh/nc_sftp_ed25519` erzeugen wir die nötigen Dateien und Schlüssel für die Verbindung.
Wenn du Enter drückst, legt er die Datei standardmäßig im Ordner ~/.ssh/ an.
Wenn nach einer Passphrase gefragt wird, einfach leer lassen (Enter). Damit kann Clipper später automatisiert hochladen.
Da wir den Key gleich benötigen, lässt du ihen dir mit `cat ~/.ssh/nc_sftp_ed25519.pub` anzeigen. Kopiere die gesamte Zeile. Sie sollte mit `ssh-ed25519` beginnen und mit `sftp_uploader@nextcloud enden`.
4. Wechsel nun wieder zurück zum Nextcloud LXC. Dort müssen wir zunächst einen Ordner anlegen in dem die Daten empfangen werden können.
Dies machen wir mit
```bash
sudo -u sftp_uploader mkdir -p ~sftp_uploader/.ssh
```
Mit dem nächsten Befehl legen wir entsprechend eine Datei die den erzeugten Schlüssel enthält.
```bash
nano /home/sftp_uploader/.ssh/authorized_keys
```
Füge die voerher kopierte Zeile ein, speichere die Datei mit `STRG + O ` ab und verlasse den Editor mit `STRG + X`.
Als nächstes gibst du
```bash
sudo chown -R sftp_uploader:sftp_uploader /home/sftp_uploader/.ssh
sudo chmod 700 /home/sftp_uploader/.ssh
sudo chmod 600 /home/sftp_uploader/.ssh/authorized_keys
```
ein. Hierdurch werden die Rechte korrekt gesetzt und die SFTP Verbindung wäre bereits möglich.
Als letztes müssen wir nur noch dafür sorgen, dass der Login fehlerfrei durchläuft. Öffne hierzu die `sshd_config` mit `nano /etc/ssh/sshd_config`.
Suche nach
`Subsystem sftp /usr/lib/openssh/sftp-server`
und ersetze sie mit
`Subsystem sftp internal-sftp`.
Nach dem Speicher mit `STRG + O` kannst du die Datei einfach mit `STRG + X` schließen und mit
`systemctl restart ssh`
ssh neustarten. Jetzt sind wir bereit für den ersten Test der Verbindung.
`sftp -i ~/.ssh/nc_sftp_ed25519 sftp_uploader@<IP_des_Nextcloud_LXC>` sollte
```bash
Connected to 192.168.51.2.
sftp>
```
anzeigen. Mit `quit`beendst du die Verbindung wieder.
Leider reicht dies jedoch noch nicht ganz und wir müssen ein paar weitere Schritte unternehmen.
5. Wir wären in der Lage jetzt bereits über die SFTP Verbindung Dateien zu senden. Allerdings würden sie nicht sichtbar für uns sein. Daher müssen wir zunächst einen weiteren User anlegen, der die Indizierung in der Nextcloud anstoßen darf.
Im Großen und Ganzen gehen wir zunächst genauso vor wie beim letzten User.
Logge dich hierzu zunächst wieder per ssh in deinen Nextcloud LXC ein.
```bash
ssh root@<IP_des_Nextcloud_LXC>
```
Dort legen wir nun unseren neuen Benutzer `nc_runner` an. Im Gegensatz zum SFTP Benutzer bekommt er diesmal eine Shell, damit er später auch Befehle ausführen kann. Ein Passwort vergeben wir trotzdem nicht, da wir wieder mit einem Schlüssel arbeiten werden.
```bash
useradd -m -s /bin/bash nc_runner
passwd -l nc_runner
```
Damit ist der Benutzer erstellt und bereit für den nächsten Schritt.
Nun wechseln wir auf unseren Clipper LXC. Dort erzeugen wir für den neuen Benutzer ein Schlüsselpaar, das für die Verbindung genutzt wird.
```bash
ssh-keygen -t ed25519 -C "nc_runner@nextcloud" -f ~/.ssh/nc_runner_ed25519
```
Wenn du Enter drückst, legt er die Datei standardmäßig im Ordner `~/.ssh/` an.
Wenn nach einer Passphrase gefragt wird, einfach leer lassen (Enter). Damit kann später n8n automatisiert die Indizierung auslösen.
Lasse dir nun den Public Key anzeigen und kopiere die gesamte Zeile.
```bash
cat ~/.ssh/nc_runner_ed25519.pub
```
Sie sollte mit `ssh-ed25519` beginnen und mit `nc_runner@nextcloud` enden.
Wechsel nun wieder zurück in den Nextcloud LXC. Dort legen wir auch für diesen Benutzer den `.ssh` Ordner an und tragen den eben kopierten Schlüssel in die `authorized_keys` Datei ein.
```bash
sudo -u nc_runner mkdir -p /home/nc_runner/.ssh
nano /home/nc_runner/.ssh/authorized_keys
```
Füge die kopierte Zeile ein, speichere die Datei mit `STRG + O`, bestätige mit Enter und verlasse den Editor mit `STRG + X`.
Damit die Datei auch wirklich korrekt funktioniert, setzen wir nun noch die Rechte:
```bash
chown -R nc_runner:nc_runner /home/nc_runner/.ssh
chmod 700 /home/nc_runner/.ssh
chmod 600 /home/nc_runner/.ssh/authorized_keys
```
Damit kann sich `nc_runner` bereits mit dem Schlüssel anmelden.
Damit er aber wirklich in der Lage ist die Indizierung anzustoßen, müssen wir ihm noch die Rechte geben, bestimmte Befehle als `www-data` auszuführen. Nur `www-data` darf nämlich das `occ`-Kommando in Nextcloud starten.
Dafür öffnen wir die sudo-Konfiguration:
```bash
visudo
```
Ganz am Ende fügen wir folgende Zeile ein:
```
https://<DEINE_NEXTCLOUD_DOMAIN>/remote.php/dav/files/<DEIN_NC_BENUTZER>/
nc_runner ALL=(www-data) NOPASSWD: /usr/bin/php, /var/www/nextcloud/occ
```
Hierdurch erlauben wir dem Benutzer `nc_runner`, genau diese Befehle als `www-data` auszuführen und nichts anderes.
6. Nextcloud benötigt einen Cache, um effizient arbeiten zu können. Standardmäßig wird oft **APCu** vorgeschlagen, das in der Praxis aber gerade bei der Nutzung von `occ` über die Kommandozeile Probleme bereitet.
Darum setzen wir hier direkt auf **Redis**. Redis ist stabiler, von Nextcloud offiziell empfohlen und funktioniert sowohl für den Web- als auch den CLI-Zugriff.
Zuerst installieren wir Redis samt PHP-Anbindung. Logge dich hierfür in deinen Nextcloud LXC ein und führe aus:
```bash
apt-get update
apt-get install -y redis-server php-redis
```
Im Anschluss stellen wir Redis so ein, dass es über einen Socket und nicht über TCP angesprochen wird. Das ist schneller und sicherer, da der Zugriff nur lokal erfolgt. Öffne die Konfiguration mit:
```bash
nano /etc/redis/redis.conf
```
und passe die folgenden Zeilen an:
```
supervised no
#unixsocket /var/run/redis/redis-server.sock
#unixsocketperm 770
port 6379
```
Ersetze sie bzw. entfere die kommentierung, damit sie wie folgt aussehen:
```
supervised systemd
unixsocket /var/run/redis/redis-server.sock
unixsocketperm 770
port 0
```
Danach fügen wir den Webserver-Benutzer in die Redis-Gruppe hinzu und starten den Dienst neu:
```bash
usermod -aG redis www-data
systemctl restart redis
```
Jetzt müssen wir Nextcloud selbst mitteilen, dass es Redis nutzen soll. Öffne dazu die Datei config.php mit `nano /var/www/nextcloud/config/config.php` und ergänze bzw. ändere diese Einträge:
```php
'filelocking.enabled' => true,
'memcache.local' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' =>
array (
'host' => '/var/run/redis/redis-server.sock',
'port' => 0,
'timeout' => 1.5,
)
```
Speichern und schließen. Damit die Änderungen wirksam werden, starten wir noch PHP neu. Je nach Setup entweder mit:
```bash
systemctl restart apache2
```
Ab jetzt läuft Nextcloud vollständig mit Redis als Cache. Das heißt: `occ` funktioniert zuverlässig ohne zusätzliche Anpassungen, und wir sind bereit für den abschließenden Test im nächsten Schritt.
Zum Abschluss testen wir, ob alles funktioniert. Wechsle dazu wieder auf deinen Clipper LXC und rufe folgenden Befehl auf:
```bash
ssh -i ~/.ssh/nc_runner_ed25519 nc_runner@<IP_des_Nextcloud_LXC> "sudo -u www-data php /var/www/nextcloud/occ -V"
```
Wenn alles korrekt eingerichtet ist, bekommst du die aktuelle Nextcloud Version angezeigt.
---
### Twitch-API Zugang (Developer Console)