Zum Inhalt springen

Meine Nextcloud im Eigenbetrieb: Aufbau, Docker, Backup und Wartung

Meine Nextcloud läuft vollständig selbst gehostet auf einem eigenen Linux-Server. Ein Blick auf Aufbau, Funktionen, Wartung, Updates und die Vorteile gegenüber klassischen Cloud-Diensten.

Meine Nextcloud im Eigenbetrieb: Aufbau, Docker, Backup und Wartung

Wie meine selbst gehostete Nextcloud aufgebaut ist, welche Dienste dazugehören und wie Backups, Updates und Wartung durchgeführt werden.

Nextcloud gehört inzwischen zu den zentralen Diensten auf meinem eigenen Server. Sie übernimmt weit mehr als nur die klassische Dateiablage: Kalender, Kontakte, Synchronisation zwischen mehreren Geräten und die Bearbeitung von Office-Dokumenten laufen ebenfalls über die Plattform.

Der entscheidende Punkt dabei: Die Daten liegen auf meiner eigenen Infrastruktur.

In diesem Beitrag zeige ich, wie meine Nextcloud grundsätzlich aufgebaut ist, welche Komponenten zusammenspielen und wie ich Wartung, Backups und Updates handhabe.

Was ist Nextcloud überhaupt?

Nextcloud ist eine freie Open-Source-Plattform, mit der sich viele Funktionen klassischer Cloud-Anbieter auf eigener Hardware betreiben lassen.

Die bekannteste Funktion ist die Dateisynchronisation. Dateien können beispielsweise auf dem Desktop, Notebook und Smartphone synchron gehalten oder direkt über den Browser aufgerufen werden.

Das System kann aber wesentlich mehr:

  • Dateien und Ordner verwalten
  • Dateien mit anderen Personen teilen
  • Kalender synchronisieren
  • Kontakte verwalten
  • Aufgaben organisieren
  • Fotos und Dokumente bereitstellen
  • Office-Dateien direkt im Browser bearbeiten
  • WebDAV, CalDAV und CardDAV bereitstellen
  • Benutzer und Berechtigungen verwalten
  • zusätzliche Funktionen über Apps nachrüsten

Dadurch ist Nextcloud bei mir nicht einfach ein „Dropbox-Ersatz“, sondern eher eine zentrale Plattform für verschiedene persönliche Dienste.

Wo läuft meine Nextcloud?

Meine Nextcloud läuft als Docker-Stack auf einem eigenen Debian-Server.

Ich betreibe also keinen separaten physischen Rechner nur für Nextcloud. Stattdessen laufen mehrere Dienste voneinander getrennt in Docker-Containern auf demselben Server.

Der grundsätzliche Aufbau sieht vereinfacht so aus:

Internet / lokale Clients
          │
          ▼
    Reverse Proxy
          │
          ▼
      Nextcloud
       │      │
       │      └──────── Redis
       │
       ├─────────────── MariaDB
       │
       ├─────────────── Cron
       │
       └─────────────── Collabora

Die einzelnen Komponenten erfüllen unterschiedliche Aufgaben.

Die wichtigsten Komponenten

Nextcloud

Der eigentliche Nextcloud-Container stellt die Weboberfläche und die Anwendungslogik bereit.

Bei meiner Installation kommt die Apache-basierte Docker-Variante von Nextcloud zum Einsatz.

Persistente Daten liegen dabei außerhalb des eigentlichen Containers. Dadurch kann der Container ersetzt oder aktualisiert werden, ohne dass die eigentlichen Nutzerdaten verloren gehen.

Das ist einer der großen Vorteile von Docker: Anwendung und Daten werden sauber voneinander getrennt.

MariaDB

Nextcloud benötigt eine Datenbank.

Dafür kommt bei mir MariaDB zum Einsatz. Dort liegen unter anderem Informationen über Benutzer, Freigaben, Apps, Dateizustände und zahlreiche interne Einstellungen.

Die eigentlichen Dateien liegen natürlich nicht einfach komplett innerhalb der Datenbank. Trotzdem gehört die Datenbank zwingend zu einem vollständigen Backup.

Eine Sicherung nur des Nextcloud-Datenordners wäre daher unvollständig.

Redis

Zusätzlich verwendet die Installation Redis.

Redis wird unter anderem für Caching und Dateisperren eingesetzt. Gerade bei mehreren Clients oder parallelen Zugriffen verbessert das die Zuverlässigkeit und Performance deutlich.

Eine typische Nextcloud-Konfiguration beinhaltet deshalb beispielsweise einen Redis-basierten Locking-Mechanismus.

Cron

Nextcloud führt verschiedene Hintergrundaufgaben aus.

Dazu gehören beispielsweise:

  • Bereinigungen
  • Dateiverarbeitung
  • Benachrichtigungen
  • Aktualisierung interner Informationen
  • Hintergrundaufgaben verschiedener Apps

Diese Jobs lasse ich nicht über AJAX-Aufrufe der Weboberfläche ausführen, sondern über einen eigenen Cron-Container.

Das ist für eine dauerhaft betriebene Nextcloud die sauberere Lösung.

Collabora Online

Für die Bearbeitung von Office-Dokumenten ist zusätzlich Collabora Online eingebunden.

Dadurch lassen sich beispielsweise Dokumente, Tabellen und Präsentationen direkt aus Nextcloud heraus im Browser öffnen und bearbeiten.

Die Office-Instanz läuft ebenfalls getrennt von Nextcloud und wird über den Reverse Proxy angebunden.

So bleiben die einzelnen Dienste modular.

Der Reverse Proxy

Der direkte Zugriff auf einzelne Docker-Container erfolgt nicht aus dem Internet.

Davor befindet sich ein Reverse Proxy.

Dieser übernimmt unter anderem:

  • HTTPS
  • Zertifikatsverwaltung
  • Weiterleitung an den richtigen internen Dienst
  • zentrale Verwaltung der extern erreichbaren Dienste
  • zusätzliche Zugriffskontrollen, wo sie sinnvoll sind

Dadurch müssen die eigentlichen Container nicht jeweils ihre eigene öffentliche Konfiguration verwalten.

Welche Funktionen nutze ich?

Meine Nextcloud wird hauptsächlich für klassische Cloud- und Groupware-Funktionen eingesetzt.

Dazu gehören vor allem:

Dateien

Dateien können über Browser und Clients abgerufen und synchronisiert werden.

Besonders praktisch ist, dass mehrere Geräte immer auf denselben Datenbestand zugreifen können.

Kalender

Kalender werden über CalDAV synchronisiert und stehen dadurch beispielsweise auf Smartphone und Desktop zur Verfügung.

So bin ich nicht auf den Kalender eines bestimmten Geräteherstellers angewiesen.

Kontakte

Dasselbe Prinzip funktioniert über CardDAV auch mit Kontakten.

Office

Über Collabora können Office-Dokumente direkt innerhalb von Nextcloud geöffnet werden.

Damit lassen sich viele alltägliche Dokumente bearbeiten, ohne sie vorher herunterladen und anschließend erneut hochladen zu müssen.

Freigaben

Dateien und Verzeichnisse können gezielt freigegeben werden.

Dabei lassen sich je nach Anwendungsfall Berechtigungen, Passwörter und Ablaufzeiten verwenden.

Warum überhaupt selbst hosten?

Natürlich könnte man stattdessen Google Drive, Microsoft OneDrive, Dropbox oder einen ähnlichen Dienst verwenden.

Für mich liegen die Vorteile einer eigenen Nextcloud jedoch an anderer Stelle.

Datenhoheit

Ich entscheide selbst, wo die Daten gespeichert werden.

Es gibt keinen fremden Cloud-Speicher, auf dessen technische Architektur ich keinerlei Einfluss habe.

Kontrolle

Ich bestimme:

  • welche Apps installiert werden
  • wie viel Speicher zur Verfügung steht
  • wie Backups erstellt werden
  • welche Clients zugreifen
  • wann Updates durchgeführt werden
  • welche zusätzlichen Dienste angebunden werden

Offene Standards

Nextcloud unterstützt Standards wie:

  • WebDAV
  • CalDAV
  • CardDAV

Das reduziert die Abhängigkeit von einem bestimmten Hersteller oder einer einzelnen App.

Erweiterbarkeit

Das System kann schrittweise erweitert werden.

Heute werden vielleicht nur Dateien benötigt, später kommen Kalender, Kontakte, Office oder weitere Apps hinzu.

Lernen

Self-Hosting bedeutet natürlich zusätzlichen Aufwand.

Gleichzeitig lernt man dabei einiges über:

  • Linux
  • Docker
  • Datenbanken
  • Reverse Proxies
  • TLS
  • Backups
  • Netzwerke
  • Monitoring
  • Fehleranalyse

Für mich gehört auch dieser Aspekt zum Reiz des Systems.

Der Preis der eigenen Cloud

Eine eigene Nextcloud hat allerdings nicht nur Vorteile.

Bei einem kommerziellen Cloud-Anbieter kümmert sich der Anbieter um:

  • Hardware
  • Updates
  • Backups der Infrastruktur
  • Netzwerk
  • Verfügbarkeit
  • Sicherheitsupdates

Beim Self-Hosting liegt diese Verantwortung bei mir.

Das bedeutet:

Keine eigene Cloud ohne funktionierende Backup-Strategie.

Ein laufender Server ist noch keine Datensicherung.

Wie wird meine Nextcloud gesichert?

Die Umgebung wird regelmäßig automatisiert gesichert.

Dabei müssen mehrere Bestandteile berücksichtigt werden.

Ein vollständiges Sicherungskonzept umfasst mindestens:

  1. Nextcloud-Konfiguration
  2. Nextcloud-Daten
  3. Datenbank
  4. relevante Docker-Konfigurationen
  5. gegebenenfalls zusätzliche Anwendungsdaten

Zusätzlich existiert eine externe Sicherung außerhalb des eigentlichen Servers.

Damit soll verhindert werden, dass beispielsweise ein Defekt des Servers gleichzeitig Originaldaten und Backup zerstört.

Die genauen Speicherorte, Zeitpläne und Zugangsmethoden veröffentliche ich bewusst nicht.

Warum die Datenbank so wichtig ist

Es reicht nicht, lediglich die hochgeladenen Dateien zu kopieren.

Nextcloud verwaltet zahlreiche Informationen in der Datenbank.

Ein Datenbank-Dump gehört deshalb zwingend zur Sicherung.

Das grundsätzliche Prinzip kann beispielsweise so aussehen:

docker compose exec database \
    mariadb-dump \
    --single-transaction \
    DATABASE > nextcloud-backup.sql

Wie kontrolliere ich den Zustand?

Docker macht einen ersten Überblick relativ einfach.

docker compose ps

Damit lässt sich kontrollieren, ob die benötigten Container laufen.

Zusätzlich besitzt Nextcloud mit occ ein eigenes Kommandozeilenwerkzeug.

Beispielsweise:

docker compose exec -u www-data nextcloud \
    php occ status

Damit lassen sich unter anderem Version und Wartungsstatus kontrollieren.

Weitere wichtige Informationsquellen sind:

  • Nextcloud-Administrationsübersicht
  • Docker-Logs
  • Reverse-Proxy-Logs
  • Datenbankzustand
  • freier Speicherplatz
  • Systemauslastung
  • Backup-Protokolle

Wie führe ich Updates durch?

Updates werden bei mir nicht einfach blind ausgeführt.

Gerade bei einer zentralen Anwendung wie Nextcloud ist ein kontrollierter Ablauf wesentlich sinnvoller.

1. Release prüfen

Zuerst kontrolliere ich, welche Version angeboten wird.

Bei größeren Versionssprüngen prüfe ich zusätzlich:

  • bekannte Probleme
  • Kompatibilität verwendeter Apps
  • Anforderungen an PHP und Datenbank
  • Änderungen an der Konfiguration

2. Backup kontrollieren

Vor einem größeren Update muss eine aktuelle Sicherung vorhanden sein.

Noch wichtiger:

Ein Backup ist erst dann vertrauenswürdig, wenn grundsätzlich bekannt ist, wie es wiederhergestellt werden kann.

3. Container aktualisieren

Bei Docker beginnt ein Update typischerweise mit dem Abruf der neuen Images.

docker compose pull

Anschließend wird der Stack mit den neuen Images gestartet:

docker compose up -d

Docker ersetzt dabei die Anwendungscontainer, während die persistenten Daten erhalten bleiben.

4. Nextcloud kontrollieren

Nach dem Start überprüfe ich den Status:

docker compose exec -u www-data nextcloud \
    php occ status

Falls notwendig können anschließend Nextcloud-Wartungsbefehle ausgeführt werden.

Beispielsweise:

docker compose exec -u www-data nextcloud \
    php occ maintenance:repair

Auch Hinweise aus der Administrationsübersicht werden nach einem Update kontrolliert.

5. Nicht alles gleichzeitig aktualisieren

Ein wichtiger Grundsatz meiner Umgebung lautet:

Nicht mehrere große Änderungen gleichzeitig durchführen.

Wenn Nextcloud, Datenbank, Reverse Proxy und Collabora gleichzeitig auf neue Hauptversionen springen und anschließend ein Fehler auftritt, wird die Fehlersuche unnötig schwierig.

Besser ist:

Änderung
   ↓
Start
   ↓
Test
   ↓
Logs kontrollieren
   ↓
nächste Änderung

Dadurch lässt sich ein Problem wesentlich leichter einer bestimmten Änderung zuordnen.

Major Updates benötigen mehr Aufmerksamkeit

Besonders vorsichtig bin ich bei einem Wechsel auf eine neue Nextcloud-Hauptversion.

Hier gilt grundsätzlich:

Hauptversionen der Reihe nach aktualisieren.

Ein großer Sprung über mehrere Major Releases hinweg ist keine gute Idee.

Vor einem Major Upgrade kontrolliere ich daher zusätzlich die Kompatibilität installierter Apps.

Nicht jede Erweiterung steht unmittelbar nach Erscheinen einer neuen Nextcloud-Version bereits kompatibel zur Verfügung.

Im Zweifelsfall warte ich lieber etwas länger mit einem Major Upgrade, solange die aktuell verwendete Version weiterhin Sicherheitsupdates erhält.

Auch Collabora wird separat gewartet

Nextcloud ist nur ein Teil der Umgebung.

Collabora besitzt einen eigenen Container und damit auch einen eigenen Update-Zyklus.

Das hat einen wichtigen Vorteil:

Ein Update des Office-Servers bedeutet nicht automatisch, dass gleichzeitig Nextcloud selbst geändert werden muss.

Auch hier gilt wieder das Prinzip:

Eine Komponente aktualisieren, anschließend testen.

Nach einem Collabora-Update teste ich mindestens:

  1. Office-Dokument aus Nextcloud öffnen
  2. Dokument bearbeiten
  3. speichern
  4. erneut öffnen

Damit ist schnell erkennbar, ob die Verbindung zwischen beiden Diensten noch funktioniert.

Was kontrolliere ich nach einem Update?

Nach einer Wartung gehe ich einige grundlegende Funktionen durch.

Weboberfläche

  • Login funktioniert
  • Dashboard lädt
  • keine offensichtlichen Fehlermeldungen

Dateien

  • Datei öffnen
  • Datei hochladen
  • Datei herunterladen

Synchronisation

Mindestens ein synchronisierter Client sollte problemlos arbeiten.

Kalender und Kontakte

Falls Änderungen an Nextcloud oder verwendeten Apps vorgenommen wurden, teste ich auch die DAV-Synchronisation.

Collabora

Ein Office-Dokument wird geöffnet und gespeichert.

Hintergrundjobs

Cron muss weiterhin funktionieren.

Admin-Übersicht

Nextcloud zeigt dort zahlreiche Konfigurations- und Sicherheitswarnungen an.

Diese Seite gehört deshalb zu den ersten Stellen, die ich nach einem Update kontrolliere.

Wartungsbefehle

Nextcloud besitzt verschiedene occ-Kommandos, die bei Wartung und Fehleranalyse hilfreich sein können.

Einige Beispiele:

php occ status
php occ maintenance:repair
php occ db:add-missing-indices
php occ app:list

Innerhalb einer Docker-Installation werden diese Befehle entsprechend im Nextcloud-Container ausgeführt.

Beispielsweise:

docker compose exec -u www-data nextcloud \
    php occ app:list

Diese Befehle sollte man allerdings nicht einfach wahllos ausführen. Sie sind Werkzeuge zur Administration und Fehlerbehebung – kein automatisches „Optimierungsskript“.

Was veröffentliche ich bewusst nicht?

Bei technischen Artikeln gibt es einen wichtigen Unterschied zwischen Dokumentation und Offenlegung.

Interessant und sinnvoll zu dokumentieren sind:

  • eingesetzte Software
  • grundlegende Architektur
  • Konzepte
  • Update-Strategie
  • Backup-Prinzip
  • Erfahrungen
  • Fehler und Lösungen

Nicht in einen öffentlichen Beitrag gehören dagegen beispielsweise:

  • Passwörter
  • Tokens
  • API-Schlüssel
  • private Schlüssel
  • interne IP-Adressen, wenn sie keinen Mehrwert bringen
  • konkrete Administrationszugänge
  • Backup-Zugangsdaten
  • vollständige produktive Konfigurationsdateien mit Secrets
  • interne Verzeichnisstrukturen ohne Notwendigkeit
  • detaillierte Firewall- oder Zugriffsregeln der produktiven Umgebung

Fazit

Meine Nextcloud ist inzwischen ein zentraler Bestandteil meiner selbst gehosteten Infrastruktur.

Sie verbindet mehrere Dienste, die sonst häufig über unterschiedliche Anbieter verteilt wären:

Dateien, Kalender, Kontakte und Office unter einer gemeinsamen Oberfläche.

Docker erleichtert dabei die Trennung der einzelnen Komponenten. MariaDB übernimmt die Datenbank, Redis unterstützt Caching und Locking, ein separater Cron-Dienst verarbeitet Hintergrundaufgaben und Collabora ermöglicht die Bearbeitung von Office-Dokumenten.

Der größte Vorteil liegt für mich aber weniger in einer einzelnen Funktion.

Es ist die Kontrolle über das Gesamtsystem und die eigenen Daten.

Diese Kontrolle bringt allerdings Verantwortung mit sich. Regelmäßige Updates, Monitoring und vor allem funktionierende Backups gehören deshalb genauso zu Nextcloud wie die eigentliche Anwendung.

Eine eigene Cloud ist kein System, das man einmal installiert und anschließend vergisst.

Aber genau das macht Self-Hosting für mich interessant:

Man betreibt nicht nur einen Dienst – man versteht zunehmend auch, wie die Infrastruktur dahinter funktioniert.

// Ende der Übertragung

Die öffentlichen Tags führen zu weiteren Artikeln. Guides, Projekte, Updates und Notizen lassen sich zusätzlich im Beitragsarchiv filtern.

Beitragsarchiv