Kai Ole Hartwig
Medien aus S3 in TYPO3?

typo3-fal-s3 — TYPO3-Dateien in S3, ohne Netzlaufwerk und ohne neue Adressen.

TYPO3 legt Bilder und Downloads im Ordner fileadmin ab. Liegt dieser Ordner in einem Objektspeicher wie Amazon S3, wird er bisher meist als Netzlaufwerk eingehängt. Das ist langsam, braucht Sonderrechte und bricht im falschen Moment. typo3-fal-s3 ist ein Speichertreiber für TYPO3, der direkt mit S3 spricht. Der Wechsel geschieht an Ort und Stelle: Dateien, Verweise und Adressen auf der Website bleiben, wie sie sind.

  • Was es ist: ein Treiber für die Dateiverwaltung von TYPO3 (FAL), der Amazon S3 und S3-kompatible Speicher anbindet
  • Für wen: Betreiber von TYPO3-Websites, die ihre Medien in S3 halten, zum Beispiel in Kubernetes ohne gemeinsame Festplatte
  • Technik: TYPO3-Extension · TYPO3 14.3+ · PHP 8.5+ · async-aws · MIT-Lizenz · Quellcode auf GitHub

TL;DR — Passt das zu meinem Setup?

Nutze es wenn …

Nutze es nicht wenn …

Aufwand

Ein Composer-Paket, ein Befehl zum Umstellen des Speichers und der Name des Buckets. Der Weg zurück ist derselbe Befehl mit dem alten Treiber.

Warum kein Netzlaufwerk, und was der Treiber anders macht

Das Problem

Ein eingehängter Bucket tut so, als wäre S3 eine Festplatte. Jede Prüfung, ob eine Datei existiert, wird zu einer Anfrage übers Netz. Der Server braucht dafür erweiterte Rechte, und wenn das Laufwerk hängt, hängt die ganze Website. In Kubernetes kommt ein eigener Dienst auf jedem Knoten dazu, der nur das Laufwerk bereitstellt.

Die Lösung

typo3-fal-s3 spricht S3 direkt an, als Treiber in der Dateiverwaltung von TYPO3. Er behält die Ordnerstruktur des Buckets bei. Deshalb lässt sich ein bestehender Speicher umstellen, ohne dass TYPO3 eine Datei neu einlesen muss.

WasWie der Treiber es macht
Adressen der Dateienbleiben gleich, standardmäßig /fileadmin/…
Zugang zu S3über die Identität des Servers oder Pods, kein Schlüssel in TYPO3
Wiederholte NachfragenAntworten von S3 landen in einem gemeinsamen Cache; ein Ordner kostet eine Abfrage, nicht eine pro Datei
Zwei Server schreiben dieselbe Bildvariantebeide kommen durch, keiner überschreibt den anderen
Bildvariantenliegen im Bucket und tragen eine lange Cache-Dauer
Fremde Daten im selben Bucketwerden ausgeblendet und sind schreibgeschützt

Im Betrieb

Seit Oktober 2026 läuft der Treiber auf vier TYPO3-Websites in Kubernetes. Vorher hing an jedem Pod ein Netzlaufwerk mit dem Bucket. Die Umstellung lief Website für Website, mit dem Laufwerk als Rückfall, bis alles sauber lief.

Ausgeliefert werden die Dateien vom Webserver der Website. Damit das schnell geht, hält caddy-fs-s3cache eine lokale Kopie vor.

fileadmin noch als Netzlaufwerk eingehängt? Ich helfe bei der Umstellung, den Rechten und der Auslieferung. Anfragen →

Einbau und Konfiguration

Für Betreiber einer TYPO3-14-Website. Drei Schritte.

1. Paket installieren

 

composer require koh/typo3-fal-s3

 

2. Bucket nennen

Jede Einstellung kann aus einer Umgebungsvariable kommen, dann bleibt der Datensatz in TYPO3 für alle Umgebungen gleich.

 

KOH_FAL_S3_BUCKET=my-media-bucket
KOH_FAL_S3_REGION=eu-north-1

 

3. Speicher umstellen

 

vendor/bin/typo3 koh_fal_s3:storage --uid 1 --driver KohS3
vendor/bin/typo3 cache:flush

 

Der Befehl merkt sich die alte Einstellung. --driver Local stellt sie wieder her.

Die wichtigsten Optionen

OptionStandardBedeutung
bucketPflichtName des S3-Buckets
region, endpoint, pathStyleaus der AWS-KonfigurationAWS-Region; eigener Endpunkt und Pfad-Adressierung für S3-kompatible Speicher wie MinIO oder RustFS
keyPrefixleerNur ein Unterordner des Buckets wird zum Speicher
publicBaseUri/fileadmin/Unter welcher Adresse der Webserver die Dateien ausliefert
excludedPrefixeseinige bekannte OrdnerBereiche des Buckets, die TYPO3 nicht sieht und nicht beschreibt
malwareGateausVerweigert Dateien, die der Virenscan von AWS als gefährlich markiert hat
fallbackProcessingFolderausLegt auch die Bildvarianten aus Extensions in den Bucket statt auf die lokale Platte

Rechte

Der Treiber braucht auf dem Bucket das Recht, ihn aufzulisten (s3:ListBucket). Fehlt es, meldet S3 für eine fehlende Datei „verboten“ statt „nicht gefunden“. Auf den Dateien braucht er Lesen, Schreiben und Löschen. Zugangsdaten stehen nicht in TYPO3. Sie kommen wie bei allen AWS-Werkzeugen aus der Umgebung oder in Kubernetes aus der Identität des Pods.

Häufige Fallstricke

Nächster Schritt

fileadmin in S3 ohne Netzlaufwerk?

Wenn deine TYPO3-Website ihre Medien über ein eingehängtes Laufwerk aus S3 holt, hilft typo3-fal-s3. Ich unterstütze bei der Umstellung, bei den Rechten in AWS und bei der Auslieferung über den Webserver.

Umstellung besprechen →

Oder direkt schreiben: mail@ole-hartwig.eu