
Nextcloud auf Linux Server installieren
Diese Anleitung zeigt dir Schritt für Schritt, wie du Nextcloud auf einem Linux-Server mit Apache, PHP und MariaDB installierst und anschließend sicher über HTTPS betreibst.
- Betriebssystem
- Ubuntu Server 24.04 LTS
- Schwierigkeit
- Mittel
- Dauer
- ca. 20–30 Minuten
- Zugriff
- Root/sudo erforderlich
Voraussetzungen
Voraussetzungen
- Ubuntu Server 24.04 LTS
- Root- oder sudo-Zugriff
- Eigene Domain oder Subdomain
- Öffentliche IPv4- oder IPv6-Adresse
- Mindestens 2 GB RAM empfohlen
- Ports 80 und 443 erreichbar
- DNS-Eintrag auf den Server
Für größere Nextcloud-Installationen mit mehreren Benutzern sollte entsprechend mehr RAM und CPU-Leistung eingeplant werden.
Server vorbereiten
Aktualisiere zunächst das Betriebssystem und installiere vorhandene Sicherheits- und Paketupdates.
sudo apt update
sudo apt upgrade -y
sudo apt autoremove -yFirewall konfigurieren
SSH immer zuerst freigeben, bevor UFW aktiviert wird, damit der Administrator sich nicht selbst vom Server aussperrt.
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw statusApache, MariaDB und PHP installieren
Installiere Apache, MariaDB sowie die von Nextcloud benötigten PHP-Erweiterungen.
sudo apt install -y \
apache2 \
mariadb-server \
libapache2-mod-php \
php \
php-cli \
php-common \
php-gd \
php-mysql \
php-curl \
php-mbstring \
php-intl \
php-gmp \
php-xml \
php-imagick \
php-zip \
php-bcmath \
php-apcu \
unzip \
bzip2 \
curl \
wgetDanach:
php -vDienste aktivieren:
sudo systemctl enable --now apache2
sudo systemctl enable --now mariadbStatus prüfen:
sudo systemctl status apache2
sudo systemctl status mariadbDatenbank erstellen
MariaDB absichern
sudo mariadb-secure-installationDabei sollten anonyme Benutzer entfernt, der Remote-Root-Login deaktiviert, die Testdatenbank entfernt und die Privilegien neu geladen werden.
Nextcloud-Datenbank erstellen
sudo mariadbCREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'nextcloud'@'localhost'
IDENTIFIED BY 'DEIN_SICHERES_PASSWORT';
GRANT ALL PRIVILEGES ON nextcloud.*
TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
EXIT;"DEIN_SICHERES_PASSWORT" muss durch ein eigenes langes und sicheres Passwort ersetzt werden.
Nextcloud herunterladen
cd /tmp
wget https://download.nextcloud.com/server/releases/latest.tar.bz2
wget https://download.nextcloud.com/server/releases/latest.tar.bz2.sha256Danach Prüfsumme kontrollieren:
sha256sum -c latest.tar.bz2.sha256Erwartete Ausgabe:
latest.tar.bz2: OKArchiv entpacken:
tar -xjf latest.tar.bz2
sudo mv nextcloud /var/www/nextcloud
sudo chown -R www-data:www-data /var/www/nextcloudApache konfigurieren
Nextcloud-Datenverzeichnis
Das Datenverzeichnis liegt aus Sicherheitsgründen außerhalb des öffentlich erreichbaren Webverzeichnisses.
sudo mkdir -p /srv/nextcloud-data
sudo chown -R www-data:www-data /srv/nextcloud-data
sudo chmod 750 /srv/nextcloud-dataIn /srv/nextcloud-data werden später die eigentlichen Dateien der Nextcloud-Benutzer gespeichert.
Apache Virtual Host
sudo nano /etc/apache2/sites-available/nextcloud.conf<VirtualHost *:80>
ServerName cloud.deinedomain.de
DocumentRoot /var/www/nextcloud
<Directory /var/www/nextcloud/>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
<IfModule mod_dav.c>
Dav off
</IfModule>
</Directory>
ErrorLog ${APACHE_LOG_DIR}/nextcloud_error.log
CustomLog ${APACHE_LOG_DIR}/nextcloud_access.log combined
</VirtualHost>sudo a2enmod rewrite headers env dir mime
sudo a2ensite nextcloud.conf
sudo apache2ctl configtest
sudo systemctl reload apache2Bei erfolgreicher Prüfung sollte "Syntax OK" erscheinen.
Nextcloud installieren
Die Installation wird über die Kommandozeile (occ) abgeschlossen.
cd /var/www/nextcloudsudo -E -u www-data php occ maintenance:install \
--database "mysql" \
--database-name "nextcloud" \
--database-user "nextcloud" \
--database-pass "DEIN_SICHERES_PASSWORT" \
--admin-user "admin" \
--admin-pass "DEIN_ADMIN_PASSWORT" \
--data-dir "/srv/nextcloud-data""DEIN_SICHERES_PASSWORT" und "DEIN_ADMIN_PASSWORT" müssen vor dem Ausführen durch eigene, sichere Passwörter ersetzt werden.
Domain konfigurieren
sudo -u www-data php /var/www/nextcloud/occ \
config:system:set trusted_domains 1 \
--value=cloud.deinedomain.deDanach zur Kontrolle:
sudo -u www-data php /var/www/nextcloud/occ \
config:system:get trusted_domainsHTTPS aktivieren
Sichere deine Nextcloud mit einem kostenlosen TLS-Zertifikat von Let’s Encrypt ab.
sudo apt install -y snapd
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/local/bin/certbot
sudo certbot --apache -d cloud.deinedomain.deZertifikatsverlängerung testen:
sudo certbot renew --dry-runDeine Nextcloud sollte anschließend ausschließlich über HTTPS aufgerufen werden.
HTTPS in Nextcloud hinterlegen
sudo -u www-data php /var/www/nextcloud/occ \
config:system:set overwrite.cli.url \
--value="https://cloud.deinedomain.de"sudo -u www-data php /var/www/nextcloud/occ \
config:system:set overwriteprotocol \
--value="https"sudo -E -u www-data php \
/var/www/nextcloud/occ maintenance:update:htaccessCron konfigurieren
Hintergrundaufgaben sollten im produktiven Betrieb über Cron statt AJAX ausgeführt werden.
sudo -u www-data php /var/www/nextcloud/occ background:cronsudo crontab -u www-data -e*/5 * * * * php -f /var/www/nextcloud/cron.phpDieser Cronjob führt die Nextcloud-Hintergrundaufgaben alle fünf Minuten aus.
PHP optimieren
sudo nano /etc/php/8.3/apache2/php.iniEmpfohlene Beispielwerte:
memory_limit = 512M
upload_max_filesize = 2G
post_max_size = 2G
max_execution_time = 3600
max_input_time = 3600sudo systemctl restart apache2Die optimalen Werte hängen von Serverleistung, Benutzerzahl und maximaler Uploadgröße ab.
APCu-Caching aktivieren
php -m | grep -i apcusudo apt install -y php-apcu
sudo systemctl restart apache2sudo -u www-data php /var/www/nextcloud/occ \
config:system:set memcache.local \
--value='\OC\Memcache\APCu'Installation überprüfen
sudo -u www-data php /var/www/nextcloud/occ statusBeispielausgabe:
installed: true
maintenance: false
needsDbUpgrade: falsesudo apache2ctl configtest
sudo systemctl reload apache2Nützliche Befehle
sudo systemctl status apache2sudo systemctl restart apache2sudo -u www-data php /var/www/nextcloud/occ statusphp -vsudo apache2ctl configtesttail -n 100 /srv/nextcloud-data/nextcloud.logsudo -u www-data php /var/www/nextcloud/occ maintenance:mode --onsudo -u www-data php /var/www/nextcloud/occ maintenance:mode --offDeine Nextcloud ist danach unter deiner konfigurierten Domain erreichbar, als Platzhalter hier gezeigt:
https://cloud.deinedomain.de — ersetze dies durch deine eigene Domain, keine echte/anklickbare Adresse.
Fehlerbehebung
Häufige Probleme und ihre Lösungen — zum Aufklappen anklicken.
Access through untrusted domain
Lösung: die eigene Domain als vertrauenswürdig eintragen.
sudo -u www-data php /var/www/nextcloud/occ \
config:system:set trusted_domains 1 \
--value=cloud.deinedomain.deApache zeigt die Standardseite statt Nextcloud
sudo a2ensite nextcloud.conf
sudo a2dissite 000-default.conf
sudo systemctl reload apache2HTTP Error 500
Apache-Log prüfen:
sudo tail -n 100 /var/log/apache2/nextcloud_error.logNextcloud-Log prüfen:
sudo tail -n 100 /srv/nextcloud-data/nextcloud.logDatenverzeichnis nicht beschreibbar
sudo chown -R www-data:www-data /srv/nextcloud-data
sudo chmod 750 /srv/nextcloud-dataSicherheit und Backups
Server absichern
- Betriebssystem regelmäßig aktualisieren
- Nextcloud regelmäßig aktualisieren
- Apps aktuell halten
- Starke Passwörter verwenden
- Zwei-Faktor-Authentifizierung aktivieren
- SSH-Key-Login verwenden
- Nicht benötigte Ports schließen
- Regelmäßige Backups erstellen
- Datenbank sichern
- Nextcloud-Daten sichern
- config.php sichern
- Backups regelmäßig testen
Was muss gesichert werden?
Diese Verzeichnisse:
- /var/www/nextcloud/config
- /srv/nextcloud-data
Sowie die Datenbank "nextcloud", zum Beispiel:
sudo mariadb-dump nextcloud > /root/nextcloud-database.sqlEin Backup sollte niemals ausschließlich auf demselben Server gespeichert werden wie die produktive Nextcloud.
Installation abgeschlossen
Deine Nextcloud ist jetzt installiert und über deine Domain erreichbar. Öffne nach dem ersten Login die Nextcloud-Verwaltung unter „Verwaltungseinstellungen → Übersicht“ und kontrolliere alle dort angezeigten Sicherheits- und Konfigurationshinweise.
