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
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.
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:
/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. |