Nextcloud im Eigenbetrieb Was bei der Serverkonfiguration wirklich zählt

Nextcloud im Eigenbetrieb: Was bei der Server-Einrichtung wirklich zählt

Es gibt diesen einen Moment, an dem man die eigene digitale Poststelle nicht mehr bei fremden Firmen lassen möchte. Vielleicht ist es die Nachricht über ein kaputtes Laufwerk in irgendeinem Rechenzentrum. Oder das Kleingedruckte, das plötzlich erlaubt, synchronisierte Dokumente für Werbezwecke auszuwerten. Nextcloud ist in solchen Momenten mehr als nur eine Software – es ist eine Haltung. Aber eine Haltung allein richtet noch keinen Server ein. Deshalb geht es hier um die Frage, die immer wieder in Foren und Projektbesprechungen auftaucht: Wie bekommt man eine stabile Nextcloud-Instanz auf ein eigenes System, ohne dass man nach dem dritten Abend an der Konfiguration scheitert?

Erst mal sortieren: Was Nextcloud eigentlich ist

Nextcloud ist eine Plattform für Dateisynchronisation, Filesharing und Zusammenarbeit. Das Grundprinzip erinnert an die Anfänge von Dropbox, nur dass eben alles auf der eigenen Infrastruktur läuft. Das Besondere daran ist nicht die eine große Funktion – es ist die Summe aus vielen Bausteinen: Kalender, Kontakte, Aufgaben, Notizen, Videokonferenzen, Office-Dokumente, Passwortverwaltung. Wer einmal ein Team auf einer Nextcloud-Instanz arbeiten sah, versteht schnell, warum sich viele kleine Unternehmen und Verwaltungen dafür entscheiden. Der Server ist die Schaltzentrale, der Client auf dem Laptop, dem Smartphone oder im Dateimanager lediglich das Fenster dazu.

Technisch betrachtet ist Nextcloud eine PHP-Anwendung. Sie benötigt einen Webserver, eine Datenbank und idealerweise einen Redis-Server für Caching-Aufgaben. Das klingt sperrig, ist aber überschaubar. Die offiziellen Mindestanforderungen sind bewusst niedrig gehalten. Ein Einplatinenrechner mit zwei Gigabyte RAM kann für zwei oder drei Nutzer reichen. Für einen professionellen Einsatz mit vielen Dateien und mehreren Nutzern sollte es dann aber doch etwas mehr sein. Aber dazu später.

Wer „Nextcloud server einrichten“ googlet, stößt auf viele Wege. Der einfachste führt über das offizielle Appliance-Image. Ein Image, das man auf einen VPS oder einen Bare-Metal-Rechner spielt, und nach dem ersten Boot landet man direkt im Installationassistenten. Das ist komfortabel und für den schnellen Test hervorragend. Für dauerhaft produktiv genutzte Umgebungen empfehle ich jedoch, die Installation manuell durchzuführen. Man lernt das System dabei nicht nur besser kennen, man vermeidet auch so manches Problem, das entsteht, wenn ein Installationsskript vor sich hinwurschtelt und man später nicht mehr nachvollziehen kann, welche Pakete auf welchem Weg dazugekommen sind.

Die Planung vor dem ersten Befehl

Bevor man loslegtt, sollte man sich ein paar grundlegende Fragen stellen. Wie viele Benutzer werden erwartet? Welche Dateigrößen sind typisch? Soll die Instanz auch als Gruppenlaufwerk für mehrere Arbeitsplätze dienen? Wird Nextcloud mit externen Anwendungen verknüpft, etwa über WebDAV oder eine API? Die Antworten auf diese Fragen bestimmen die Dimensionierung der Hardware und die Wahl der Datenbank.

Für ein kleines Setup mit bis zu zehn Benutzern tut es ein VPS mit zwei vCPUs, 4 GB RAM und 40 GB SSD. Die Datenmenge sollte im Blick bleiben. Wenn man plant, umfangreiche Videodateien oder VM-Images zu speichern, wächst der Speicherbedarf schnell. Eine separate Datenpartition ist deshalb sinnvoll, ebenso wie ein eigenes Betriebssystemlaufwerk. Nextcloud selbst ist schlank, aber die Daten wachsen. Und ein vollgelaufenes Wurzelverzeichnis ist eine der häufigsten Ursachen für unerklärliche Ausfälle.

Beim Betriebssystem ist man frei. Nextcloud läuft auf den meisten aktuellen Linux-Distributionen. Ubuntu LTS, Debian, openSUSE und CentOS/AlmaLinux sind verbreitet. Meine Präferenz ist Debian, einfach weil es sich ohne unnötigen Ballast installieren lässt und langfristig sauber zu warten ist. Aber das ist Geschmackssache. Ein interessanter Aspekt ist, dass Nextcloud auch mit Windows Server funktioniert, über den Umweg von Docker. In einer reinen Windows-Umgebung wäre mir das aber nicht meine erste Wahl.

Zur Domäne: Nextcloud sollte über eine eigene Subdomain laufen, etwa cloud.example.com. Eine pauschale IP-Adresse ist möglich, aber nicht empfehlenswert – Stichwort Zertifikate, Cookies und spätere Umzüge. Ein DNS-Eintrag lässt sich in wenigen Minuten setzen, und mit Let’s Encrypt bekommt man ein kostenloses SSL-Zertifikat. Wer das nicht möchte oder nicht darf, weil die Netzpolitik in der Firma es anders vorschreibt, muss wenigstens für eine saubere HTTP-zu-HTTPS-Weiterleitung sorgen. Ohne Verschlüsselung sollte man keinen einzigen Benutzer an die Instanz lassen.

Die Basis: Webserver und PHP

Wer eine Nextcloud-Instanz von Hand aufsetzt, beginnt mit dem Webserver. Ich habe mich in den letzten Jahren immer wieder mit Apache und Nginx herumgeärgert, und selbst wenn mich die meisten Kollegen für einen Nginx-Fan halten: Apache ist bei Nextcloud immer noch diejenige Umgebung, für die es die meisten dokumentierten Erweiterungen und Module gibt. Die Konfiguration ist etwas ausladend, aber sie ist nachvollziehbar, sehr gut dokumentiert und verzeiht Anfängerfehler, indem sie schlicht funktioniert. Nginx ist kleiner, schneller und meiner Meinung nach in puncto Performance überlegen – erfordert aber mehr Verständnis für die Aufteilung zwischen statischen und dynamischen Dateien. Letztlich muss es jeder für sich entscheiden. Beide Webserver sind offiziell von Nextcloud unterstützt.

Die benotigte PHP-Version ergibt sich aus der jeweiligen Nextcloud-Version. Wichtig sind auch die benötigten PHP-Module, allen voran php-fpm (bei Apache durch mod_php alternativ möglich), php-mysql oder php-pgsql, php-curl, php-gd, php-intl, php-bcmath, php-gmp und php-imagick. Bei Debian lassen sich diese Pakete mit einem einzigen Kommando installieren. Man sollte danach prüfen, ob PHP in der Kommandozeile die richtige Version anzeigt. Es gibt nichts Schlimmeres als eine Installation, die im Webserver eine andere PHP-Version nutzt als in der Shell – das führt zu mysteriösen Fehlern beim Ausführen von occ-Befehlen oder bei der Einstellung der Speichergrenzen.

Die für Nextcloud empfohlenen PHP-Werte sind in der offiziellen Doku nachzulesen. Dazu gehören Werte wie upload_max_filesize und post_max_size, die gerne von den Standardeinstellungen abweichen. Wer große Dateien über die Weboberfläche hochladen möchte, muss auch die Webserver-Grenzen beachten. Nebenbei ein Tipp: Die Werte sollten nicht absichtlich aufgebläht werden, nur weil es geht. Wer typischerweise 100-MB-Dateien überträgt, braucht kein 8-GB-Limit. Ein zu großzügig dimensioniertes PHP-Limit führt sonst dazu, dass der Server bei einem versehentlichen Upload eines überdimensionierten Videos versucht, die ganze Datei im Speicher zu halten, und dabei das System zum Erliegen bringt.

Die Datenbank: das Herzstück

Nextcloud unterstützt SQLite, MariaDB/MySQL und PostgreSQL. Für Testumgebungen oder reine Ein-Personen-Instanzen mag SQLite reichen, aber für alles, was mehr sein soll als ein Prototyp, sollte man sofort eine „richtige” Datenbank nehmen. MariaDB ist die wohl am häufigsten gewählte Datenbank. Sie ist schnell, weit verbreitet und viele Administratoren kennen sie bereits. Wer ein fortgeschrittenes Setup mit sehr vielen Dateien plant, sollte sich auch PostgreSQL ansehen. PostgreSQL liegt nach meiner Erfahrung bei komplexen Abfragen und großen Datenmengen leicht vorn, aber für den typischen Nextcloud-Einsatz ist der Unterschied gering.

Ein häufiges Problem taucht bereits bei der Einrichtung der Datenbank auf: die Zeichensatz- und Collation-Einstellungen. Empfohlen wird utf8mb4. Wenn man das nicht richtig setzt, kann es später beim Import von Daten oder beim Synchronisieren von Dateinamen mit Sonderzeichen zu sonderbaren Fehlern kommen. Ein Neuaufsetzen der Datenbank ist dann die einzige saubere Lsung. Deshalb bei der Erstellung der Datenbank lieber einmal mehr prüfen.

Die Einrichtung der Datenbank lässt sich in der Regel auf ein paar Kommandos reduzieren. Man legt eine Datenbank an, einen Benutzer, vergebtt das Passwort und entzieht dem Benutzer alle Rechte, die er nicht braucht. Nextcloud benötigt im Wesentlichen SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, INDEX, DROP und REFERENCES – also die klassischen Rechte für eine Anwendungsdatenbank. Der Administrator-Account der Datenbank sollte keinesfalls mit dem Nextcloud-Anwendungskonto identisch sein. Es gibt genug Fälle, in denen ein kompromittiertes Nextcloud-System über die Zugangsdaten in der Konfigurationsdatei Zugriff auf die gesamte Datenbank bekommen hat. Das wäre bei einem restriktiven Konto nicht passiert.

Wem die Datenbank zu langsam vorkommt, sollte sich als Nächstes Redis anschauen. Redis dient als Cache für Transaktionsdateien, Session-Daten und teilweise auch für Datei-Locking. Bei Nextcloud kann man ohne Redis leben, aber es ist wie mit einer Küchenmaschine: Es geht auch ohne, aber mit ist es deutlich angenehmer. Besonders bei vielen gleichzeitigen Zugriffen, etwa wenn mehrere Nutzer dieselben geteilten Ordnern durchsuchen, nimmt die Zahl der langsamen Abfragen spürbar ab. Der Redis-Server wird bei Debian als Dienst installiert und in der Nextcloud-Konfiguration als Cache hinterlegt. Danach sollte man die Konfiguration testen, denn ein falsch konfigurierter Redis-Cache kann dazu führen, dass sich Sitzungen überschreiben oder das Datei-Locking bricht.

Nextcloud herunterladen und einrichten

Die Nextcloud-Server-Software kommt als Archiv im Tar.gz-Format. Man lädt es von der offiziellen Seite herunter, prüft die Prüfsumme und entpackt es in das Webserver-Verzeichnis. Viele Anleitungen empfehlen das Verzeichnis direkt als /var/www/nextcloud. Das ist eine gute Wahl, solange die Webserver-Konfiguration darauf zeigt. Doch die Verzeichnisrechte sind ein häufiger Fehler: Der Webserver-Benutzer (bei Debian/Ubuntu ebenfalls www-data) muss Lese- und Schreibrechte im Verzeichnis haben. Nextcloud benötigt den Schreibzugriff nicht nur für die config.php, sondern auch für das Datenverzeichnis und für eine Reihe von Protokoll- und App-Verzeichnissen.

Der ein oder andere kommt auf die Idee, den Dateibesitzer auf „root” zu setzen und nur die nötigen Unterordner freizugeben. Das kann funktionieren, führt aber spätestens beim nächsten Update zu Problemen, wenn das Update-Skript Berechtigungen ändern muss. Der offizielle Weg ist, das gesamte Nextcloud-Verzeichnis dem Webserver-Benutzer zu überlassen – und die Webserver-Konfiguration so zu gestalten, dass keine anderen Skripte in diesem Verzeichnis ausführbar sind. Das geht mit einem einfachen „Deny, Allow”-Block in der Apache- oder Nginx-Konfiguration. Ein optionales Verzeichnisverbot für Datenverzeichnis und Konfiguration ist ebenfalls empfehlenswert.

Anschließend legt man in der Webserver-Konfiguration einen virtuellen Host an. Hier werden Servername, DocumentRoot, die PHP-Handler und die Upload-Limits konfiguriert. Danach aktiviert man die Konfiguration und lädt den Webserver neu. Wer die Nextcloud-Installation nun über den Browser aufruft, bekommt den Installationsassistenten zu sehen. Dort gibt man den Administrator-Benutzernamen, das Passwort sowie Datenverzeichnis und Datenbank-Zugangsdaten an. Wer den Setup-Assistenten verwendet, sollte das Passwort nicht als einfaches Wörterbuchwort wählen, sondern sich im Vorfeld etwas Überlegtes ausdenken. Eine gute Idee ist auch, das Datenverzeichnis außerhalb des Webserver-Root-Verzeichnisses zu legen – also etwa unter /var/www/nextcloud-data statt unter /var/www/nextcloud/data. Das schützt vor ungewolltem Zugriff, falls der Webserver fehlerhaft konfiguriert ist.

Die erste Konfiguration: Dateien, Benutzer, Apps

Ist die Installation abgeschlossen, sieht man sich in der Weboberfläche um. Zuerst wählt man in den Einstellungen die Standardsprache aus, legt die Domain fest, auf der Nextcloud erreicht wird, und vergibt die Sicherheitseinstellungen. Eine der wichtigen Stellen ist das Setzen der vertrauenswürdigen Domänen in der config.php. Wenn man später noch eine zweite Domain verwenden möchte, z. B. für einen internen Zugang, trägt man sie dort ein. Sonst erhält man bereits beim Aufruf eine Fehlermeldung.

Die Benutzerverwaltung von Nextcloud ist angenehm unkompliziert: Man kann Benutzer einzeln anlegen, per CSV importieren oder über LDAP/Active Directory bereistellen lassen. In größeren Umgebungen ist die LDAP-Integration praktisch ein Muss. Es wäre mühsam, für jede neue Mitarbeiterin ein eigenes Konto anzulegen und zu pflegen. Über das LDAP-Modul von Nextcloud lassen sich Gruppen und Benutzer direkt aus dem vorhandenen Verzeichnis abbilden. Die Einrichtung ist nicht schwer, erfordert aber einige Konfigurationsschritte. Ein guter Tipp ist, zuerst mit einem Testbenutzer zu arbeiten und den Zugriff auf eine Gruppe zu begrenzen, bevor man das System produktiv nutzt.

Zusätzlich zu den grundlegenden Benutzerkonten gibt es die App-Verwaltung. Nextcloud bringt bereits einige Apps mit, viele weitere lassen sich im App-Store installieren. Dabei sollte man mit Bedacht vorgehen. Jede App erweitert die Angriffsfläche und kann die Performance beeinflussen. Die App „OnlyOffice“ oder „Collabora Online“ bietet die Bearbeitung von Office-Dokumenten in der Weboberfläche an. Das ist ein großer Vorteil gegenüber einem reinen Dateisynchronisationswerkzeug, benötigt aber einen eigenen Dienst, der erhebliche Ressourcen schlucken kann. Für kleine Installationen reicht oft die App „Nextcloud Office“ in Verbindung mit Collabora. Man muss sich diese Entscheidung bewusst machen: Office-Integration ist keine einfache Nextcloud-Erweiterung, sondern im Grunde ein sekundäres System, das nebenherlaufen muss.

Eine der ersten Fragen, die auftauchen, wenn man Nextcloud nutzt, ist: Was sind überhaupt „Dateien“? Nextcloud ist kein klassisches Backup-System. Es synchronisiert den aktuellen Zustand zwischen mehreren Geräten. Wer eine Datei löscht, löscht sie auch auf allen verbundenen Geräten – die Papierkorb- und Versionsfunktion von Nextcloud kann das mildern, ersetzt aber kein echtes Backup. Gerade bei der Einrichtung im Unternehmen sollte man den Benutzern erklären, dass Nextcloud nicht dasselbe ist wie eine Netzlaufwerk-Freigabe mit Schattenkopien. Es bringt eigene Gesetze mit sich – etwa die Kollaboration an einem Dokument in Echtzeit. Aber die Verantwortung für die Daten liegt immer beim Betreiber des Servers.

Speicher, externe Anbindung und das Datenverzeichnis

Nextcloud arbeitet mit einem Datenverzeichnis, das standardmäßig unterhalb des Installationsverzeichnisses liegt. Für einen kleinen Test ist das okay. Für den Langzeitbetrieb empfehle ich, das Datenverzeichnis auf eine eigene Partition oder ein separates Laufwerk zu legen. Dabei ist zu beachten, dass Nextcloud den Pfad zum Datenverzeichnis in der config.php ohne schließenden Schrägstrich konfigurieren will. Ein häufiger Fehler ist ein falscher Pfad, der dazu führt, dass die Weboberfläche keine Dateien anzeigen kann. Die Logdatei im Verzeichnis /var/log/nextcloud würde den Fehler zwar verraten, aber der Klick in die Weboberfläche ist schneller als jede Log-Analyse.

Nicht zuletzt kann Nextcloud auf externe Speicher bereitstellen, die über SMB, FTP, SFTP oder Amazon S3 angebunden werden. Das ist ein mächtiges Feature, wird aber oft überschätzt. Wenn man einen SLP-basierten Netzlaufwerk-Server anbindet, hat man natürlich alle vorhandenen Dateien in Nextcloud sichtbar. Aber darf man sie auch durchsuchen, versionieren und per Link teilen? Bei sehr großen Verzeichnissen kann die Indizierung zur Geduldsprobe werden – und die Durchsuchung von entfernten Dateien ist dann nicht mehr so flüssig wie bei lokalen Ordnern. Ich habe schon Installationen gesehen, in denen die externen Storage-Verbindungen mehr Probleme verursacht haben als sie gelöst haben. Man sollte also prüfen, ob es nicht besser ist, die Daten direkt auf dem Nextcloud-Server zu lagern und die externen Speicher über ein RAID oder eine Backup-Lösung abzusichern.

Ein weiteres Detail, das gern übersehen wird, ist der Umgang mit verschlüsselten Daten. Nextcloud bietet eine Server-seitige Verschlüsselung als App an. Damit werden die Dateien im Datenverzeichnis verschlüsselt gespeichert. Doch dies ist keine automatische Rettung vor unbefugtem Zugriff auf den Servern, denn Nextcloud muss die Daten beim Zugriff entschlüsseln. Die Verschlüsselung ist also nur ein Schutz des Datenträgers. Wenn man echter Datenschutz für die Benutzer möchte, verwendet man als Admin besser die von den Benutzern selbst verwalteten Verschlüsselungsschlüssel. Die App ist gut dokumentiert, aber sie bringt komplexe Betriebsszenarien mit sich – vor allem bei der Wiederherstellung von Backups. Ich rate davon ab, die Verschlüsselung nachträglich zu aktivieren, ohne die Auswirkungen für die Datenrettung genau zu verstehen.

Sicherheit: Mit System statt Hintertür

Eine sichere Nextcloud-Installation fängt beim Betriebssystem an. Der Server sollte nur die Dienste anbieten, die tatsächlich benötigt werden. Wer keine SSH-Verbindung von außen benötigt, sperrt den Port. Wer eine Firewall einrichtet, sollte neben HTTP/HTTPS und SSH keine Ausnahmen zulassen. Nextcloud selbst bringt einige hartnäckige Sicherheitshinweise in der Verwaltungsoberfläche, die zuerst aufräumen wollen: Die Verwendung einer nicht als Arbeitsdaten markierten Domain, ein abgelaufenes Zertifikat oder die fehlende Konfiguration des „Strict-Transport-Security“-Headers. Nicht alle Hinweise sind kritisch, aber sie sind eine gute Checkliste für den Anfang.

Ein wichtiger Baustein ist die Zwei-Faktor-Authentifizierung (2FA). Nextcloud unterstützt das nativ. Das kann man aktivieren, ohne zusätzliche Apps zu installieren. Auch wenn es für kleine Teams lästig erscheint, ein zusätzliches Gerät zu benutzen: Der Schutz gegen Passwort-Diebstahl überwiegt. Vor allem dann, wenn man Nextcloud mit dem eigenen Smartphone-Sync verbindet und das Passwort eines Benutzers auf demselben Gerät gespeichert ist. Die App-Passwörter sind eine andere sinnvolle Ergänzung: Über die Weboberfläche kann man für jedes Gerät ein eigenes Passwort erzeugen. Das hat einen praktischen Nebeneffekt: Wenn ein Laptop verloren geht, sperrt man nur noch das App-Passwort und nicht das ganze Konto.

Fail2ban ist ein weiterer Baustein, der Einzug in die Grundinstallation halten sollte. Der Dienst überwacht Logs und sperrt IP-Adressen, die wiederholt falsche Passwörter verwenden. Nextcloud besitzt eine eigenständige Fail2ban-Integration, aber die Einrichtung ist mit ein paar Zeilen in einer Jail-Config erledigt. Man sollte sich nicht darauf verlassen, dass die bösen Bots automatisch die eigene IP nicht treffen. Im Internet laufen Scanner, die jede Sekunde nach offenen Webschnittstellen suchen. Ohne Fail2ban ist es nur eine Frage der Zeit, bis irgendein Skript den Login-Endpunkt abgrast. Allerdings darf man Fail2ban nicht zu aggressiv konfigurieren – sonst sperrt man ausgerechnet die vertrauten Benutzer aus, die sich mal in Zeitnot auf einer anderen IP einloggen.

Zu Technik kommt noch etwas Menschliches dazu: Die nächste Schwachstelle ist nicht der Server, sondern der Admin. Ein allzu offenes Cloud-System für die ganze Firma ist eine Einladung zum Missbrauch. Die Standard-Einstellung von Nextcloud erlaubt es Benutzern, Links zu Dateien zu erstellen und diese extern zu teilen. In manchen Unternehmen ist das gewollt, in anderen ist es ein Albtraum. Man sollte sich als Admin also früh überlegen, wie mit Link-Freigaben umgegangen wird: Deaktiviert man die öffentlichen Links komplett oder begrenzt man die Berechtigungen auf „Nur Bearbeiten“ oder „Nur Anzeigen“? Und sollte man einen Link mit einem Passwort schützen? All diese Entscheidungen sind in den Einstellungen relativ einfach zu treffen. Man sollte sie nicht aufschieben, bis das erste Versehen passiert ist.

Updates: Der Weg ist das Ziel

Kein Softwareprodukt ist perfekt, auch Nextcloud nicht. Deshalb gehören Updates zum Alltag. Die Aktualisierung erfolgt entweder über die Weboberfläche oder über die Kommandozeile mit dem occ-Befehl „upgrade“. Letzteres ist für größere Installationen der stabilere Weg, insbesondere dann, wenn Dienste wie Redis oder LDAP eingebunden sind. Vor jedem Update ist das Backup Pflicht – wirklich Pflicht. Ich habe schon verbrannter Erde geglichen, nachdem ein Update die Datenbank beschädigt hat und das Backup nicht verfügbar war. Die Update-Mechanik von Nextcloud ist gut, aber sie ist nicht unfehlbar. Manchmal liegt es an einer inkompatiblen App, die das Update abbricht. Dann ist gut, wenn man einen Snapshot der virtuellen Maschine hat oder zumindest die Dateien und die DB ins eigene Backup legen kann.

Nextcloud liefert regelmäßig kleinere Sicherheitsreleases und gelegentlich große Versionssprünge. Die großen Sprünge erfordern eine sorgfältigere Vorbereitung. Dazu gehört auch, die Release Notes zu lesen – besonders die Liste der neuen Anforderungen. Beispielsweise wechselt Nextcloud häufig die PHP-Version. Wer auf Ubuntu 20.04 mit PHP 7.4 arbeitet und dann auf Nextcloud 31 upgraden will, muss sich zuerst um PHP 8.3 kümmern. Wenn man das vorher nicht berücksichtigt, lässt das Update die Installation möglicherweise nicht nur scheitern, sondern zerschießen. Das ist kein Drama, wenn man es weiß, aber es ist der Klassiker unter den Update-Fallstricken.

Ein Tipp aus der Praxis: Ich halte die Nextcloud-Installation so schlank wie möglich. Je mehr Apps installiert sind, desto mehr Probleme gibt es beim Update. Nicht jede App ist mit jeder neuen Version kompatibel. Und manche Anwendungen, die sich in der App-Verwaltung als offiziell bezeichnen, hinken hinterher, was die Wartung angeht. Ich halte mich seit Jahren an die Faustregel: Apps installieren nur, wenn sie wirklich einen Zweck erfüllen, und nicht aus Experimentierfreude. Das spart nicht nur Update-Zeit, sondern reduziert auch die Angriffsfläche.

Backup: Das System, das immer funktionieren muss

Backups sind das unangenehmste Thema der IT – und gleichzeitig das wichtigste. Für Nextcloud bedeutet ein vollständiges Backup aus mehreren Bausteinen: das Datenverzeichnis, die Datenbank, die Konfigurationsdatei und, wenn vorhanden, die App-Verzeichnisse. Wenn man nur die Datenbank sichert und das Datenverzeichnis vergisst, hat man im Notfall nur die Struktur, aber nicht die Dateien. Wenn man nur die Dateien sichert und die Datenbank nicht, sind alle Benutzer, Kommentare und Teilungslinks verloren. Das alles gehört also in eine Aufgabe.

Die einfachste Methode ist das Anlegen eines Snapshots auf Blockebene – zum Beispiel bei einem VPS über das Hosting-Dashboard. Solche Snapshots sind schnell, aber sie ersetzen kein Backup im Sinne einer Wiederherstellung auf einem anderen System. Deshalb sollte man eine Kombination verwenden: einen Snapshot für den schnellen Rollback und ein zeitgesteuertes Backup auf einen anderen Datenträger oder Server. Für das Datei-Backup reicht rsync. Für die Datenbank ist ein Dump mit mysqldump (oder pg_dump bei PostgreSQL) das Werkzeug der Wahl. Es ist wichtig, die Datenbank nicht im laufenden Betrieb zu kopieren, den man erhält sonst eine inkonsistente Datenbank. Nextcloud selbst kann über die Eigenschaft „Maintenance mode“ in den Auslieferungszustand versetzt werden, was die Anwendung für Webzugriffe sperrt und so eine konsistente Sicherung begünstigt. Doch dann sind auch die Benutzer blockiert – das muss man bei der Wahl des Backup-Zeitpunkts einkalkulieren.

Ein Backup ist nur dann etwas wert, wenn es getestet wird. Ich halte es für einen bedenklichen Zustand, wenn ein Admin seit Jahren ein Backup-Skript eingerichtet hat, aber nie den Ernstfall probiert hat. Eine Wiederherstellung auf einem frischen System ist kein Hexenwerk, aber sie dauert. Man sollte also einmal im Quartal die Restore-Verfahren durchgehen – wenn nötig in einer Testumgebung. Das ist nicht nur eine technische Frage, sondern auch eine der Organisation. Der beste Beweis dafür, dass ein Backup funktioniert, ist die erfolgreiche Wiederherstellung. Und bis zum nächsten Restore-Versuch vertraue ich keinem Backup-Dienst mehr, auch nicht meiner eigenen Cron-Job-Konfiguration.

Performance: Mehr Speed, weniger Frust

Bevor man auf die Idee kommt, die Hardware zu erweitern, sollte man die Software anständig einstellen. Nextcloud ist bekannt dafür, mit einer schlechten Konfiguration träge zu sein. Der wichtigste Hebel ist der OPcache, eine Art Beschleuniger für PHP. Der ist in der PHP-Konfiguration standardmäßig aktiviert, aber oft sind die Werte für eine Nextcloud-Installation nicht optimiert. Die empfohlenen Einstellungen stehen in der offiziellen Dokumentation, und sie haben einen spürbaren Effekt. Wer mit großen Bibliotheken und vielen kleinen Dateien arbeitet, sollte ausserdem das von Nextcloud eingebaute Datei-Caching aktivieren. Das passiert über die Konfigurationsdatei. Wenn man eine Weboberfläche ohne Cache benutzt, wartet man bei geöffneten Ordnern und beim Laden von Kacheln gerne ein paar Sekunden – das wirkt unprofessionell.

Die Anbindung von Redis wurde bereits erwähnt. Sie betrifft die Performance nicht nur bei Zugriffen, sondern auch bei der Datenbank. Ein genauerer Blick auf die Datenbank lohnt sich: MariaDB oder PostgreSQL sollten die Werte für den InnoDB-Puffer oder die Shared Buffers an die verfügbare Systemressourcen anpassen. Oft bleibt hier viel Leistung liegen. Ein weiterer Performance-Killer ist das Ausführen von Nextcloud auf einem Billig-VPS mit langsamem Massenspeicher. Nextcloud läuft durch seine viele Dateizugriffe auf plattenintensiven Speicher angewiesen. Eine einfache HDD wird sich bei parallelen Zugriffen schnell als Nadelöhr erweisen. Der Umstieg auf SSD ist fast immer spürbar.

Zu guter Letzt sollte man auch die Browser-Sitzungen nicht vergessen. Nextcloud verwendet normale PHP-Sessions, die in Dateien auf dem Server gespeichert werden. Bei mehreren Webservern hinter einem Load-Balancer wird dringend Redis als zentraler Session-Speicher empfohlen. Ohne redis werden Sessions nur auf dem Server gespeichert, auf dem der Benutzer sich angemeldet hat – das führt dazu, dass ein Benutzer plötzlich abgemeldet wird, wenn er beim nächsten Klick einen anderen Server im Cluster erwischt. Eine Konfiguration, die in dieser Hinsicht nicht sauber ist, hat schon so manchen Umzug auf mehrere Server verhindert.

Die Kommandozeile: occ und andere Werkzeuge

Ein Nextcloud-Server gehört nicht nur über die Weboberfläche verwaltet. Das Kommandozeilenwerkzeug occ ist das Schweizer Taschenmesser der Administration. Damit lassen sich Benutzer anlegen, Apps installieren, Konfigurationswerte lesen und schreiben, Wartungsarbeiten durchführen und die Synchronisation prüfen. Fast jede Aufgabe, die man in der Weboberfläche machen kann, funktioniert auch über occ – und manche nur dort. Für automatisierte Skripte ist occ unverzichtbar. Man sollte sich mit den wichtigsten Befehlen vertraut machen: occ user:add, occ group:adduser, occ app:install, occ maintenance:mode – und occ status, um schnell den Zustand der Applikation zu sehen.

Bevor man occ verwendet, muss man in das Verzeichnis der Installation wechseln und den Befehl mit dem richtigen PHP-Interpreter aufrufen. Bei Debian/Ubuntu kann das einfach „sudo -u www-data php occ“ lauten. Der Befehl muss mit den Rechten des Webserver-Benutzers ausgeführt werden, sonst kann occ die config.php nicht richtig schreiben. Viele Fehler lassen sich auf diesen einen Punkt zurückführen. Wenn Shell-Befehle nicht funktionieren, weil der falsche Benutzer im System angemeldet ist, fühlt man sich als Admin schnell wie ein blutiger Anfänger. Die Lösung ist so simpel wie leicht zu vergessen: „sudo -u www-data“.

Eine Besonderheit von occ ist, dass es auch für die Verwaltung von Apps zuständig ist, die nicht im App-Store liegen. Man kann zum Beispiel eine eigene App entwickeln oder eine modifizierte Version einer Drittanbieter-App in den App-Ordner legen. Danach führt man occ app:register aus. Das ist für Entwickler und für betriebliche Eigenentwicklungen interessant. Für Einsteiger ist die Weboberfläche meist ausreichend, aber die Kommandozeile sollte man trotzdem kennen – sie ist oft der schnellere Weg, gerade bei Fehlerdiagnosen. Ein kurzer Blick in die Logs ist übrigens ebenfalls über occ möglich: occ log:file – man braucht also nicht unbedingt die Weboberfläche zu öffnen.

Wenn etwas nicht klappt: Logs und Troubleshooting

Es wäre gelogen, wenn man behaupten würde, dass eine Nextcloud-Installation immer auf Anhieb läuft. Es gibt diese Momente, in denen nach dem Einloggen der weiße Bildschirm erscheint, der Synchronisationsclient bei „Synchronisierung läuft“ hängen bleibt oder die Verbindung zum Kalender schlicht keine Daten zeigt. In solchen Fällen hilft nur eines: systematisch vorgehen. Zuerst die Logs lesen – sowohl die von Nextcloud selbst als auch die von Webserver und PHP. Die Nextcloud-Logs liegen standardmäßig im Datenverzeichnis unter nextcloud.log. Wenn das Datenverzeichnis nicht erreichbar ist, sind die Webserver-Logs der nächste Anlaufpunkt. Oft steht dort ein Hinweis wie „PHP Fatal error: Uncaught Exception: Connection refused“ oder „Upstream sent too big header while reading response header“ – beide Nachrichten lassen sich meist schnell entschlüsseln.

Was die Konfigurationsdatei config.php angeht, sollte man vor größeren Änderungen eine Kopie sichern. Manchmal ist die Lösung nämlich, einen Eintrag wieder zu entfernen. Das Prinzip der kleinsten Änderung gilt auch hier: Immer nur eine Variable ändern, testen und dann weitermachen. Das habe ich mir angewöhnt, nachdem ich einmal drei Variablen auf einmal geändert habe und nicht mehr wusste, welche von ihnen das System lahmgelegt hat.

Ein Klassiker ist der Fehler nach einem Umzug des Datenverzeichnisses. Die config.php kennt den alten Pfad und die Datenbank speichert relative Dateipfade. Wenn der Umzug nicht sauber durchgeführt wurde, erscheinen in der Weboberfläche keine Dateien. Eine Möglichkeit, das zu beheben, ist die occ-Konfiguration umzustellen und die Dateien neu zu indizieren. Dazu gibt es occ files:scan — ein Befehl, der das Dateisystem durchforstet und alle Dateien wieder in die Datenbank einträgt. Ich habe oft gesehen, dass Probleme mit Dateien auf dem Server nicht an Nextcloud selbst liegen, sondern daran, dass Datenbank und Dateisystem nicht synchron sind. Die Lösung mit occ files:scan ist meist schneller durchgeführt als der mühsame Datenbankvergleich.

Wie ist das mit Docker?

Docker ist aus modernen IT-Workflows nicht mehr wegzudenken – auch für Nextcloud. Die offiziellen Nextcloud-Container erlauben eine schnelle Bereitstellung, bieten aber auch eine Kehrseite: Man muss sich gut mit Containern, Volumes und Netzwerkbrücken auskennen. Ich nutze Docker häufig für Testinstanzen oder Entwicklungsprojekte. Für produktive Installationen mit vielen Benutzern bin ich zögerlich. Die inneren Abläufe von Nextcloud werden auf einem Bare-Metal-System oder einer VM besser nachvollziehbar. Und Updates über den Container-Stack erfordern mehr Disziplin, als es den Anschein hat: Da die Container auf Read-only-Root-Basis laufen, ist man auf neue Docker-Images angewiesen. Ein Vorgehen, dass bei einer koordinierten Umgebung funktionieren kann, aber für ein kleines Unternehmen schnell unübersichtlich wird.

Wer sich für Docker entscheidet, sollte die persistenden Daten sauber trennen. Neben den Nextcloud-Dateien und der Datenbank gehört auch die Redis-Cache-Konfiguration in die eigene Compose-Datei. Vorgefertigte Stacks im Internet können als Anregung dienen, aber nie als 1:1-Konfiguration übernommen werden. Spätestens dann, wenn der erste Datenverlust auftritt, merkt man, dass man die zugrunde liegenden Mechanismen, also die Verbindung zwischen Container-Volumes und Host-Speicher, verstehen muss. Und ein Docker-Install ist kein Befehl, den man einfach zehnmal ausführt, bis er läuft.

Ein Blick nach vorn: Wartung und Betriebsmodell

Nextcloud ist ein System, das lebt. Sobald es einmal eingerichtet ist, bleibt es nicht stehen. Es kommen neue Funktionen, Sicherheitsupdates, geänderte Anforderungen. Administratoren sollten sich also von Anfang an ein Wartungsmodell überlegen: Wie häufig werden Updates eingespielt? Wer überwacht die Logs? Gibt es einen Notfallplan, falls das Datenverzeichnis voll läuft oder die Datenbank nicht mehr reagiert? Es ist verständlich, dass diese Fragen nicht unbedingt zu den spannendsten gehören, aber sie machen den Unterschied zwischen einem robusten und einem fragilen Betrieb.

Ein weiteres Feld ist die Skalierung: Wenn aus der kleinen Team-Cloud im Laufe der Zeit mehr wird, wer die Rechte verwaltet und wie die Speicherkapazitäten erweitert werden. Die Nextcloud-Server-Einrichtung ist kein einmaliges Projekt. Man kann sie mit einem Garten vergleichen: Er wächst und braucht regelmäßige Pflege – die Früchte rechtfertigen die Mühe. Eine gut konfigurierte Nextcloud läuft nicht nur reibungslos, sondern sie gibt einem auch die Freiheit, die man mit anderen Cloud-Anbietern so schnell nicht bekommt. Die eigenen Daten unter eigener Kontrolle, ohne Kündigungsfristen und ohne Cloud-Token, die in Drittländer fließen.

Für manche ist das ein Experiment, für andere eine Notwendigkeit. Auf jeden Fall zahlt es sich aus, sich in die Grundlagen einzulesen und ein paar Tests zu machen. Denn wer einmal einen Server aufgebaut hat, versteht auch die Erwartungen an die Cloud – und kann sich dann bewusst entscheiden, wie er die eigenen Daten behandelt. Und das ist ehrlich gesagt ein sehr angenehmes Gefühl.