Blogbeitrag

Nextcloud Community Edition installieren und optimieren

Praxisanleitung für Nextcloud CE mit Apache, PHP 8.3, MariaDB, Redis/APCu, Cronjob, Reverse Proxy Manager und optionaler LDAP-Anbindung.

20. June 2026
Beitragsbild

Kurzbeschreibung: Eine praxisnahe Anleitung für die Installation von Nextcloud Community Edition auf einem Ubuntu-/Debian-Server mit Apache, PHP 8.3, MariaDB, Redis/APCu, Cronjob, Reverse Proxy Manager und optionaler LDAP-Anbindung.


Ziel der Anleitung

Diese Anleitung beschreibt eine klassische Nextcloud-Installation auf einem Linux-Server. Sie eignet sich für kleine Umgebungen, Homelab-Systeme oder interne Server, bei denen Nextcloud direkt auf dem System installiert wird.

Verwendete Komponenten:

Hinweis: Platzhalter wie cloud.example.de, 192.168.x.x, nextclouduser und sicheres_passwort müssen an die eigene Umgebung angepasst werden.


1. System aktualisieren

Zuerst wird das System aktualisiert:


sudo apt update

sudo apt upgrade -y

Falls noch nicht vorhanden, können grundlegende Werkzeuge installiert werden:


sudo apt install -y software-properties-common unzip nano wget curl ca-certificates


2. Apache installieren

Nextcloud kann mit Apache betrieben werden. Installation:


sudo apt install -y apache2

Apache starten und aktivieren:


sudo systemctl enable --now apache2


3. PHP 8.3 installieren

Je nach Ubuntu-Version ist PHP 8.3 nicht direkt in den Standard-Paketquellen enthalten. In diesem Fall kann das Ondřej-PPA verwendet werden:


sudo add-apt-repository ppa:ondrej/php -y

sudo add-apt-repository ppa:ondrej/apache2 -y

sudo apt update

Danach PHP 8.3 und die benötigten Module installieren:


sudo apt install -y \

  php8.3 libapache2-mod-php8.3 php8.3-cli php8.3-fpm \

  php8.3-mysql php8.3-zip php8.3-xml php8.3-mbstring \

  php8.3-gd php8.3-curl php8.3-imagick php8.3-intl \

  php8.3-bcmath php8.3-gmp php8.3-apcu php8.3-redis \

  php8.3-smbclient php8.3-ldap php8.3-memcached php8.3-bz2 \

  php-pear redis-server libmagickcore-6.q16-6-extra


4. PHP-Konfiguration anpassen

Die Apache-PHP-Konfiguration öffnen:


sudo nano /etc/php/8.3/apache2/php.ini

Empfohlene Werte, abhängig von Servergröße und Umgebung:


memory_limit = 1024M

upload_max_filesize = 20G

post_max_size = 20G

date.timezone = Europe/Berlin

output_buffering = Off

Für OPcache können folgende Werte gesetzt oder angepasst werden:


opcache.enable=1

opcache.enable_cli=1

opcache.memory_consumption=256

opcache.interned_strings_buffer=32

opcache.max_accelerated_files=10000

opcache.save_comments=1

opcache.revalidate_freq=1

Hinweis: Sehr hohe Werte wie memory_limit = 10G oder opcache.memory_consumption = 2048 sind nur sinnvoll, wenn der Server entsprechend viel RAM hat. Für viele Installationen reichen kleinere Werte aus.


5. MariaDB installieren und Datenbank anlegen

MariaDB installieren:


sudo apt install -y mariadb-server

sudo systemctl enable --now mariadb

Grundabsicherung starten:


sudo mysql_secure_installation

Danach in die MariaDB-Konsole wechseln:


sudo mysql

Datenbank und Benutzer erstellen:


CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'sicheres_passwort_hier_eintragen';

GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextclouduser'@'localhost';

FLUSH PRIVILEGES;

EXIT;

Wichtig: Das Passwort sollte lang und zufällig sein und nicht in öffentlichen Dokumentationen oder Git-Repositories landen.


6. Nextcloud herunterladen

In das temporäre Verzeichnis wechseln und Nextcloud herunterladen.

Beispiel mit einer festen Version:


cd /tmp

wget https://download.nextcloud.com/server/releases/latest.zip -O nextcloud.zip

unzip nextcloud.zip

sudo mv nextcloud /var/www/

Berechtigungen setzen:


sudo chown -R www-data:www-data /var/www/nextcloud/

sudo chmod -R 755 /var/www/nextcloud/


7. Datenverzeichnis vorbereiten

Es ist sinnvoll, das Nextcloud-Datenverzeichnis außerhalb des Webroots abzulegen.

Beispiel:


sudo mkdir -p /home/data

sudo chown -R www-data:www-data /home/data

sudo chmod 750 /home/data

Dieses Verzeichnis wird später im Webinstaller als Datenverzeichnis angegeben.


8. Apache VirtualHost erstellen

Neue Apache-Konfiguration anlegen:


sudo nano /etc/apache2/sites-available/nextcloud.conf

Beispielkonfiguration:


<VirtualHost *:80>

    ServerAdmin admin@example.de

    ServerName cloud.example.de

    DocumentRoot /var/www/nextcloud



    <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}/nextcloud_error.log

    CustomLog ${APACHE_LOG_DIR}/nextcloud_access.log combined

</VirtualHost>

Benötigte Apache-Module aktivieren:


sudo a2ensite nextcloud.conf

sudo a2enmod rewrite headers env dir mime

sudo systemctl restart apache2


9. Webinstaller ausführen

Jetzt im Browser die lokale IP oder Domain aufrufen:


http://SERVER-IP/

Im Installer werden eingetragen:

Nach Abschluss können die Standard-Apps installiert werden, falls gewünscht.


10. APCu aktivieren

APCu wird für lokalen Cache verwendet.

Datei öffnen:


sudo nano /etc/php/8.3/mods-available/apcu.ini

Folgenden Wert setzen:


apc.enable_cli=1


11. Redis für File Locking konfigurieren

Redis-Konfiguration öffnen:


sudo nano /etc/redis/redis.conf

Diese Werte setzen oder anpassen:


port 0

unixsocket /var/run/redis/redis.sock

unixsocketperm 770

www-data zur Redis-Gruppe hinzufügen:


sudo usermod -a -G redis www-data

Redis und Apache neu starten:


sudo systemctl restart redis-server

sudo systemctl restart apache2


12. Nextcloud config.php optimieren

Die Nextcloud-Konfiguration öffnen:


sudo nano /var/www/nextcloud/config/config.php

Innerhalb des bestehenden Arrays können folgende Werte ergänzt oder angepasst werden:


  'trusted_proxies' =>

  array (

    0 => '192.168.x.x',

  ),

  'overwriteprotocol' => 'https',

  'default_language' => 'de',

  'default_locale' => 'de',

  'default_phone_region' => 'DE',

  'skeletondirectory' => '',

  'loglevel' => 2,

  'filelocking.enabled' => true,

  'memcache.local' => '\\OC\\Memcache\\APCu',

  'memcache.locking' => '\\OC\\Memcache\\Redis',

  'redis' =>

  array (

    'host' => '/var/run/redis/redis.sock',

    'port' => 0,

    'timeout' => 0.0,

  ),

  'log_type' => 'file',

  'logfile' => '/var/www/nextcloud/data/nextcloud.log',

  'logdateformat' => 'F d, Y H:i:s',

  'maintenance' => false,

Hinweise:


13. Cronjob für Nextcloud einrichten

Nextcloud sollte nicht per AJAX-Cron laufen, sondern per System-Cron.

Cron für www-data öffnen:


sudo crontab -u www-data -e

Eintragen:


*/5 * * * * php -f /var/www/nextcloud/cron.php

Danach in Nextcloud unter:


Administrationseinstellungen → Grundeinstellungen → Hintergrund-Aufgaben

auf Cron umstellen.


14. HTTPS und HSTS

Wenn Nextcloud direkt mit Let's Encrypt auf dem Server betrieben wird, kann HSTS in der Apache-SSL-Konfiguration gesetzt werden.

Beispiel innerhalb des SSL-VirtualHosts:


<IfModule mod_headers.c>

    Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"

</IfModule>

Wichtig: HSTS sollte erst aktiviert werden, wenn HTTPS zuverlässig funktioniert. Bei falscher Konfiguration kann man sich sonst selbst aussperren oder Browser auf HTTPS zwingen, obwohl das Zertifikat/Proxy-Setup noch nicht sauber ist.


15. Einstellungen im Nginx Proxy Manager

Wenn Nextcloud hinter Nginx Proxy Manager läuft, sind folgende Optionen sinnvoll:

Im Feld Advanced können folgende Werte ergänzt werden:


client_body_buffer_size 512k;

proxy_read_timeout 86400s;

client_max_body_size 0;



location /.well-known/carddav {

    return 301 $scheme://$host/remote.php/dav;

}



location /.well-known/caldav {

    return 301 $scheme://$host/remote.php/dav;

}



location /.well-known/webfinger {

    return 301 $scheme://$host/index.php/.well-known/webfinger;

}



location /.well-known/nodeinfo {

    return 301 $scheme://$host/index.php/.well-known/nodeinfo;

}


16. Optionale LDAP-/Active-Directory-Anbindung

Für die LDAP-Anbindung wird in Nextcloud die App LDAP user and group backend benötigt.

Beispielwerte mit Platzhaltern:


Host: ldap://192.168.x.x

User DN: CN=ldap,CN=Users,DC=example,DC=de

Passwort: Passwort des LDAP-Benutzers

Base DN: DC=example,DC=de

Erklärung:

In produktiven Umgebungen sollte nach Möglichkeit LDAPS verwendet werden:


ldaps://dc01.example.de


17. Wartungsbefehle und Fehlerbehebung

Fehlende Datenbank-Indizes

Wenn Nextcloud fehlende Indizes meldet:


cd /var/www/nextcloud

sudo -u www-data php occ db:add-missing-indices

Too Many Requests / Bruteforce-Sperre

Wenn ein Benutzer sein Passwort geändert hat, aber ein alter Client weiter mit dem alten Passwort verbindet, kann Nextcloud die IP blockieren.

Typische Meldung:


OCA\DAV\Connector\Sabre\Exception\TooManyRequests

Zurücksetzen für eine bestimmte öffentliche Client-IP:


sudo -u www-data php /var/www/nextcloud/occ security:bruteforce:reset <OEFFENTLICHE-IP>

Beispiel:


sudo -u www-data php /var/www/nextcloud/occ security:bruteforce:reset 203.0.113.10

Nextcloud-Systemcheck

Nach der Installation sollte der Nextcloud-Adminbereich geprüft werden:


Administrationseinstellungen → Übersicht

Dort werden Hinweise zu fehlenden PHP-Modulen, falschen Proxy-Einstellungen, fehlenden Indizes oder Hintergrundaufgaben angezeigt.


18. Abschluss-Checkliste


Fazit

Mit Apache, PHP 8.3, MariaDB, Redis und APCu lässt sich eine stabile Nextcloud Community Edition Installation aufbauen. Wichtig ist, nach der Grundinstallation die Optimierungen sauber nachzuziehen: Caching, Cronjob, Proxy-Einstellungen und Admin-Übersicht entscheiden später darüber, ob die Installation dauerhaft sauber und performant läuft.

← Zurück zum Blog