IT Security

Nextcloud – Sichere Private Cloud auf dem eigenen Server

Nextcloud ist eine selbst gehostete Plattform zur Datei-Synchronisation, -Freigabe und Zusammenarbeit. Sie ermöglicht eine sichere, DSGVO-konforme Cloud-Umgebung ohne externe Anbieter. Durch gezielte Härtungsmaßnahmen lässt sich Nextcloud zu einer robusten, widerstandsfähigen Private‑Cloud‑Lösung ausbauen.

Warum Nextcloud? Vorteile im Überblick

Nextcloud ist 2016 als Fork von OwnCloud entstanden und hat sich seither zur führenden Open-Source-Lösung für selbst gehostete Clouds entwickelt. Im Vergleich zu OwnCloud und kommerziellen Anbietern bietet Nextcloud entscheidende Vorteile:

  • Volle Datenhoheit: Alle Daten verbleiben auf dem eigenen Server – keine Drittanbieter, keine Cloud-Konzerne, vollständige DSGVO-Konformität.
  • 100 % Open Source: Keine proprietäre Enterprise-Edition wie bei OwnCloud. Der gesamte Funktionsumfang ist quelloffen und kostenlos.
  • Mehr als Dateispeicher: Integrierte Apps für Kalender, Kontakte, Mail, Video-Calls (Nextcloud Talk), Dokumentenbearbeitung (Collabora/OnlyOffice) und Aufgabenverwaltung.
  • Ende-zu-Ende-Verschlüsselung: Optionale clientseitige Verschlüsselung sensibler Ordner – selbst Server-Administratoren haben keinen Klartextzugriff.
  • Aktive Community & schnelle Updates: Sicherheitslücken werden rasch geschlossen, die Entwicklung ist sehr aktiv.
  • Umfangreiches App-Ökosystem: Über den App-Store lassen sich Funktionen modular nachrüsten, ohne das System aufzublähen.
  • Flexible Skalierung: Vom Raspberry Pi für den Heimgebrauch bis zum Cluster für Tausende Nutzer.
  • Plattformübergreifend: Native Clients für Windows, macOS, Linux, Android und iOS sorgen für nahtlose Synchronisation.

Systemvoraussetzungen & Architektur

  • Linux-Server (Debian/Ubuntu empfohlen)
  • Apache Webserver mit PHP 8.1 oder neuer
  • MariaDB/MySQL Datenbank
  • Statische IP oder Domain
  • HTTPS-Zertifikat (Let’s Encrypt empfohlen)

Installation von Nextcloud

1. System aktualisieren

bashKlick markiert alles · Strg + C
sudo apt update
sudo apt upgrade

2. Apache, PHP und MariaDB installieren

bashKlick markiert alles · Strg + C
sudo apt install apache2 mariadb-server libapache2-mod-php \
php php-gd php-mbstring php-xml php-zip php-curl php-mysql php-intl \
php-bcmath php-gmp php-imagick

3. Nextcloud herunterladen & entpacken

bashKlick markiert alles · Strg + C
cd /var/www
sudo wget https://download.nextcloud.com/server/releases/latest.zip
sudo unzip latest.zip
sudo chown -R www-data:www-data nextcloud

Datenbank für Nextcloud anlegen

bashKlick markiert alles · Strg + C
sudo mysql -u root -p
bashKlick markiert alles · Strg + C
CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'SICHERES_PASSWORT';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Apache VirtualHost für Nextcloud

bashKlick markiert alles · Strg + C
sudo nano /etc/apache2/sites-available/nextcloud.conf
bashKlick markiert alles · Strg + C
<VirtualHost *:80>
    ServerName cloud.deinedomain.tld
    DocumentRoot /var/www/nextcloud

    <Directory /var/www/nextcloud>
        Options +FollowSymlinks
        AllowOverride All
        Require all granted

        <IfModule mod_dav.c>
            Dav off
        </IfModule>
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/nextcloud_error.log
    CustomLog ${APACHE_LOG_DIR}/nextcloud_access.log combined
</VirtualHost>
bashKlick markiert alles · Strg + C
sudo a2ensite nextcloud.conf
sudo a2enmod rewrite headers env dir mime
sudo systemctl reload apache2

HTTPS mit Let’s Encrypt aktivieren

bashKlick markiert alles · Strg + C
sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d cloud.deinedomain.tld

Erstkonfiguration von Nextcloud

Rufe die Installationsseite auf:

bashKlick markiert alles · Strg + C
https://cloud.deinedomain.tld

Im Setup:

  1. Admin-Benutzer & Passwort setzen
  2. Datenverzeichnis definieren (empfohlen: außerhalb des Webroots)
  3. Datenbankzugangsdaten eintragen

Alternativ lässt sich die Installation auch komplett über die Kommandozeile durchführen:

bashKlick markiert alles · Strg + C
sudo -u www-data php /var/www/nextcloud/occ maintenance:install \
  --database "mysql" \
  --database-name "nextcloud" \
  --database-user "nextcloud" \
  --database-pass "SICHERES_PASSWORT" \
  --admin-user "admin" \
  --admin-pass "ADMIN_PASSWORT" \
  --data-dir "/srv/nextcloud/data"

Hardening – Nextcloud sicher konfigurieren

Nach der Installation sollte Nextcloud gezielt gehärtet werden, um Angriffe zu verhindern und die Integrität der Daten zu schützen.

1. PHP-Hardening

In /etc/php/*/apache2/php.ini restriktive Einstellungen setzen:

bashKlick markiert alles · Strg + C
expose_php = Off
display_errors = Off
log_errors = On
memory_limit = 512M
upload_max_filesize = 512M
post_max_size = 512M
disable_functions = exec,passthru,shell_exec,system,proc_open,popen

Für bessere Performance empfiehlt Nextcloud zusätzlich OPcache:

bashKlick markiert alles · Strg + C
opcache.enable = 1
opcache.interned_strings_buffer = 16
opcache.max_accelerated_files = 10000
opcache.memory_consumption = 128
opcache.save_comments = 1
opcache.revalidate_freq = 60
bashKlick markiert alles · Strg + C
sudo systemctl restart apache2

2. Apache-Hardening

In /etc/apache2/conf-available/security.conf:

bashKlick markiert alles · Strg + C
ServerSignature Off
ServerTokens Prod
TraceEnable Off

Gefährliche HTTP-Methoden deaktivieren:

bashKlick markiert alles · Strg + C
<Directory /var/www/nextcloud>
    <LimitExcept GET POST HEAD>
        Deny from all
    </LimitExcept>
</Directory>

3. HSTS aktivieren

bashKlick markiert alles · Strg + C
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

4. Dateisystem-Hardening

Rechte minimieren:

bashKlick markiert alles · Strg + C
sudo chown -R www-data:www-data /var/www/nextcloud
sudo find /var/www/nextcloud/ -type d -exec chmod 750 {} \;
sudo find /var/www/nextcloud/ -type f -exec chmod 640 {} \;

Datenverzeichnis separat & sicher:

bashKlick markiert alles · Strg + C
sudo chown -R www-data:www-data /srv/nextcloud/data

5. config.php absichern

bashKlick markiert alles · Strg + C
sudo chmod 640 /var/www/nextcloud/config/config.php
sudo chown root:www-data /var/www/nextcloud/config/config.php

6. Trusted Domains setzen

bashKlick markiert alles · Strg + C
'trusted_domains' => [
    0 => 'cloud.deinedomain.tld',
    1 => '192.168.1.10',
],

7. Cron statt AJAX

Stelle in den Nextcloud-Einstellungen den Hintergrundjob auf "Cron" um und richte einen systemweiten Cronjob ein:

bashKlick markiert alles · Strg + C
sudo -u www-data crontab -e
bashKlick markiert alles · Strg + C
*/5 * * * * php -f /var/www/nextcloud/cron.php

8. Fail2Ban Schutz aktivieren

Filter erstellen:

bashKlick markiert alles · Strg + C
sudo nano /etc/fail2ban/filter.d/nextcloud.conf
bashKlick markiert alles · Strg + C
[Definition]
failregex = ^.*Login failed:.*Remote IP:.*'<HOST>'.*$
            ^.*\"remoteAddr\":\"<HOST>\".*Trusted domain error.*$
ignoreregex =
datepattern = ,?\s*"?%%Y-%%m-%%d[T ]%%H:%%M:%%S(%%z)?"?

Jail konfigurieren:

bashKlick markiert alles · Strg + C
sudo nano /etc/fail2ban/jail.local
bashKlick markiert alles · Strg + C
[nextcloud]
enabled = true
port = http,https
filter = nextcloud
logpath = /srv/nextcloud/data/nextcloud.log
maxretry = 5
bantime = 3600
bashKlick markiert alles · Strg + C
sudo systemctl restart fail2ban

9. Firewall-Regeln (UFW)

bashKlick markiert alles · Strg + C
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

10. Sicherheitsstatus prüfen

Nextcloud bringt einen integrierten Sicherheits- und Konfigurationscheck mit. Unter Verwaltung → Übersicht werden Warnungen angezeigt. Zusätzlich lässt sich der Server kostenlos online testen:

bashKlick markiert alles · Strg + C
https://scan.nextcloud.com

Backup & Update Strategie

Datenbank sichern

bashKlick markiert alles · Strg + C
mysqldump -u nextcloud -p nextcloud > /backup/nextcloud.sql

Wartungsmodus & Dateisicherung

bashKlick markiert alles · Strg + C
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on
sudo rsync -Aax /var/www/nextcloud/ /backup/nextcloud-files/
sudo rsync -Aax /srv/nextcloud/data/ /backup/nextcloud-data/
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off

Nextcloud aktualisieren

bashKlick markiert alles · Strg + C
sudo -u www-data php /var/www/nextcloud/updater/updater.phar
sudo -u www-data php /var/www/nextcloud/occ upgrade

Regelmäßige Updates sind essenziell, um Sicherheitslücken zu schließen. Nextcloud unterstützt nur direkte Upgrades von einer Major-Version zur nächsten – keine Versionen überspringen.