Dies ist eine Neuauflage meiner langen Anleitung zu NextCloud installieren – Komplette Installation inkl. Fix der „Probleme“.
In dieser Anleitung installieren wir NextCloud von Hand und nutzen dabei Apache2 als Webserver und MariaDB als Datenbank.
Diese Anleitung beinhaltet alle notwendigen Schritte, damit die NextCloud am Ende vollständig funktionsfähig ist.
Was wir hier nicht behandeln, ist die Installation von Erweiterungen, welche auch zum Teil extra Software auf dem Server brauchen.
Mit dieser Anleitung kannst du deine eigene NextCloud Zuhause oder im Büro installieren.
Löse dich von der Abhängigkeit von Firmen wie Google, Amazon, Microsoft oder Apple.
Deine Daten – Deine Cloud – Deine Privatsphäre!
Sie setzt allerdings das Mitdenken voraus, da an manchen Stellen individuelle Einstellungen gesetzt werden können oder müssen.
Meine Meinung zu NextCloud findest du HIER.
Warum mit Apache2 statt nginx?
Über die letzten 6 Jahre hinweg hatte ich persönlich weniger Probleme mit Apache2 als Webserver für NextCloud als mit nginx.
nginx kann als Proxy-Server davor geschaltet werden.
Gerade die „KI“-Erweiterungen und alles was auf Docker im Hintergrund läuft, hat mit Apache2 problemloser funktioniert.
Auch liefert die NextCloud GmbH mehr Infos und Konfigurationsbeispiele für Apache2 als für nginx.
Ja, nginx ist ein etwas flotterer Webserver, aber das Ding muss erst mal sauber laufen und das tuts eben mit Apache2.
Warum von Hand und nicht mit Docker?
Je nach Einsatzszenario ist die händische Installatio zu Bevorzugen.
Gerade wenn es etwas spezieller wird (z.B. mit LDAP), hat man so weniger Probleme.
Auch sind die meisten Anleitungen im Internet auf die händische Installation ausgelegt.
Was werden wir machen?
- Den Linux-Server mit allen notwendigen Paketen ausstatten
- Ein Webserver – Apache2 – installieren
- Ein SQL-Server installieren und einrichten>> MySQL / MariaDB
- Die aktuellste PHP-Version installieren (Bei Erstellung der Anleitung war php8.5 aktuell)
- OPTIONAL: Den Server via SSL / HTTPS absichern
- Den Webserver und php etwas editieren
- NextCloud herunterladen und installieren
- Offene Punkte noch fixen
Was brauchen wir dafür?
- Ein Linux-Server (Egal ob vServer, Root-Server, Dedicated Server oder Raspberry Pi)
- Vollen SSH-Zugriff (Root-Account)
- Vielleicht die ein oder andere Linux-Kentniss 😉
Optinal sind:
- Zugriff auf einen lokalen DNS-Server (z.B. Pi-Hole, Technitium, AdGuard Home, ….)
- Eine Domain für gültige SSL-Zertifikate
- Viele Ressourcen für z.B. die Talk oder KI-Erweiterungen
- Extra Festplatten für die Daten
Hinweis
Diese Anleitung wurde auf Basis von Debian 13 erstellt.
Andere Distributionen funktionieren auch, es können aber teilweise andere Befehle und / oder Pakete erforderlich sein.
Die Nachfolgenden Befehle sind alle mit dem root-Account auszuführen.
Es wurde bewusst auf sudo verzichtet, da dies kein Standardpaket bei Debian 13 ist.
1. Alle notwendigen Pakete installieren
Dieser Schritt kann ggf. übersprungen werden, wenn du bereits passende Tools installiert hast und dich mit diesen Vertraut gemacht hast.
Wir installieren hier notwendige Pakete, die gerade bei Debian 13 noch nicht vorhanden sind, aber später für den Betrieb benötigt werden.
apt update && apt upgrade
apt install -y curl gnupg2 git lsb-release ssl-cert ca-certificates apt-transport-https htop btop net-tools zip unzip bzip2 libfile-fcntllock-perl libfontconfig1 libfuse2 wget -y
Je nach System, sollte die aktuelle Zeitzone noch sauber gesetzt werden, damit die Logs später korrekte Zeitstempel haben.
Gerade wer ein LXC in Proxmox nutzt, muss die Zeitzone von Hand setzen.
timedatectl set-timezone Europe/Berlin
2. Apache2 installieren
Apache2 installieren und alle notwendigen Erweiterungen aktivieren.
apt install apache2 libapache2-mod-php -y a2enmod rewrite a2enmod proxy a2enmod proxy_fcgi a2enmod headers a2enmod env a2enmod dir a2enmod mime a2enmod setenvif a2enmod ssl
Die Konfiguration von Apache2 folgt später, da manche Pakete noch fehlen. Das würde sonst fehler geben.
3. Den SQL-Server installieren
Wir installieren hier nun MySQL bzw. MariaDB und sichern die Instanz ab.
Anschließend legen wir einen Account für NextCloud an.
apt install mariadb-server mariadb-client
Installation absichern:
mariadb-secure-installation Switch to unix_socket authentication [Y/n] y Change the root password? [Y/n] y 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
6x mit Y für YES bestätigen und 1x ein Root-Passwort setzten. Das wars.
Nun legen wir einen Account für NextCloud an.
Vergebe daher ein neues SICHERES Passwort bei „PASSWORT-HIER-EINTRAGEN“.
Jede Zeile ist ein ganzer Befehl und muss so abgeschickt werden!
# mysql -u root -p CREATE DATABASE nextcloud; CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'PASSWORT-HIER-EINTRAGEN'; GRANT ALL ON nextcloud.* TO 'nextclouduser'@'localhost' IDENTIFIED BY 'PASSWORT-HIER-EINTRAGEN' WITH GRANT OPTION; FLUSH PRIVILEGES; EXIT;
Wer die Befehle und ihre Auswirkung kennt, kann den Datenbanknamen oder den Nutzernamen auch gerne anpassen.
Hinweis: Beim Passwort nur große und kleine Buchstaben sowie Zahlen verwenden. Datenbanken mögen Sonderzeichen teilweise nicht. Lege einfach ein langes komplexes Passwort an. (A-Z,a-z,0-9)
4. PHP installieren
Hinweis: Bei der Erstellung dieser Anleitung war PHP8.5 aktuell. Je nach dem wann du diese Anleitung liest, gibt es eine neuere Version! Passe in dem Fall einfach die Nummer der Pakete an 😉
Die offiziellen php-Repositorys anbinden:
curl -fsSLo deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg install -m 0644 deb.sury.org-php.gpg /usr/share/keyrings/deb.sury.org-php.gpg rm -f deb.sury.org-php.gpg
. /etc/os-release printf 'Using suite: %s\n' "$VERSION_CODENAME"
case "$VERSION_CODENAME" in
trixie | bookworm | bullseye)
printf '%s\n' \
"Types: deb" \
"URIs: https://packages.sury.org/php/" \
"Suites: $VERSION_CODENAME" \
"Components: main" \
"Signed-By: /usr/share/keyrings/deb.sury.org-php.gpg" | sudo tee /etc/apt/sources.list.d/php.sources >/dev/null
;;
*)
printf 'Sury PHP unterstützt Debian trixie, bookworm, or bullseye.\n' >&2
;;
esac
Alle notwendigen php-Pakete installieren:
apt update apt install php8.5-fpm php8.5-mbstring php8.5-bcmath php8.5-gmp php8.5-xmlrpc php8.5-soap php8.5-apcu php8.5-smbclient php8.5-ldap php8.5-redis php8.5-gd php8.5-xml php8.5-intl php8.5-imagick php8.5-mysql php8.5-cli php8.5-ldap php8.5-zip php8.5-curl redis-server libmagickcore-7.q16-10-extra php-apcu php-redis libapache2-mod-php8.5 -y
Öffne folgende Datei und ändere die Einträge ab bzw. entferne einfach das ; am Anfang der Zeile.
nano /etc/php/8.5/cli/php.ini
Zu ändern:
date.timezone = UTC memory_limit = 512M upload_max_filesize = 500M post_max_size = 500M max_execution_time = 300 opcache.interned_strings_buffer=64
Und das gleiche hier noch einmal:
nano /etc/php/8.5/fpm/php.ini
Zu ändern:
date.timezone = UTC memory_limit = 512M upload_max_filesize = 500M post_max_size = 500M max_execution_time = 300 opcache.interned_strings_buffer=64
Ja in beiden Dateien müssen die gleichen Einstellunge gesetzt werden.
Die Werte können aber nach Belieben angepasst werden.
Wenn du mehr RAM hast, kannst du gerne mehr als 512MB zur Verfügung stellen.
Nun müssen wir noch kurz für REDIS ein paar Parameter setzen.
Öffne die Datei:
nano /etc/php/8.5/mods-available/apcu.ini
Füge die letzten zwei Zeilen hinzu:
extension=apcu.so apc.enabled=1 apc.enable_cli=1
Nun haben wir php und den Mem-Cache eingerichtet. Damit sollte die NextCloud flott laufen.
5. SSL-Zertifikat für HTTPS
Wir erstellen uns hier ein selbst signiertes SSL-Zertifikat.
Dein Browser wird zwar eine Warnung beim Aufrufen später ausgeben, aber wir können SSL sauber nutzen.
Hier in dem Beispiel nutzen wir die Domain wolke.loal für unsere NextCloud.
Wenn du eine andere Domain nutzen willst, ändere die Einträge ab.
Wer ein gültiges Zertifikat nutzen möchte, kann z.B. sich eins mit Let’s Encrypt ausstellen lassen.
Es wird dabei allerdings eine gültige Domain benötigt!
openssl genrsa -out /etc/ssl/private/wolke-local.pem 4096 chmod 0600 /etc/ssl/private/wolke-local.pem chown root:root /etc/ssl/private/wolke-local.pem
Wir legen uns ein Zertifikat an, was 10 Jahre lang gültig ist.
openssl req -new -x509 \ -key /etc/ssl/private/wolke-local.pem \ -out /etc/ssl/certs/wolke-local.pem \ -days 3650 \ -sha256 \ -subj "/CN=wolke.local" \ -addext "subjectAltName=DNS:wolke.local"
cp /etc/ssl/certs/wolke-local.pem /etc/ssl/certs/wolke-lokal-chain.pem chmod 0644 /etc/ssl/certs/wolke-lokal-chain.pem chown root:root /etc/ssl/certs/wolke-lokal-chain.pem
openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096 chmod 0644 /etc/ssl/certs/dhparam.pem chown root:root /etc/ssl/certs/dhparam.pem
Merke dir die Pfade der Zertifikate, die brauchen wir gleich für die Konfiguration von Apache2!
6. Apache2 Konfiguration
Lege eine neue Konfiguration für NextCloud an.
nano /etc/apache2/sites-available/nextcloud.conf
Hier ist eine Beispielkonfiguration.
Ändere die Pfade für die SSL-Zertifikate ab, wenn du andere nutzt.
# HTTP → HTTPS Redirect
<VirtualHost *:80>
ServerName wolke.local
ServerAlias www.wolke.local
# Alle HTTP-Anfragen auf HTTPS umleiten
Redirect permanent / https://wolke.local/
</VirtualHost>
# HTTPS VirtualHost
<VirtualHost *:443>
ServerName wolke.local
ServerAlias www.wolke.local
DocumentRoot /var/www/nextcloud
# SSL-Konfiguration
SSLEngine on
SSLCertificateFile /etc/ssl/certs/wolke-local.pem
SSLCertificateKeyFile /etc/ssl/private/wolke-local.pem
SSLCertificateChainFile /etc/ssl/certs/wolke-lokal-chain.pem
SSLOpenSSLConfCmd DHParameters /etc/ssl/certs/dhparam.pem
# Sichere SSL-Protokolle und Cipher
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
SSLHonorCipherOrder on
# HSTS Header (HTTP Strict Transport Security)
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Header always set Referrer-Policy "no-referrer"
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-XSS-Protection "1; mode=block"
Header always set Permissions-Policy "geolocation=(), microphone=(), camera=()"
</IfModule>
# Nextcloud DocumentRoot Verzeichnis
<Directory /var/www/nextcloud/>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
# DAV deaktivieren (wichtig für Nextcloud)
<IfModule mod_dav.c>
Dav off
</IfModule>
# Umgebungsvariablen setzen
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
</Directory>
# PHP 8.5 FPM Handler
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.5-fpm.sock|fcgi://localhost"
</FilesMatch>
# Logging
ErrorLog ${APACHE_LOG_DIR}/nextcloud-error.log
CustomLog ${APACHE_LOG_DIR}/nextcloud-access.log combined
</VirtualHost>
Diese Konfiguration ist eine gute Basis. Sie enthält allerdings NICHT alle Konfigurationsparameter für Erweiterungen.
Falls du spezielle Addons installierst, musst du unter Umständen die Konfiguration noch erweitern.
Diese Infos kannst du in der Regel aus der ReadME der jeweiligen Erweiterung entnehmen.
Solltest du die NextCloud gleich an einem anderen Ort ablegen wollen, passe die Pfade an (/var/www/nextcloud).
Gibt es bereits eine neue php-Verison als php8.5, ändere die Versionsangabe ebenfalls ab.
Als nächstes deaktivieren wir die Standardkonfiguration von Apache2, aktivieren unsere und testen sie einmal.
Wenn alles passt, starten wir Apache2 neu.
a2dissite 000-default.conf a2ensite nextcloud.conf apache2 -t systemctl restart apache2
Damit SSL und der REDIS-Cache funktionieren, müssen wir das noch kurz aktivieren.
phpenmod -s apache2 apcu phpenmod -s cli apcu systemctl restart apache2
7. NextCloud installieren
NextCloud herunterladen, entpacken und im passenden Pfad ablegen.
Das ist mit sehr wenigen Schritten erledigt.
wget https://download.nextcloud.com/server/releases/latest.zip unzip latest.zip mv nextcloud /var/www/ chown -R www-data:www-data /var/www/nextcloud/ rm latest.zip
Nun kann die Installation im Webbrowser erfolgen.
Rufe dazu https://wolke.local auf und gebe im Installationsassistent alle notwendigen Daten ein.
– Lege ein Administrator-Konto mit Nutzername und Passwort fest
– Gebe die Zugangsdaten für die Datenbank an
Hinweis: Wir haben hier nur die php-Pakete für MySQL/MariaDB installiert. Das nutzen wir ja auch. Aus diesem Grund erscheint allerdings eine Warnung bei der Einrichtung. Das passt so, es funktioniert trotzdem.
8. Warnungen / Fehler entfernen
NextCloud spuckt eventuell ein paar Warnungen, Fehler oder Hinweise aus.
Diese kann der Installationsassistent seit über 6 Jahren nicht einfach selbst lösen.
Diese lassen sich aber recht schnell beseitigen.
Führe als erstes diesen Befehl aus:
su www-data -s /bin/sh -c 'php /var/www/nextcloud/occ maintenance:repair --include-expensive'
Jetzt sollte die Warnung mit Datenbankfehler und MIME-Formate weg sein.
Als nächstes fügen wir noch diese Zeilen in der NextCloud-Konfiguration hinzu:
nano /var/www/nextcloud/config/config.php
'memcache.local' => '\\OC\\Memcache\\APCu',
'memcache.distributed' => '\\OC\\Memcache\\Redis',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' => array(
'host' => 'localhost',
'port' => 6379,
),
'maintenance_window_start' => 2,
'default_phone_region' => 'DE',
'instanceid' => 'Meine-Erste-NextCloud',
Damit hätten wir die Meldung zum APC / REDIS-Cache / Memcache weg, die Wartungszeiträume auf 2 Uhr Nachts gesetzt und für die Telefonnummern Deutschland als Region gesetzt.
Die Instanz-ID haben wir mal auf „Meine-Erste-NextCloud“ gesetzt.
Nun bleiben nur nur noch Meldungen zu Mailserver, Zwei-Faktor-Konfiguration und AppAPI übrig.
Das kannst du selbst im Webinterface bei Bedarf einstellen.
Das sind nur Hinweise, keine Pflicht-Themen die es zwingend zu beheben gilt!
FERTIG!
Deine NextCloud sollte nun laufen!
Im Administrationsbereich findest du zwar noch ein paar Hinweise, diese sind aber nicht kritisch und können bei Bedarf von dir selbst über das Webinterface behoben werden.
Die Grundfunktionen der NextCloud sind nun alle vorhanden!
Du kannst jetzt weitere Benutzer anlegen, den Desktop-Client oder die Smartphone-App verbinden und deine Daten über deine eigene Wolke verwalten!
In der Standardinstallation von NextCloud fehlen noch Erweiterungen wie Kalender, Kontakte, Office, …
Diese müssen bei Bedarf händisch installiert werden.
Ich wünsche viel Spaß!
Und jetzt?
>> Nutze CronJobs für Hintergrundaufgaben
>> Aktualisiere deine Cloud regelmäßig
>> Installiere Erweiterungen
Das Ende ist Nah, aber einfach
Weil alles von Hand zu machen doch etwas Zeit braucht, gibt es hier ein einfaches Bash-Script.
Das macht genau das, was alles als ausführlicher Text hier drüber steht.
Nicht mehr, nicht weniger.
Da du dich bis ans Ende dieser Seite nun begeben hast, sollte dir der Aufbau vermutlich klar sein und du kannst das Script ohne Bedenken oder große Nachfragen ausführen lassen.
Falls du die Anleitung noch nicht gelesen hast, tu es! Das Wissen brauchst du, falls mal was sein sollte.
HIER ist das Script.
Einfach mit wget auf den Server packen, chmod +x Installations-Script.sh abschicken und schon gehts los!
