Zum Inhalt

Quick Install Nextcloud v2 (2026.11)

Für Ungeduldige eine Schnellanleitung für die Installation der Nextcloud auf einem Ubuntu 26.04 LTS.

Verwendete User und Passwörter

Username: Admin
Passwort: Start#1234

UserDaten - Nutzdaten: /var/www/nextcloud/data

Datenbank User: nc_user
Datenbank Passwort: nc_pass
Datenbank Name: nextcloud
Datenbank Server: localhost

Systemupdate und Installation der Notwendigen Pakete.

apt update
apt upgrade
apt install -y apache2  mariadb-server mariadb-client-compat openssl php php-mysql wget curl zip unzip
apt install php-zip php-xml php-mbstring php-gd php-curl php-apcu  php-gmp php-intl php-imagick librsvg2-common libmagickcore-7.q16-10-extra

MariaDB einrichten

Datenbank Vorbereiten

root@nc:~# mysql_secure_installation

Enter current password for root (enter for none):
Switch to unix_socket authentication [Y/n] Y
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

Erstellen der MariaDB für die Nextcloud.

root@nc:~# mysql -u root
Enter password:
CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'nc_user'@'localhost' IDENTIFIED BY 'nc_pass';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nc_user'@'localhost';
FLUSH PRIVILEGES;
exit;

Überprüfen

root@nc:~# mysql -u nc_user -p
Enter password:

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| nextcloud          |
+--------------------+
2 rows in set (0.001 sec)

MariaDB [(none)]> exit;

Apache Konfiguration Anpassen

vi /etc/apache2/sites-available/000-default.conf

<VirtualHost *:80>

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/nextcloud

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <Directory "/var/www/nextcloud">
        Require all granted
        AllowOverride All
        Options FollowSymLinks MultiViews
    </Directory>


</VirtualHost>

Der HTTP-VirtualHost dient zunächst zur Installation in der Testumgebung. HTTPS, Zertifikate mit passenden Namenseinträgen und HSTS richtest Du anschließend nach Teil 3 ein. HSTS wird nicht in diesem HTTP-VirtualHost gesetzt.

PHP Anpassen

vi /etc/php/x.x/apache2/php.ini

memory_limit = 2048M
opcache.interned_strings_buffer=16 
output_buffering = Off
pcre.jit=0

Datenbank-Anpassung:

vi /etc/mysql/mariadb.conf.d/50-server.cnf

innodb_log_file_size = 256M
slow_query_log       = 1
slow_query_log_file  = /var/log/mysql/slow-query.log
long_query_time      = 2

Anpassung Aktivieren

a2enmod headers
a2enmod rewrite
systemctl restart apache2

Nextcloud Installations Script vom Nextcloud Server laden

cd /var/www/
root@nc:# mkdir nextcloud
root@nc:# chown www-data:www-data nextcloud/
root@nc:# cd nextcloud
root@nc:# wget https://download.nextcloud.com/server/installer/setup-nextcloud.php
root@nc:# chown www-data:www-data setup-nextcloud.php

Nextcloud GUI

Weiter über die Nextcloud GUI im Webbrowser.

http://ip-adress/setup-nextcloud.php

Anpassung der Nextcloud conf.php

vi /var/www/nextcloud/config/config.php

'maintenance_window_start' => 1,
'filelocking.enabled' => true,
'memcache.local' => '\OC\Memcache\APCu',
'default_phone_region' => 'DE',
'serverid' => 0,

Lokalen Cache und Dateisperren einrichten

APCu wird hier ausschließlich als lokaler Cache verwendet. Für transaktionale Dateisperren richten wir auf diesem Einzelserver Redis ein. Ohne Redis kann Nextcloud weiterhin die Datenbank für Sperren nutzen; APCu ist kein Ersatz für diesen Sperr-Cache.

In einer Root-Shell installieren und den lokalen Redis-Dienst starten:

apt install php-apcu php-redis redis-server
systemctl enable --now redis-server
systemctl restart apache2
redis-cli -h 127.0.0.1 ping

Die letzte Abfrage sollte PONG liefern. Die folgenden Einstellungen setzen Redis auf 127.0.0.1:6379 ohne zusätzliche Authentifizierung voraus. Redis bleibt lokal gebunden; prüfe eine abweichende Port-, Socket- oder Passwortkonfiguration vor dem Übernehmen. Bei PHP-FPM muss dessen Dienst statt nur Apache neu geladen beziehungsweise gestartet werden.

Füge die folgenden Einträge innerhalb des vorhandenen $CONFIG-Arrays in /var/www/nextcloud/config/config.php ein. Vorhandene gleichnamige Einträge ersetzen, nicht doppelt hinzufügen:

'filelocking.enabled' => true,
'memcache.local' => '\OC\Memcache\APCu',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
    'host' => '127.0.0.1',
    'port' => 6379,
],

Für die nachfolgenden CLI-Aufrufe lässt sich APCu gezielt mit php -d apc.enable_cli=1 aktivieren. Alternativ kannst Du apc.enable_cli=1 in einer auch von PHP-CLI geladenen APCu-Konfiguration setzen. Eine Änderung nur in der Apache-php.ini wirkt nicht auf CLI.

Kontrolle: In der Administrationsübersicht prüfen, ob Cache- und Sperr-Warnungen verschwunden sind. Bei Fehlern zuerst Redis-Erreichbarkeit und das geladene PHP-Modul prüfen, statt die Warnung nur auszublenden.

cd /var/www/nextcloud/
sudo -u www-data php -d apc.enable_cli=1 occ db:add-missing-indices
sudo -u www-data php -d apc.enable_cli=1 occ maintenance:repair --include-expensive

Hintergrundjobs mit Cron einrichten

Nach der abgeschlossenen Nextcloud-Installation legen wir einen Cronjob für den Webserverbenutzer www-data an. Alle fünf Minuten wird cron.php ausgeführt. Die folgenden Shell-Befehle werden als Administrator ausgeführt:

apt install cron
systemctl enable --now cron
sudo -u www-data php -d apc.enable_cli=1 /var/www/nextcloud/occ background:cron
crontab -u www-data -e

Füge in dieser Benutzer-Crontab eine eigene Zeile ein, ohne bereits vorhandene Aufgaben zu löschen. Anders als in /etc/crontab wird hier kein Benutzername ergänzt:

*/5 * * * * /usr/bin/php -d apc.enable_cli=1 -f /var/www/nextcloud/cron.php

/usr/bin/php muss auf eine von Deiner Nextcloud-Version unterstützte PHP-CLI-Version zeigen. Prüfe dies mit /usr/bin/php -v und /usr/bin/php --ini; Webserver und CLI können unterschiedliche Versionen und Konfigurationsdateien verwenden.

Kontrolle: Zuerst einen Durchlauf manuell starten:

sudo -u www-data /usr/bin/php -d apc.enable_cli=1 -f /var/www/nextcloud/cron.php
crontab -u www-data -l

Ein erfolgreicher Durchlauf muss keine Ausgabe erzeugen. Prüfe anschließend in den Administrationseinstellungen unter „Grundeinstellungen“ den Cron-Modus und nach einigen Minuten den Zeitpunkt der letzten Ausführung. Fehler bei fehlenden PHP-Modulen oder Cache-Zugriffen zuerst beheben. Das Wartungsfenster allein ersetzt diese Einrichtung nicht.

Die Einstellung 'maintenance_window_start' => 1, bezieht sich auf 01:00 UTC und verschiebt geeignete tägliche Aufgaben in ein vierstündiges Fenster. Andere Jobs laufen weiterhin regelmäßig.

Info zu den Modulen

Ubuntu 26.04 und PHP 8.5:

Alternativ kann man auch die generischen Paketnamen (z.B. php-mysql oder php-imagick) verwenden; das System installiert dann automatisch die passende Version für die Standard-PHP-Umgebung.

Modul Bedeutung und Funktion
apache2 Der Apache HTTP Server, einer der am häufigsten verwendeten Webserver.
mariadb-server MariaDB, eine relationale Datenbank, die eine Abspaltung von MySQL ist.
openssl Eine Toolkit-Implementierung des Secure Sockets Layer (SSL) und Transport Layer Security (TLS) Protokolls.
php8.5 PHP 8.5, die Skriptsprache für die serverseitige Webentwicklung (Standard unter Ubuntu 26.04).
wget Ein Befehlszeilenprogramm zum Herunterladen von Dateien aus dem Internet.
curl Ein Befehlszeilen-Tool für die Datenübertragung mit URL-Syntax.
zip und unzip Werkzeuge zum Komprimieren und Dekomprimieren von Dateien und Verzeichnissen.
php8.5-mysql PHP 8.5-Erweiterung für die MySQL-Datenbankanbindung.
php8.5-zip PHP 8.5-Erweiterung für die Arbeit mit ZIP-Archiven.
libapache2-mod-php8.5 Apache-Modul für die Integration von PHP 8.5 in den Webserver.
php8.5-xml PHP 8.5-Erweiterung für die Verarbeitung von XML-Dokumenten.
php8.5-mbstring PHP 8.5-Erweiterung für Multibyte-String-Manipulationen.
php8.5-gd PHP 8.5-Erweiterung für die dynamische Erzeugung von Bildern.
php8.5-curl PHP 8.5-Erweiterung für die Unterstützung von cURL, einem Werkzeug für die Datenübertragung mit URLs.
php8.5-apcu PHP 8.5-Erweiterung für den Alternativen PHP Cache - User Cache, ein Cache-System für PHP-Anwendungen.
php8.5-intl PHP 8.5-Erweiterung für Internationalisierung und Lokalisierung.
php8.5-bcmath PHP 8.5-Erweiterung für präzise mathematische Berechnungen mit beliebiger Genauigkeit.
php8.5-gmp PHP 8.5-Erweiterung für GNU Multiple Precision, für mathematische Operationen.
php8.5-imagick PHP 8.5-Erweiterung für die Manipulation von Bildern mit der ImageMagick-Bibliothek.
libmagickcore-7.q16-10-extra Zusätzliche Bibliotheken für ImageMagick (Version 7 unter Ubuntu 26.04), die für die Bildmanipulation benötigt werden.

Konfigurationsoptionen (für PHP 8.5 php.ini)

Konfigurationsoption Bedeutung
output_buffering = Off Deaktiviert den Ausgabe-Puffer.
memory_limit = 2048M Legt das maximale Limit für den Speicherverbrauch eines einzelnen PHP-Skripts auf 2048 Megabyte fest.
upload_max_filesize = 20G Definiert die maximale Größe von hochgeladenen Dateien auf 20 Gigabyte.
post_max_size = 20G Legt das maximale Limit für die Größe aller POST-Daten in einem HTTP-POST-Request auf 20 Gigabyte fest.
opcache.interned_strings_buffer=16 Reserviert 16 Megabyte Speicher im OPcache für internierte Zeichenketten, was die Leistung in Bezug auf Zeichenkettenoptimierung unterstützt.
extension=apcu.so Aktiviert die Erweiterung "apcu.so" (Alternative PHP Cache - User Cache), die einen benutzerdefinierten Cache für PHP-Anwendungen bereitstellt.
apc.enable_cli=1 Aktiviert den APC-Cache auch für PHP-CLI (Command Line Interface) Anwendungen.