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:
- Apache2 als Webserver
- PHP 8.3 mit benötigten Modulen
- MariaDB als Datenbank
- Redis und APCu für Caching und File Locking
- Cronjob für Hintergrundaufgaben
- optional LDAP/Active Directory
- optional Reverse Proxy Manager für HTTPS-Zugriff von außen
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:
- Admin-Benutzer und Admin-Passwort
- Datenverzeichnis, zum Beispiel
/home/data - Datenbank: MariaDB/MySQL
- Datenbankname:
nextcloud - Datenbankbenutzer:
nextclouduser - Datenbankpasswort: das zuvor gesetzte Passwort
- Datenbankhost:
localhost
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:
trusted_proxiesnur setzen, wenn wirklich ein Reverse Proxy verwendet wird.- Die IP-Adresse muss die interne IP des Reverse Proxys sein.
overwriteprotocol => httpsist hinter einem HTTPS-Reverse-Proxy häufig notwendig.loglevel = 2ist für den Normalbetrieb sinnvoller als4, da4sehr viele Debug-Informationen erzeugt.
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:
- Block Common Exploits: aktivieren
- Websockets Support: aktivieren
- Force SSL: aktivieren
- HTTP/2 Support: aktivieren
- HSTS: erst aktivieren, wenn HTTPS sauber funktioniert
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:
Host: IP oder DNS-Name des Domain ControllersUser DN: Distinguished Name des LDAP-BenutzersPasswort: Passwort dieses LDAP-BenutzersBase DN: Basis der Domäne, zum BeispielDC=example,DC=de
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
- System aktualisiert
- Apache installiert und aktiviert
- PHP 8.3 inklusive Module installiert
- PHP-Werte angepasst
- MariaDB installiert
- Datenbank und Benutzer erstellt
- Nextcloud nach
/var/www/nextcloudentpackt - Datenverzeichnis vorbereitet
- Apache VirtualHost eingerichtet
- Webinstaller abgeschlossen
- APCu aktiviert
- Redis für File Locking eingerichtet
- Cronjob für
www-dataeingerichtet - Reverse Proxy korrekt konfiguriert
- Admin-Übersicht in Nextcloud geprüft
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.