Nextcloud-Ordner als Live-Mount auf Ubuntu Server (rclone)
Diese Anleitung richtet einen ausgewählten Nextcloud-Ordner (z. B. AI) als
echtes, dauerhaft eingebundenes Dateisystem auf einem Ubuntu-Server ein –
per WebDAV über rclone mount. Änderungen werden nahezu in Echtzeit
zwischen Server und Nextcloud abgeglichen (kein Polling-Sync, kein
Desktop-Client, kein Xvfb nötig).
Einsatzzweck: Verteiltes Gedächtnis / Datenordner für Anwendungen (z. B. KI-Agenten), die kontinuierlich lesend und schreibend auf einen Nextcloud-Ordner zugreifen sollen, auf Servern ohne Desktop-Umgebung.
Voraussetzungen
- Ubuntu Server mit SSH-Zugriff
- Ein Nextcloud-Account mit App-Passwort (siehe Schritt 1)
rcloneundfuse3
Schritt 1: App-Passwort in Nextcloud erstellen
- Nextcloud im Browser öffnen und normal einloggen (Login + ggf. OTP).
- Profilbild oben rechts → Persönliche Einstellungen.
- Reiter Sicherheit (links).
- Ganz nach unten scrollen zu App-Passwörter.
- Namen vergeben (z. B.
Ubuntu-Server-AI-Mount) → Neues App-Passwort erstellen. - Generiertes Passwort kopieren – wird in Schritt 3 benötigt.
Schritt 2: Pakete installieren
sudo apt update
sudo apt install -y rclone fuse3
Kein
nextcloud-desktop, keinxvfbnötig – rclone kommt ohne GUI-Abhängigkeiten aus.
Schritt 3: rclone-Remote konfigurieren
Interaktive Einrichtung:
rclone config
n(New remote)- Name:
Nextcloud(Groß-/Kleinschreibung beachten – wird später exakt so referenziert, inkl. Doppelpunkt:Nextcloud:) - Typ:
webdav - URL:
https://DEINE-NEXTCLOUD-DOMAIN/remote.php/dav/files/DEIN_USERNAME/ - Vendor:
nextcloud - User: dein Nextcloud-Login
- Password: das App-Passwort aus Schritt 1 (rclone verschlüsselt es automatisch in der Config)
- Rest mit Enter bestätigen, am Ende mit
yspeichern
Alternative – nicht-interaktiv:
rclone config create Nextcloud webdav \
url=https://DEINE-NEXTCLOUD-DOMAIN/remote.php/dav/files/DEIN_USERNAME/ \
vendor=nextcloud \
user=DEIN_USERNAME \
pass=DEIN_APP_PASSWORT
Verbindung testen:
rclone lsd Nextcloud:
Sollte die Ordnerliste deiner Nextcloud anzeigen (Doppelpunkt nicht
vergessen – ohne : interpretiert rclone den Namen als lokalen Pfad statt
als Remote!).
Schritt 4: Mount-Punkt anlegen
mkdir -p "/pfad/zu/deinem/mount-ordner"
Beispiel für den AI-Ordner:
mkdir -p "/home/DEIN_USER/nextcloud-ai"
Schritt 5: Manuell testen
rclone mount Nextcloud:AI "/home/DEIN_USER/nextcloud-ai/" \
--vfs-cache-mode writes \
--daemon
Nextcloud:AI→ nur dieser Unterordner wird gemountet (beliebiger Pfad möglich, auch verschachtelt:Nextcloud:AI/Unterordner, oderNextcloud:für den kompletten Account)--daemon→ läuft im Hintergrund, Terminal bleibt frei (nur für manuelle Tests; im systemd-Service ohne--daemon, siehe Schritt 6)
Prüfen:
ls -la "/home/DEIN_USER/nextcloud-ai/"
Test-Datei anlegen und in der Nextcloud-Weboberfläche prüfen, ob sie ankommt (kurze Verzögerung durch VFS-Cache ist normal):
echo "test" > "/home/DEIN_USER/nextcloud-ai/server-test.txt"
Zum Beenden des Test-Mounts:
fusermount -u "/home/DEIN_USER/nextcloud-ai/"
Schritt 6: Als systemd-User-Dienst dauerhaft einrichten
Damit der Mount Server-Neustarts übersteht und automatisch wieder da ist.
1. Service-Datei anlegen:
mkdir -p ~/.config/systemd/user
nano ~/.config/systemd/user/nextcloud-ai-mount.service
2. Inhalt einfügen (Pfade und Remote-Ordner anpassen):
[Unit]
Description=Nextcloud AI-Ordner als WebDAV-Mount
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/rclone mount Nextcloud:AI "/home/DEIN_USER/nextcloud-ai/" --vfs-cache-mode writes --vfs-cache-max-age 24h
ExecStop=/bin/fusermount -u "/home/DEIN_USER/nextcloud-ai/"
Restart=always
RestartSec=10
[Install]
WantedBy=default.target
Kein
--daemon-Flag hier: Der Prozess muss im Vordergrund bleiben, damit systemd ihn korrekt als laufenden Dienst überwachen kann. Dass der Befehl "blockiert" (nicht ins Terminal zurückkehrt), ist beirclone mountohne--daemonnormales, gewolltes Verhalten.
3. Aktivieren:
systemctl --user daemon-reload
systemctl --user enable --now nextcloud-ai-mount
4. Sicherstellen, dass der Dienst auch ohne aktive SSH-Session weiterläuft (Linger – einmalig nötig):
sudo loginctl enable-linger $USER
Prüfen:
loginctl show-user $USER | grep Linger
Sollte Linger=yes zeigen.
Schritt 7: Status & Logs prüfen
systemctl --user status nextcloud-ai-mount
ls -la "/home/DEIN_USER/nextcloud-ai/"
Live-Logs:
journalctl --user -u nextcloud-ai-mount -f
Falls
journalctl --userohne Ergebnisse bleibt oder Berechtigungsfehler zeigt:sudo journalctl --user-unit=nextcloud-ai-mount -fverwenden, oder sich einmal komplett neu per SSH einloggen, nachdem man mitsudo usermod -aG systemd-journal $USERzur Gruppe hinzugefügt wurde.
Wichtige Hinweise
--vfs-cache-mode writes: Schreibzugriffe werden lokal gepuffert und zuverlässig hochgeladen, auch bei kurzen Netzwerkausfällen.- Kein Polling-Sync: Änderungen gehen nahezu in Echtzeit über WebDAV,
nicht erst beim nächsten Sync-Zyklus wie bei
rclone sync/bisync. rclone bisyncbewusst vermieden: Ist offiziell als Beta-Feature eingestuft – für ein produktiv genutztes, kontinuierlich beschriebenes Verzeichnis istmountdie robustere Wahl.- Mehrere Ordner: Für weitere Nextcloud-Ordner einfach ein zweites
Service-Paar mit anderem Namen (z. B.
nextcloud-technik-mount.service) und anderemtargetPath(Nextcloud:Technik) anlegen – läuft unabhängig parallel. - Remote-Name ist case-sensitive:
Nextcloud:≠nextcloud:.
Troubleshooting-Kurzreferenz
| Symptom | Ursache | Lösung |
|---|---|---|
rclone lsd zeigt nichts |
Remote-Name falsch geschrieben / Doppelpunkt vergessen | rclone listremotes prüfen, exakte Schreibweise verwenden |
didn't find section in config file |
Remote-Name in Config weicht ab | rclone config show bzw. cat ~/.config/rclone/rclone.conf prüfen |
| Mount-Befehl "hängt" im Terminal | Normales Verhalten ohne --daemon |
Für Tests --daemon nutzen, im systemd-Service bewusst weglassen |
journalctl --user verweigert Zugriff |
Fehlende Gruppenmitgliedschaft systemd-journal |
sudo usermod -aG systemd-journal $USER, neu einloggen |