Wenn der Medienspeicher einer WordPress-Website auf mehrere Dutzend Gigabyte anwächst, können Sie die hochgeladenen Dateien in einen Objektspeicher (Amazon S3, Cloudflare R2, Backblaze B2) verschieben. Die Website stellt die Bilder anschließend über die eigene Domain (z. B. media.pelda.hu) aus dem Speicher bereit, wodurch Speicherplatz auf dem Webhost freigegeben wird. Ein Outsourcing-Plugin (WP Offload Media oder Media Cloud) übernimmt das Hochladen und die Umschreibung der URLs.
Dies lohnt sich nicht für jeden. Die Auslagerung bedeutet einen weiteren Dienst, weitere Zugangsdaten und einen weiteren Speicherort, der gesichert werden muss, sowie ein Plugin, das nach jedem WordPress- und PHP-Update funktionieren muss. Wenn die Mediathek bequem auf Ihrem Speicherplatz Platz findet und Sie lediglich die Bereitstellung der Bilder beschleunigen möchten, ist ein CDN die einfachere Lösung: Es liefert die Bilder ebenfalls von einem Server aus, der sich in der Nähe des Besuchers befindet, und kommt dabei ohne zusätzliche Komponenten aus (Beschleunigung der Website mit einem CDN).
Wie funktioniert das Outsourcing?
Das Plugin führt zwei unterschiedliche Aufgaben aus, und gerade die Verwechslung dieser beiden Aufgaben ist die häufigste Ursache für fehlgeschlagene Umzüge:
- Beim Hochladen werden die Dateien kopiert. Wenn WordPress das Bild und dessen Miniaturansichten im Ordner „
wp-content/uploads“ erstellt, lädt das Plugin alle Dateien in den Speicher hoch. Eine Einstellung legt fest, ob die lokalen Dateien erhalten bleiben. Nur das Löschen schafft Speicherplatz, aber nur das Beibehalten ermöglicht eine Wiederherstellung. - Bei der Anzeige wird die Adresse umgeschrieben. Die Bildadressen werden auf die Adresse des Hosts (oder Ihrer eigenen Domain) geändert. Die Datenbank wird dabei nicht verändert, sodass Sie durch Deaktivieren des Plugins den ursprünglichen Zustand wiederherstellen können. Seitenersteller fügen jedoch häufig die vollständigen Bildadressen in den Inhalt ein; diese werden dabei nicht umgeschrieben.
Aus einem hochgeladenen Foto können zusammen mit den Miniaturansichten bis zu ein Dutzend Dateien entstehen. Fehlen die Miniaturansichten beim Kopieren, wird zwar das große Bild geladen, doch auf kleineren Bildschirmen (und hochauflösenden Displays) bleibt die Seite ohne Bild.
Welchen Speicher sollten Sie wählen?
Alle drei nutzen dieselbe S3-kompatible Schnittstelle, und die Plugins behandeln sie auf identische Weise. Der Unterschied liegt in der Abrechnung des Datenverkehrs und der Art der Bereitstellung:
| Amazon S3 | Cloudflare R2 | Backblaze B2 | |
|---|---|---|---|
| Ausgehender Datenverkehr | kostenpflichtig (über CloudFront mit Rabatt) | Es fallen keine monatlichen Grundgebühren an; die Vorgänge werden pro Vorgang abgerechnet. | Bis zum Dreifachen der gespeicherten Datenmenge kostenlos, unbegrenzt an Partner-CDNs (z. B. Cloudflare) |
| Öffentlicher Dienst | CloudFront oder die Webadresse des Speichers | Nur hinter einer eigenen Domain oder einem Worker; die Adresse „r2.dev“ ist ausschließlich für Entwicklungszwecke bestimmt. |
Zuvor mit CDN |
| Stärken | Umfassendste Unterstützung für Plugins und Tools, Lebenszyklusregeln, Versionsverwaltung | Der Datenverkehr ist kostenlos | Der günstigste Speicherplatz |
Wir geben bewusst keine konkreten Preise an: Diese ändern sich, und die Kosten hängen davon ab, wie hoch das Datenvolumen im Verhältnis zum Speicherplatz ist. Schätzen Sie Ihren Speicherbedarf (siehe unten) und berechnen Sie die Kosten mit dem Rechner des Anbieters.
1. Messen Sie den Speicherplatz
Über die cPanel-Terminal-Oberfläche (Gruppe „Erweitert“) oder per SSH:
cd ~/public_html
du -sh wp-content/uploads
find wp-content/uploads -type f | wc -l
wp post list --post_type=attachment --format=count
Die Anzahl der Dateien beträgt in der Regel das Zehn- bis Fünfzehnfache der Anzahl der Anhänge, was auf die Miniaturansichten zurückzuführen ist. Sollte die Anzahl deutlich darüber liegen, werden unnötige Dateigrößen generiert; dies sollten Sie vor dem Umzug bereinigen. Die größten Dateien werden auch auf der cPanel-Oberfläche „Speicherplatznutzung“ angezeigt (Speicherplatznutzung überprüfen).
2. Repository und Schlüssel mit eingeschränkten Rechten
Erstellen Sie den Speicher (Bucket) beim Anbieter und einen API-Schlüssel, der ausschließlich Lese- und Schreibrechte für diesen einen Speicher gewährt. Verwenden Sie keinen Schlüssel, der für das gesamte Konto gilt. Notieren Sie sich außerdem die Adresse des S3-kompatiblen Endpunkts (bei R2: https://<fiókazonosító>.r2.cloudflarestorage.com, bei B2: https://s3.<régió>.backblazeb2.com).
3. Eigene Domain für das Hosting
Bevor Sie irgendetwas umschreiben, verknüpfen Sie den Speicher mit einer eigenen Subdomain (z. B. media.pelda.hu). Auf diese Weise können Sie den Anbieter später wechseln, ohne die Adresse ändern zu müssen. Bei R2 können Sie dies auf der Seite „Einstellungen“ des Speichers im Abschnitt „Benutzerdefinierte Domains“ hinzufügen, sofern sich die Domain bei Cloudflare befindet; bei S3 über CloudFront und bei B2 über ein vorgeschaltetes CDN. Überprüfung mit einem vorab hochgeladenen Testbild:
curl -sI https://media.pelda.hu/wp-content/uploads/2026/10/proba.jpg | head -5
Sie sollten einen 200-Statuscode und den Header „content-type: image/jpeg“ sehen. Ein 403-Statuscode bedeutet, dass die Domain zwar zugewiesen ist, der öffentliche Zugriff jedoch nicht aktiviert ist; bei R2 ist dies der häufigste Grund dafür, dass die Seite „nicht funktioniert“.
4. Kopieren der vorhandenen Dateien
Bei kleineren Medienbibliotheken (einige GB) übernimmt das Plugin selbst diese Aufgabe: Sowohl WP Offload Media als auch Media Cloud können die vorhandenen Anhänge hochladen und dabei gleichzeitig ihre eigene Datenbank aktualisieren.
Bei großen Mediendateien ist das Kopieren mit dem Programm rclone schneller und zuverlässiger, da es nach einer Unterbrechung den Vorgang fortsetzt und die Daten anhand einer Prüfsumme vergleicht. Auf den aWh-Hosting-Servern ist rclone nicht installiert, doch wenn Sie das Programm auf Ihrem eigenen Rechner ausführen, können Sie Daten direkt vom Hosting-Server in den Speicher kopieren, und zwar über SFTP (bei cPanel-Hosting-Servern mit einem SSH-Schlüssel über Port 4231). Richten Sie mit dem Befehl „rclone config“ zwei Verbindungen ein: eine vom Typ „sftp“ zum Webhosting (tarhely) und eine vom Typ „s3“ zum Speicher (tarolo), und führen Sie anschließend Folgendes aus:
rclone copy tarhely:public_html/wp-content/uploads tarolo:sajat-tarolo/wp-content/uploads --transfers 8 --progress
rclone check tarhely:public_html/wp-content/uploads tarolo:sajat-tarolo/wp-content/uploads --one-way
Am Ende des checks sollte „0 differences found“ angezeigt werden. Falls ein Fehler gemeldet wurde, führen Sie den copy-Befehl erneut aus: Dabei werden nur die fehlenden Dateien kopiert. Führen Sie nach dem Kopieren auch das eigene Tool des Plugins aus, damit das Plugin erkennt, welche Anhänge sich bereits im Speicher befinden; andernfalls werden die älteren Bilder weiterhin vom Speicherplatz aus bereitgestellt.
5. Konfiguration des Plugins
Speichern Sie den Zugriffsschlüssel nicht in der Datenbank (da er in jede Sicherung und jede Staging-Kopie übernommen wird), sondern in der Datei „wp-config.php“. Das Plugin „WP Offload Media“ liest beispielsweise die Konstante „AS3CF_SETTINGS“ aus; die genaue Kennung des Anbieters finden Sie in der Dokumentation des Plugins:
define( 'AS3CF_SETTINGS', serialize( array(
'provider' => 'SZOLGALTATO',
'access-key-id' => 'KULCS_AZONOSITO',
'secret-access-key' => 'TITKOS_KULCS',
) ) );
Geben Sie in der Benutzeroberfläche des Plugins den Speicherort und das Pfadpräfix (wp-content/uploads, wie kopiert) ein, aktivieren Sie die Bereitstellung über Ihre eigene Domain und lassen Sie die Option zum Löschen lokaler Dateien deaktiviert. Überprüfung:
wp eval 'echo wp_get_attachment_url( 123 ), PHP_EOL;'
wp eval 'echo wp_get_attachment_image_srcset( 123, "large" ), PHP_EOL;'
Ersetzen Sie die „123“ durch eine echte Anhang-ID (wp post list --post_type=attachment --field=ID --posts_per_page=1). Beide Befehle müssen die Adresse https://media.pelda.hu/… ausgeben.
6. Letzte Synchronisierung
Während der Kopiervorgang lief, wurden möglicherweise neue Bilder auf die Website hochgeladen. Führen Sie die Befehle „copy“ und „check“ aus Schritt 4 erneut aus und starten Sie anschließend das Plugin. Beim zweiten Durchlauf werden nur noch wenige Dateien verschoben.
Überprüfung
- Laden Sie ein neues Bild über die Admin-Oberfläche hoch und überprüfen Sie, ob dessen Adresse auf Ihre eigene Domain verweist und ob die Datei im Speicherbereich angezeigt wird.
- Rufen Sie alle Bildgrößen eines alten Beitrags ab (alle „
srcset“-Adressen): Für jede davon sollte der Wert „200“ angegeben sein. Ein „403“- oder „404“-Fehler weist auf eine unvollständige Kopie hin. - Falls der Website-Ersteller die vollständigen Bild-URLs in den Inhalt eingefügt hat, können Sie diese mit dem Befehl „wp search-replace“ umschreiben (
https://pelda.hu/wp-content/uploads→https://media.pelda.hu/wp-content/uploads), wobei Sie stets zunächst einen Testlauf durchführen sollten.
Aktivieren Sie das Löschen der lokalen Dateien erst Wochen später nach einer gründlichen Überprüfung, sofern überhaupt. Ab diesem Zeitpunkt ist der Speicherort die einzige Kopie: Die Sicherung der Website im Medienarchiv enthält diese nicht mehr, daher benötigen Sie eine separate Sicherung vom Speicherort.
Häufige Fehler
Warnung wegen gemischter Inhalte. Wenn die Bild-URLs http:// lauten, blockiert der Browser diese auf HTTPS-Seiten. Aktivieren Sie im Plugin die HTTPS-Erzwingung und überprüfen Sie, ob das Zertifikat Ihrer eigenen Domain gültig ist (gemischte Inhalte).
Die Schriftarten werden nicht geladen. Für Web-Schriftarten (und einige andere Dateitypen) wendet der Browser die CORS-Regel an: Sie werden nur dann von einer anderen Domain geladen, wenn der Host den Header „Access-Control-Allow-Origin“ sendet. Dies gilt nicht für einfache Bilder, weshalb diese funktionieren, während die Schriftart im Hintergrund ersetzt wird. Richten Sie auf dem Webserver eine CORS-Regel für die Adresse Ihrer Website sowie für GET- und HEAD-Anfragen ein.
Zu früh gelöschte lokale Dateien. Wenn die Löschfunktion während einer unvollständigen Kopieroperation aktiviert war, sind bestimmte Dateien nirgendwo mehr zu finden. Stellen Sie den Ordner „wp-content/uploads“ aus der täglichen Sicherung wieder her (Wiederherstellung über JetBackup), kopieren Sie ihn erneut in den Speicherbereich und generieren Sie die fehlenden Miniaturansichten neu: „wp media regenerate --only-missing“.