Nextcloud – Die private Cloud für volle Datenkontrolle

In einer zunehmend digitalisierten Welt, in der Daten zum wertvollsten Gut geworden sind, wächst auch das Bedürfnis nach Kontrolle und Sicherheit. Genau hier setzt Nextcloud an: eine leistungsstarke Open-Source-Lösung für Datei-Synchronisation, Zusammenarbeit und Kommunikation – betrieben auf dem eigenen Server oder in einer vertrauten Hosting-Umgebung.
Im Gegensatz zu kommerziellen Cloud-Diensten wie Google Drive oder Dropbox bietet Nextcloud den entscheidenden Vorteil, dass alle Daten vollständig unter eigener Kontrolle bleiben. Ob für Unternehmen, Organisationen oder Privatpersonen – Nextcloud ermöglicht es, die eigene Cloud-Infrastruktur datenschutzkonform aufzubauen, ganz ohne Abstriche bei Komfort oder Funktionalität. Volle Datenhoheit, DSGVO-Konformität und höchste Sicherheitsstandards machen Nextcloud zur idealen Wahl für alle, die ihre digitalen Inhalte nicht aus der Hand geben möchten.
Apache2 und PHP installieren und einrichten
Wie immer bei einem neuen Server bringen wir diesen erstmals auf den aktuellen Stand.
sudo apt update && sudo apt upgrade -y
Für den Betrieb der Nextcloud benötigen wir einen Webserver. Wir installieren Apache2 als Webserver Instanz.
sudo apt install apache2 -y
Nachdem die installation von Apache2 abgeschlossen ist, bereiten das zusätzliche Repository für die PHP Module vor. Dieses ist notwendig, da nicht alle Module im Standard Ubuntu Repository zu finden sind. Am Ende updaten wir das System um die neuen Repositorys zu laden.
sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php
sudo apt update
Nun installieren wir die benötigten PHP Module. Wir verwenden dabei die aktuellste Version welche zum jetzigen Zeitpunkt die 8.4 ist. Solltet ihr das Tutorial zu einem späteren Zeitpunkt lesen, passt die Versionsnummer der Module entsprechend an die gewünschte Version an.
sudo apt install php8.4 libapache2-mod-php8.4 php8.4-zip php8.4-xml php8.4-mbstring php8.4-gd php8.4-curl php8.4-imagick libmagickcore-6.q16-6-extra php8.4-intl php8.4-bcmath php8.4-gmp php8.4-cli php8.4-mysql php-pear unzip nano php8.4-apcu redis-server ufw php8.4-redis php8.4-smbclient php8.4-ldap php8.4-bz2 php8.4-sqlite3
Nachdem nun alle PHP Module installiert sind, müssen wir noch einige Einstellungen an php.ini vornehmen. Diese öffnen wir mit folgendem Befehl. Beachtet das sich der Ordner nach eurer installierten Version richtet.
sudo nano /etc/php/8.4/apache2/php.ini
Hier müssen nun einige Einstellungen vornehmen. Durch drücken der Tastenkombination CTRL+w könnt ihr ein Suchfenster öffnen undd nach den entsprechenden Werten suchen, beispielsweise memory_limit. Dies sieht dann so aus.

Folgende Werte müssen angepasst werden, dabei muss das Memory Limit an euren Server angepasst werden. Dieser sollte zirka die hälfte des RAM’s eures Server betragen. In meinem Fall besitzt der Server 4 GB Ram somit gebe ich PHP 2 GB Memory Limit. WICHTIG: Das Memory Limit MUSS in MB angegeben werden. Die anderen Werte dürfen als M oder G (für MB oder GB) deklariert werden.
memory_limit = 2048M
upload_max_filesize = 20G
post_max_size = 20G
date.timezone = Europe/Zurich
output_buffering = Off
Die Werte Upload Max Filesize und Post Max Size definieren die maximale Grösse der einzelnen Dateien welche ihr hochladen könnt. Solltest du über Dateien verfügen, welche grösser als die angegeben 20 GB sind, passe den Wert entsprechend nach oben an. Selbstverständlich kannst du auch einen kleineren Wert verwenden.
Nun fehlen noch die Einstellungen für den Cache. Diese sind bereits vorhanden jedoch noch auskommentiert mit einen Semikolon (;). Das Semikolon muss bei folgenden Werten entfernt werden und einige Werte müssen wie folgt angepasst werden.
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=64
opcache.max_accelerated_files=10000
opcache.memory_consumption=1024
opcache.save_comments=1
opcache.revalidate_freq=1
Nun können wir die php.ini durch drücken von CTRL+O die Datei speichern. Dazu müssen wir den Dateinamen durch drücken von Enter bestätigen. Mit CTRL+X verlassen wir den Editor und kehren zur Konsole zurück.
Damit wäre der Webserver bereit.
MariaDB installieren und Datenbank für Nextcloud einrichten
Für die Verwaltung deiner Daten und weiterer Dienste ist Nextcloud auf eine Datenbank angewiesen, hierfür installieren wir MariaDB, sichern diese zusätzlich ab und richten die Datenbank für Nextcloud ein. Als erstes installieren wir MariaDB.
sudo apt install mariadb-server -y
Nachdem nun MariaDB installiert ist, folgt die Secure Installation mit folgenden Befehl.
sudo mysql_secure_installation
Dabei werden uns folgende Fragen gestellt die wir wie folgt beantworten und mit Enter bestätigen:
- Switch to unix_socket authentication [Y/n] n
- Change the root password? [Y/n] n
- Remove anonymous users? [Y/n] y
- Disallow root login remotely? [Y/n] y
- Remove test database and access to it? [Y/n] y
- Reload privilege tables now? [Y/n] y
Jetzt können wir mit der Einrichtung der Datenbank für Nextcloud beginnen. Dafür öffnen wir die MySQL Konsole.
sudo mysql
Als erstes erstellen wir die Datenbank. Der Name der Datenbank kann dabei angepasst werden. WICHTIG: Behaltet den Namen, diesen müsst ihr bei der Einrichtung der Nextcloud angeben.
CREATE DATABASE nextcloud;
Als nächstes benötigen wir einen Datenbankbenutzer. Auch hier, merkt euch die Daten diese benötigen wir bei der Einrichtung der Nextcloud. Der Benutzer kann angepasst werden und das Passwort muss geändert werden. Hier ist ein sicheres Passwort wird mind. 8 - 12 Zeichen und einer kombination aus Gross- und Kleinbuchstaben sowie Zahlen empfohlen.
CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'hier_starkes_Passwort';
Jetzt haben wir eine Datenbank sowie einen User. Nun muss der User noch berechtigt werden, dass dieser auch auf die Datenbank zugreifen darf.
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextclouduser'@'localhost';
Zum Schluss schreiben die Berechtigungen in die Datenbank und verlassen die MySQL Konsole wieder.
FLUSH PRIVILEGES;
EXIT;
Alle Befehle werden mit "Query OK, 1 row affected" bestätigt. Sollte diese nicht der Fall sein, habt ihr eventuell einen Tippfehler eingebaut oder am Ende das Semikolon vergessen.
So Webserver und Datenbank sind bereit. Weiter geht es mit der Nextcloud installation.
Nextcloud Installation
Nun haben wir die Vorbereitungen abgeschlossen und können die Nextcloud herunterladen und einrichten. Mit den nächsten 3 Befehlen laden wir die letzte Version von Nextcloud herunter, entpacken die zip Datei und verschieben diese aus dem tmp Ordner nach /var/www.
cd /tmp
sudo wget https://download.nextcloud.com/server/releases/latest.zip
sudo unzip latest.zip
sudo mv nextcloud /var/www/
Nun müssen wir die Konfiguration für den Apache2 erstellen damit dieser auch weiss, wo sich das Nextcloudverzeichnis befindet und über welche Domain wir darauf zugreifen.
sudo nano /etc/apache2/sites-available/nextcloud.conf
Nun kopierst du folgenden Inhalt in die Konfigurationsdatei. Du musst hier noch die E-Mail Adresse des ServerAdmin anpassen sowie deine Domain unter der Nextcloud erreichbar sein wird bei ServerName eintragen.
<VirtualHost *:80>
ServerAdmin master@domain.com
DocumentRoot /var/www/nextcloud/
ServerName nextcloud.deinedomain.ch
<Directory /var/www/nextcloud/>
Options +FollowSymlinks
AllowOverride All
Require all granted
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Wie bei der php.ini speicher wir mit CTRL+O und anschliessend Enter das Dokument und verlassen mit CTRL+X das Dokument.
Nun müssen wir die Konfiguration der Nextcloud welche wir gerade erstellt haben im Apache noch aktivieren und die Default Konfiguration deaktivieren. Dieser Schritt ist notwendig um die nextcloud.conf für den Apache zu aktivieren sowie die Defaultseite zu deaktivieren.
sudo a2ensite nextcloud.conf
sudo a2dissite 000-default.conf
Jetzt fehlen noch einige notwendige Module welche die Nextcloud innerhalb des Webservers benötigt. Diese aktivieren wir wie folgt.
sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod env
sudo a2enmod dir
sudo a2enmod mime
Nun sind wir mit der Nextcloud fertig und müssen den Apache Webserver einmal neustarten damit dieser die Änderungen übernimmt.
sudo systemctl restart apache2
Ich möchte meine Nextclouddokumente und Daten in einem anderen Verzeichnis speichern und zwar unter /home/data dafür muss ich einen neuen Ordner erstellen sowie www-data als Besitzer des Ordners einstellen. Dies ist notwendig damit Nextcloud Schreibberechtigung in dem neu erstellten Ordner hat.
Dieser Schritt erleichtert später ein Backup eurer Nextcloud Daten da diese so von den Serverdaten getrennt aufbewahrt werden und trägt zu einer sinnvollen Datenstruktur bei.
sudo mkdir /home/data/
sudo chown -R www-data:www-data /home/data/
Nun passen wir noch die Berechtigungen des Nextcloudordner in /var/www an um auch hier den Zugriff auf sämtliche Ressourcen welche die Nextcloud benötigt sicher zu stellen.
sudo chown -R www-data:www-data /var/www/nextcloud/
sudo chmod -R 755 /var/www/nextcloud/
Absicherung des Servers mit UFW und Let's Encrypt
Damit der Server nicht wie ein offenes Buch dasteht, richten wir UFW als Firewall ein. Wir geben also den SSH Port sowie die Ports zum Apache Webserver frei und aktivieren die Firewall. WICHTIG: Erst müssen die Ports freigeben werden bevor die Firewall aktiviert wird, anderenfalls kann es passieren, dass ihr euch aus dem Server aussperrt.
sudo ufw allow 'apache full'
sudo ufw allow ssh
sudo ufw enable
sudo ufw status
Mit dem Status Befehl können wir uns die Einstellungen anzeigen lassen. Diese müssten nun so aussehen.

Nun sichern wir noch unsere Verbindung auf die Nextcloud mit Let's Encrypt ab. Somit haben wir im Anschluss ein SSL Zertifikat. Als Vorbereitung muss dazu bereits deine Domain oder Subdomain auf den Nextcloudserver zeigen. Sollte dies noch nicht der Fall ist dies zwingend vorher zu erledigen. Anschliessend installieren wir Certbot welcher für uns das Zertifikat abholt und verwaltet.
sudo apt install certbot python3-certbot-apache -y
Jetzt registrieren wir unsere E-Mail Adresse sowie die Domain bei Certbot, dieser prüft anschliessend die Konfiguration und testet die Domain/Subdomain und stellt anschliessend ein Zertifikat aus. Bei dem Befehl muss die E-Mail Adresse sowie deine Domain geändert werden.
sudo certbot --apache -m master@domain.com -d cloud.domain.com
Nun werdet ihr aufgefordert den Terms of Service, also den AGB zuzustimmen sowie euch für die Electronic Frontier Foundation zu registrieren. Zweiteres kann auch abgelehnt werden. Ich habe beides akzeptiert.

Wenn ihr die Domain richtig weitergeleitet und den Befehl korrekt ausgeführt habt, erhaltet die Meldung, dass das Zertifikat erfolgreich erstellt werden konnte sowie wie lange das Zertifikat gültig ist. Ein Let's Encrypt Zertifikat ist 90 Tage gültig und Certbot hat bereits eine automatische Aufgabe geplannt welche das Zertifikat ohne euer zutun rechtzeitig erneuert.
Nextcloud einrichten
Nun da alles abgesichert ist, folgt noch die Einrichtung der Nextcloud sowie die Fehlerbehebung. Wir verbinden uns also mit unserer gewählten Domain und erhalten folgende Ausgabe.

Hier tragen wir nun folgende Dinge ein.
Administratorenkonto
- Euren Benutzernamen sowie Kennwort das ihr im Anschluss für den Login in die Nextcloud benötigt.
Speicher & Datenbank
- Als Speicherort tragen wir unser Verzeichnis /home/data ein welches wir vorbereitet haben
Bei der Datenbank tragen wir folgende Dinge aus der Einrichtung ein:
- Datenbankkonto = Benutzername der Datenbank
- Datenbank-Passwort = Passwort für den Datenbankbenutzer
- Datenbank-Name = Name der Datenbank
Der Datenbank-Host muss auf localhost bleiben. Wenn du alle Daten eingetragen hast kannst du auf Installieren klicken.
Wenn du alles korrekt eingegeben hast, wirst du gefragt ob du empfohlene Apps installieren möchtest. Dies bleibt euch überlassen ob ihr die entsprechenden Apps direkt mit installieren möchtet. Sämtliche Apps können auch nachträglich problemlos mit wenigen Klicks installiert werden.

Fehlerbehebung
Wenn wir nun oben rechts auf unser Profil klicken und anschliessend auf Administrationseinstellungen kommen wir die Übersicht wo uns Sicherheits- & Einrichtungswarnungen angezeigt werden. Hier sind einige Meldungen vorhanden um welche wir uns nun kümmern werden.

Für die Behebung der meisten Fehler benötigen wir innerhalb der Nextcloud Konfiguration noch einige Punkte welche wir erweitern und definieren müssen. Wir öffnen auf der Konsole erst einmal die Nextcloud Config.
sudo nano /var/www/nextcloud/config/config.php
Innerhalb der Nextcloud Config ergänzen wir nach dem Punkt Array folgende Positionen.
'default_language' => 'de', 'default_locale' => 'de', 'default_phone_region' => 'CH', 'skeletondirectory' => '', 'loglevel' => 3, 'filelocking.enabled' => 'true', 'maintenance_window_start' => '1', 'memcache.local' => '\OC\Memcache\APCu', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => array( 'host' => 'localhost', 'port' => 6379, ),
Die Defitionen der Default Language und der Defalt Locales findet ihr hier bei Nextcloud.
Die Defitinion der Telefonregion findet ihr hier auf Wikipedia. Dort scrollt ihr etwas weiter nach unten und seht die vollständige Liste. Für euch sind die Alpha 2 Code Länderkürzel wichtig.
Due restlichen Werte sind Standartwerte unter anderem für den Memcache, das Loglevel und den Maintenance Start. Diese können so 1 zu 1 übernommen werden. Das sollte dann im Anschluss so aussehen. Speichern können wir das Dokument wie bisher mit CTRL+O anschliessend den Dateinamen mit Enter bestätigen und CTRL+X das Dokument schliessen.

Mit diesen Eintragungen sind bereits die meisten der Fehler behoben. Als nächstes kümmern wir uns um die Strict Transport Security. Diese müssen wir in der SSL Konfiguration festlegen. Wir öffnen also erstmal die Nextcloud SSL Konfiguration.
sudo nano /etc/apache2/sites-available/nextcloud-le-ssl.conf
Hier tragen wir nun folgenden Befehl vor </Directory> ein.

<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSub$
</IfModule>

Damit diese Änderung übernommen wird, müssen wir noch den Apache Webserver einmal neustarten.
sudo systemctl restart apache2
Jetzt haben wir noch einen Fehler für die Mimetype Migration. Diesen können wir ganz einfach mit zwei Befehlen beheben die wir im Nextcloudverzeichnis in der Konsole eingeben.
cd /var/www/nextcloud
sudo -u www-data php occ maintenance:repair --include-expensive
sudo -u www-data php occ db:add-missing-indices
Jetzt fehlen nur noch die E-Mail Serverkonfiguration welche ihr in den Grundeinstellungen einstellen müsst. Dies könnt ihr allerdings erst, nachdem ihr eurem Profil eure E-Mail Adresse eingefügt habt da ihr ansonsten die Konfiguration nicht testen und somit nicht speichern könnt.
Was wir nun noch machen ist eine kleine Schönheitskorrektur. In der Adressleiste eurer Cloud wird immer die index.php nach eurem Domainnamen angezeigt. Diese ist auch auf Links ersichtlich was nicht besonders schön aussieht. Wir gehen daher nochmals in die Nextcloud Config rein.
sudo nano /var/www/nextcloud/config/config.php
Hier ergänzen wir nun vor der letzten Klammer noch folgende Zeile.
'htaccess.RewriteBase' => '/',
Wir speichern das Dokument wie die vorherigen male und führen folgenden Befehl in der Konsole aus.
sudo -u www-data php occ maintenance:update:htaccess
Hier erscheint nun die Meldung .htaccess has been updated. Sollte bei euch eine Fehlermeldung erscheinen, kann es sein das ihr euch nicht im Nextcloudverzeichnis befindet. Dann einfach mit cd /var/www/nextcloud ins Nextcloudverzeichnis rein und den Befehl erneut eingeben.
Nun gebt ihr in euerer Adresszeile eure Domain ein und ladet die Seite neu. Die index.php wird euch ab sofort nicht mehr angezeigt.
Fazit
Eine Nextcloud zu installieren benötigt einiges an Schritte bis sie sauber und ohne Fehler läuft. Wenn Sie das jedoch tut, ist sie ein sehr mächtiges Werkzeug welches um viele Möglichkeiten erweitert kann. Es ist gar möglich die Nextcloud zu eurer Hauptschaltzentrale für Dateien, Kommunikation und so weiter auszubauen. Ich wünsche euch viel Spass beim erkunden euer eigenen Nextcloud.