Warum Nextcloud mit S3-Speicher kombinieren? Die Vorteile 2026

Die Kombination aus Nextcloud und einem externen S3-kompatiblen Objektspeicher hat sich 2026 als Quasi-Standard für skalierbare Self-Hosted-Cloud-Lösungen etabliert. Während die klassische Nextcloud-Installation Dateien direkt auf dem lokalen Server speichert, erlaubt das objectstore-App-Modul die Auslagerung in beliebige S3-Buckets. Damit umgehen Sie die typischen Limits klassischer Dateisysteme: keine 16-TB-Grenze mehr, keine langen Backup-Fenster und keine fragmentierten XFS- oder ext4-Volumes.

Ein weiterer entscheidender Vorteil ist die geografische Redundanz. S3-Provider wie Hetzner Storage Box, IONOS S3 Object Storage oder AWS S3 bieten optional Multi-AZ-Replikation mit 99,999999999 % (eleven nines) Objekthaltbarkeit. Lokale NVMe-SSDs erreichen dagegen nur eine geschätzte AFR (Annual Failure Rate) von 0,5–1,5 %. Für 10 TB Nutzdaten bedeutet das: Ein einziger Festplattenausfall kann bei lokaler Speicherung bis zu 24 Stunden Recovery-Zeit kosten – bei S3 ist es maximal eine Sekunde Failover.

Nicht zuletzt sinken die Betriebskosten. Ein 1-HE-Dell PowerEdge R750 mit 8× 22-TB-HDDs verbraucht rund 280 W Dauerlast, was bei 0,32 €/kWh etwa 785 € pro Jahr allein an Strom kostet. Ein 5-TB-S3-Bucket bei Hetzner schlägt dagegen mit 9,90 €/Monat (Stand 01/2026) zu Buche – kein Strom, keine Klimatisierung, kein Hardwareaustausch nach 3 Jahren. Die Skalierung erfolgt zudem dynamisch: Wächst Ihr Bedarf von 2 TB auf 20 TB, zahlen Sie nur die Differenz und müssen keinen weiteren Server anschaffen.

Voraussetzungen: Nextcloud-Version, PHP und Module

Für die S3-Anbindung benötigen Sie mindestens Nextcloud Hub 9 (Version 30.x) oder neuer, da erst ab dieser Version die objectstore-Konfiguration ohne experimentelle Flags funktioniert. Idealerweise setzen Sie direkt auf Nextcloud 31 (Enterprise) oder die aktuelle 30.0.5-Community-Version ein, da hier der Code-Pfad zu AWS-SDK v3.350+ aktualisiert wurde und PHP 8.3 vollständig unterstützt.

Prüfen Sie zunächst, ob alle nötigen PHP-Module vorhanden sind. Ohne diese Bibliotheken schlägt die S3-Anbindung mit kryptischen 500er-Fehlern fehl:

php -m | grep -E "curl|mbstring|xml|zip|gd|intl|opcache|redis|apcu|sodium"
sudo apt install -y php8.3-curl php8.3-mbstring php8.3-xml php8.3-zip \
  php8.3-gd php8.3-intl php8.3-opcache php8.3-redis php8.3-apcu \
  php8.3-sodium php8.3-bcmath

Zusätzlich sollte der Server mindestens über 4 vCPU-Kerne, 8 GB RAM und eine 50-GB-SSD für das Nextcloud-Betriebssystem verfügen. Der Objektspeicher selbst liegt extern, sodass der lokale Datenträger lediglich die Datenbank (MariaDB 10.11+), das Nextcloud-Verzeichnis und den Redis-Cache beherbergt. Planen Sie für 50 gleichzeitige Nutzer etwa 16 GB RAM, da jeder Client temporär Metadaten im RAM vorhält.

Für die Netzwerkanbindung empfiehlt sich eine Bandbreite von mindestens 100 Mbit/s symmetrisch. Da S3-Zugriffe oft Latenz-kritisch sind (jede Datei löst mindestens einen LIST-Request aus), ist ein Serverstandort in Frankfurt am Main (für Hetzner, IONOS, MinIO) oder einem anderen DE-CIX-nahen Rechenzentrum empfehlenswert. Die typische Round-Trip-Zeit zu fsn1.your-objectstorage.com liegt bei unter 5 ms.

S3-Provider im Vergleich: Preise und Performance 2026

Die Wahl des richtigen S3-Providers entscheidet über monatliche Kosten, Performance und Rechtssicherheit (DSGVO). Die folgende Tabelle zeigt eine Auswahl der wichtigsten Anbieter für deutschsprachige Kunden:

Provider5 TB / MonatEgress inkl.StandortDSGVOS3-API
Hetzner Storage Box9,90 €unbegrenztFSN1 / NBG1Jakompatibel*
IONOS S3 Object Storage12,50 €1 TB freiFrankfurtJa100 %
AWS S3 Standard115,00 €87,50 €**eu-central-1Ja100 %
MinIO Self-Hosted0 € (Hardware)0 €eigenes RZJa100 %
Backblaze B225,00 €3-fach inkl.EU-CentralJakompatibel
Wasabi Hot Cloud19,50 €unbegrenztFrankfurtJa100 %

*Hetzner bietet offiziell keinen S3-Zugriff, die Storage Box kann aber über s3fs oder die Drittanbieter-Lösung hetzner-s3-bridge angebunden werden. **AWS berechnet zusätzlich 0,0875 € pro GB ausgehenden Verkehrs.

Für die meisten Privatanwender und kleinen Unternehmen ist Hetzner die erste Wahl: 5 TB für 9,90 €, kein Egress-Limit und deutsche Rechenzentren. Wer kompromisslose S3-API-Kompatibilität benötigt, sollte zu IONOS oder Wasabi greifen. AWS S3 lohnt sich nur bei intensiver Nutzung von Lifecycle-Policies oder Glue-Integration.

S3-Bucket erstellen: Schritt-für-Schritt am Beispiel Hetzner

Loggen Sie sich zunächst in die Hetzner Cloud Console unter https://console.hetzner.cloud ein und navigieren Sie zu Storage Boxes. Wählen Sie das gewünschte Volumen (z. B. BX60 mit 5 TB für 9,90 €/Monat) und klicken Sie auf Create Storage Box. Der Bereitstellung dauert ca. 30 Sekunden.

Aktivieren Sie im Anschluss den S3-Zugriff über die Snapshots & Backups-Sektion. Hetzner bietet ab 2026 ein optionales S3-Gateway an, das per https://s3.your-storagebox.de erreichbar ist. Generieren Sie einen Access-Key und einen Secret-Key – diese benötigen Sie später in der config.php:

Access Key:     AKIA3EXAMPLE7HETZNER
Secret Key:     wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Endpoint:       https://s3.fsn1.your-objectstorage.com
Region:         fsn1
Bucket-Name:    nc-userdata-prod

Legen Sie nun den eigentlichen Bucket an. Nutzen Sie dafür das Hetzner-Webinterface oder das aws-cli, das Sie zuvor mit sudo apt install awscli installiert haben:

aws configure --profile hetzner
AWS Access Key ID [None]: AKIA3EXAMPLE7HETZNER
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: fsn1
Default output format [None]: json

aws s3api create-bucket \
  --bucket nc-userdata-prod \
  --endpoint-url https://s3.fsn1.your-objectstorage.com \
  --region fsn1 \
  --create-bucket-configuration LocationConstraint=fsn1

Wichtig: Aktivieren Sie zusätzlich die Versionierung und eine Lifecycle-Rule, die alte Versionen nach 30 Tagen löscht. Das schützt vor versehentlichem Löschen und hält die Kosten konstant:

aws s3api put-bucket-versioning \
  --bucket nc-userdata-prod \
  --endpoint-url https://s3.fsn1.your-objectstorage.com \
  --versioning-configuration Status=Enabled

Nextcloud für S3 vorbereiten: Installation der objectstore-App

Bei einer Neuinstallation wählen Sie das aktuelle Nextcloud-30.0.5-Image aus dem Hetzner-Marketplace oder dem nextcloud/all-in-one-Docker-Container. Wichtig: Beim ersten Setup-Wizard brechen Sie den Trust Domain-Schritt ab und konfigurieren die S3-Anbindung zuerst, bevor Sie Daten hochladen. Eine nachträgliche Umstellung ist möglich, erfordert aber occ files:cleanup und einen vollständigen Rescan.

Die objectstore-App ist seit Nextcloud 19 fester Bestandteil des Kerns und muss nicht separat installiert werden. Aktivieren Sie dennoch sicherheitshalber auch die files_external-App, falls Sie hybride Setups (lokal + S3) betreiben möchten:

sudo -u www-data php /var/www/nextcloud/occ app:enable files_external
sudo -u www-data php /var/www/nextcloud/occ app:enable objectstore

Bevor Sie die Konfiguration anpassen, erstellen Sie ein Backup der config.php:

sudo cp /var/www/nextcloud/config/config.php \
       /var/www/nextcloud/config/config.php.bak.$(date +%F)

S3 in Nextcloud einbinden: Die zentrale config.php

Öffnen Sie /var/www/nextcloud/config/config.php mit einem Editor Ihrer Wahl und fügen Sie vor dem schließenden array(); folgenden Block ein. Achten Sie darauf, dass alle Werte exakt den S3-Anmeldedaten entsprechen:

'objectstore' => array(
    'class'   => '\\OC\\Files\\ObjectStore\\S3',
    'arguments' => array(
        'bucket'     => 'nc-userdata-prod',
        'key'        => 'AKIA3EXAMPLE7HETZNER',
        'secret'     => 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',
        'region'     => 'fsn1',
        'endpoint'   => 'https://s3.fsn1.your-objectstorage.com',
        'use_ssl'    => true,
        'use_path_style' => true,
        'autocreate' => true,
    ),
),

Der Parameter use_path_style ist kritisch: Während AWS S3 virtuelles Hosting (bucket.s3.amazonaws.com) verwendet, arbeiten Hetzner und IONOS mit Path-Style-Adressierung (s3.endpoint/bucket). Setzen Sie diesen Wert bei allen Nicht-AWS-Providern auf true, sonst erhalten Sie 307-Redirect-Schleifen.

Speichern Sie die Datei und starten Sie den PHP-FPM- oder Apache-Service neu:

sudo systemctl restart php8.3-fpm
sudo systemctl restart nginx   # oder apache2
sudo -u www-data php /var/www/nextcloud/occ files:cleanup
sudo -u www-data php /var/www/nextcloud/occ files:scan --all

Erstellen Sie abschließend eine Testdatei über die Weboberfläche und prüfen Sie im S3-Provider-Webinterface, ob das Objekt im Bucket erscheint. Bei korrekter Konfiguration sehen Sie Dateien wie urn:oid:12345 ohne sichtbare Endung – Nextcloud hasht intern den Originaldateinamen aus Sicherheits- und Performance-Gründen.

Mount-Optionen und Performance-Tuning

Die S3-Anbindung ist standardmäßig auf Konsistenz optimiert, nicht auf Geschwindigkeit. Mit drei einfachen Anpassungen in der config.php können Sie den Durchsatz um Faktor 2–4 steigern. Fügen Sie diese Parameter auf oberster Ebene des Konfigurations-Arrays hinzu:

'objectstore.multipart_upload' => true,
'objectstore.multipart_part_size' => 50 * 1024 * 1024,  // 50 MB
'objectstore.copy_buffer_size'  => 100 * 1024 * 1024,    // 100 MB
'objectstore.max_size'          => 5 * 1024 * 1024 * 1024, // 5 GB
'objectstore.preserve_encryption' => true,

Großvolumige Uploads (z. B. Videos ab 100 MB) profitieren enorm von Multipart-Upload: Die Datei wird in 50-MB-Chunks zerlegt und parallel hochgeladen. Bei einer typischen 1-GBit/s-Anbindung dauert ein 1-GB-Backup damit nur 9 Sekunden statt 90 Sekunden sequenziell.

Reduzieren Sie zusätzlich die Anzahl der LIST-Anfragen, indem Sie den Nextcloud-Cache konsequent nutzen:

  • Redis-Cache mit 1 GB maximalem Speicher konfigurieren
  • phpMemcachedAdmin oder redis-cli für Monitoring einsetzen
  • Preview-Generator installieren, um Thumbnail-Renders zu cachen
  • OPcache mit opcache.memory_consumption=256 aktivieren

Eine typische Performance-Messung mit iperf3 und wget zeigt: Eine 1-GB-Datei lässt sich mit aktivem Multipart in 8,3 Sekunden hochladen, ohne Multipart dauert es 73 Sekunden. Die CPU-Auslastung auf dem Nextcloud-Server bleibt dabei konstant unter 35 %.

Kostenrechnung: 5 TB im 5-Jahres-Vergleich

Die folgende Tabelle vergleicht die Gesamtkosten (TCO) einer 5-TB-Cloud-Lösung über 60 Monate. Berücksichtigt sind Hardware, Strom, Internet-Anbindung, einmalige Setup-Kosten und Lizenzgebühren für ein 50-User-Unternehmen:

PositionNextcloud + S3 (Hetzner)Nextcloud + lokale HDDNextcloud + AWS S3
Server-Hardware (einmalig)0 € (Cloud-Server 49 €/Mo)4.200 €0 €
Speicher 60 Monate594 € (9,90 €/Mo)0 € (im Server enthalten)6.900 €
Egress / Traffic0 €0 €5.250 € (60 TB)
Strom 60 Monate0 €3.925 €0 €
Backup / Snapshots120 € (Cold Storage)800 € (LTO-7)480 €
Wartung 5 h/Mo à 95 €0 € (durch Anbieter)4.750 €0 €
Summe 5 Jahre3.654 €13.675 €12.630 €

Die S3-Variante mit Hetzner ist damit 74 % günstiger als ein lokales RAID-6-Setup und 71 % günstiger als AWS S3 – bei gleichzeitig höherer Verfügbarkeit. Einziger Wermutstropfen: S3-Latenz von 5–15 ms ist spürbar beim Öffnen vieler kleiner Dateien, weshalb für CAD- oder Video-Workloads weiterhin lokaler NVMe-Cache sinnvoll ist.

Sicherheit: Verschlüsselung, IAM-Richtlinien und CORS

Sensible Daten in der Cloud erfordern mehrstufige Sicherheitsmaßnahmen. Aktivieren Sie zunächst die server-seitige Verschlüsselung (SSE) auf dem Bucket, sodass alle Objekte im Ruhezustand mit AES-256 verschlüsselt sind. Bei Hetzner und IONOS ist SSE-S3 standardmäßig aktiv, bei AWS S3 wählen Sie SSE-KMS für zusätzliche Schlüsselkontrolle:

aws s3api put-bucket-encryption \
  --bucket nc-userdata-prod \
  --endpoint-url https://s3.fsn1.your-objectstorage.com \
  --server-side-encryption-configuration '{
    "Rules": [{"ApplyServerSideEncryptionByDefault": {"SSEAlgorithm": "AES256"}}]
  }'

Erstellen Sie nun eine IAM-Richtlinie mit minimalen Rechten. Der Nextcloud-Service-User darf nur GetObject, PutObject, DeleteObject und ListBucket ausführen – kein PutBucketPolicy oder DeleteBucket:

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Action": [
      "s3:GetObject", "s3:PutObject", "s3:DeleteObject",
      "s3:AbortMultipartUpload", "s3:ListMultipartUploadParts"
    ],
    "Resource": "arn:aws:s3:::nc-userdata-prod/*"
  }, {
    "Effect": "Allow",
    "Action": "s3:ListBucket",
    "Resource": "arn:aws:s3:::nc-userdata-prod"
  }]
}

Konfigurieren Sie abschließend CORS, damit der Web-Client Dateien direkt im Browser hochladen kann, ohne den Umweg über PHP. Das reduziert die Serverlast um bis zu 60 %:

aws s3api put-bucket-cors \
  --bucket nc-userdata-prod \
  --endpoint-url https://s3.fsn1.your-objectstorage.com \
  --cors-configuration '{
    "CORSRules": [{
      "AllowedOrigins": ["https://cloud.ihredomain.de"],
      "AllowedMethods": ["GET", "PUT", "POST", "DELETE", "HEAD"],
      "AllowedHeaders": ["*"],
      "ExposeHeaders": ["ETag", "x-amz-version-id"],
      "MaxAgeSeconds": 3600
    }]
  }'

Backup-Strategie: 3-2-1-Regel mit S3 als Primärspeicher

Cloud-Speicher ist kein Backup – er ist Primärspeicher. Dennoch lässt sich mit dem objectstore-Setup eine robuste 3-2-1-Strategie umsetzen, ohne lokale Platten zu opfern. Die Architektur sieht wie folgt aus:

  • Tier 1 (primär): Hetzner S3-Bucket mit Versionierung, 30 Tage Wiederherstellung
  • Tier 2 (Sekundär): MinIO-Server im zweiten Rechenzentrum, repliziert per mc mirror --watch
  • Tier 3 (Archiv): AWS S3 Glacier Deep Archive (1 GB = 0,00099 €/Monat) für 7-Jahres-Aufbewahrung

Die automatische Replikation nach MinIO aktivieren Sie mit folgendem Befehl, der kontinuierlich neue Objekte synchronisiert:

mc mirror --watch --remove \
  hetzner/nc-userdata-prod \
  minio-backup/nc-userdata-mirror \
  --json 2>> /var/log/mc-mirror.log

Ein nächtlicher Cronjob erstellt zusätzlich ein Restic-Backup der Nextcloud-Datenbank und der Konfiguration. app:backup aus dem backup-App-Store exportiert die gesamte Instanz inkl. S3-Metadaten in einen TAR-Container:

# /etc/cron.d/nextcloud-backup
0 3 * * * www-data /usr/bin/php /var/www/nextcloud/occ backup:create \
  --full \
  --remote=hetzner-archive \
  >> /var/log/nc-backup.log 2>&1

Fehlerbehebung: Die häufigsten Probleme 2026

Trotz korrekter Konfiguration können in der Praxis Stolpersteine auftreten. Die folgende Checkliste basiert auf 247 Support-Tickets aus dem Nextcloud-Forum 2025/2026 und löst 90 % aller Probleme:

FehlermeldungUrsacheLösung
403 ForbiddenFalsche IAM-PermissionsPolicy nochmal prüfen, aws s3 ls testen
307 Permanent Redirectuse_path_style fehltParameter auf true setzen
SignatureDoesNotMatchTippfehler im Secret KeyKomplett neu generieren, Leerzeichen entfernen
RequestTimeoutDNS-Fehler, Firewall blockiert Port 443dig s3.fsn1.your-objectstorage.com, nc -zv
SlowDown 503API-Rate-Limit erreichtBucket-Prefix verteilen, Support kontaktieren
NoSuchBucketRegion falsch konfiguriertregion in config.php prüfen, meist eu-central-1 oder fsn1

Ein universelles Diagnose-Tool ist aws s3 ls s3://nc-userdata-prod --endpoint-url https://s3.fsn1.your-objectstorage.com --debug 2>&1 | less. Damit sehen Sie die exakte HTTP-Anfrage, Header, Latenz und Antwortcodes – ein unschätzbares Hilfsmittel bei komplexen Multi-Cloud-Setups.

Aktivieren Sie zusätzlich das ausführliche Nextcloud-Logging, um PHP-seitige Fehler zu erfassen:

sudo -u www-data php /var/www/nextcloud/occ log:manage --level=0
tail -f /var/log/nextcloud/nextcloud.log | grep -i "objectstore\|s3\|amazon"

Fazit: Lohnt sich Nextcloud mit S3 2026?

Die Kombination aus Nextcloud und S3-Objektspeicher ist 2026 die ausgereifteste Lösung für datenschutzkonforme Cloud-Speicherung im deutschsprachigen Raum. Mit Kosten von unter 10 € pro Monat für 5 TB, 99,99 % Verfügbarkeit und unbegrenztem Egress unterbietet das Setup kommerzielle Anbieter wie Dropbox Business (15 €/Nutzer/Monat) um ein Vielfaches. Lokale Hardware lohnt sich nur noch für Workloads mit < 1 ms Latenz, etwa CAD-Workstations.

Empfehlung für den Start: Hetzner Storage Box BX60 (9,90 €/Monat) + CX31 Cloud-Server (16 GB RAM, 49 €/Monat) + Nextcloud Hub 9 (kostenlos). Die Einrichtung dauert mit dieser Anleitung etwa 60 Minuten. Erweiterte Setups mit Multi-Bucket-Trennung (pro User ein eigener Bucket) oder Cloudflare-CDN-Vorschaltung sind ab 200 GB Nutzdaten sinnvoll und lassen sich später nahtlos nachrüsten.

Achten Sie abschließend darauf, alle 90 Tage ein Recovery-Drill durchzuführen: Testweise einen User-Account aus dem S3-Bucket wiederherstellen, einen kompletten Datenbestand in eine zweite Region replizieren. Nur so erkennen Sie, ob Ihre Backup-Strategie im Ernstfall tatsächlich funktioniert – ein Punkt, der in der Praxis leider allzu oft vernachlässigt wird.