30. September 2026 · 5 Min. Lesezeit

So machst du einen Cloudflare-R2-Bucket öffentlich

R2-Buckets sind standardmäßig privat. Ohne signierte API-Anfragen kann niemand eine Datei lesen, bis du dem Bucket ausdrücklich eine öffentliche Adresse gibst. Dafür gibt es zwei Wege, und beide lassen sich parallel nutzen.

Option 1: eigene Domain verbinden (empfohlen)

Eine eigene Domain liefert den Bucket mit Caching über das Cloudflare-Netzwerk aus und erlaubt dir, später WAF-Regeln oder Cloudflare Access zu nutzen. Die Domain muss eine Zone im selben Cloudflare-Konto wie der Bucket sein (Full Setup und Partial Setup per CNAME funktionieren beide).

  1. Geh im Cloudflare-Dashboard zu R2 Object Storage und wähle deinen Bucket aus.
  2. Öffne Settings, such Custom Domains und wähle Add.
  3. Gib eine Subdomain wie files.example.com ein und wähle Continue.
  4. Prüf den DNS-Eintrag, den Cloudflare anlegen wird, und wähle Connect Domain.

Der Status wechselt innerhalb weniger Minuten von Initializing zu Active. Danach ist ein Objekt mit dem Key 2026/09/report.pdf unter https://files.example.com/2026/09/report.pdf erreichbar.

Option 2: r2.dev Public Development URL aktivieren

Für einen schnellen Test kann R2 dem Bucket eine von Cloudflare verwaltete Adresse geben:

  1. Öffne die Settings des Buckets.
  2. Wähle unter Public Development URL die Option Enable.
  3. Tipp zur Bestätigung allow ein und wähle Allow.

Der Bucket ist jetzt unter https://pub-<id>.r2.dev/<key> erreichbar. Cloudflare drosselt diese URL und sieht sie nur für die Entwicklung vor, wechsle also zu einer eigenen Domain, bevor du Links breit teilst. Ein eigener CNAME auf die r2.dev-Adresse wird nicht unterstützt.

Was öffentlicher Zugriff freigibt und was nicht

  • Nur Lesen. Öffentlicher Zugriff erlaubt jedem, Objekte zu lesen, deren Key er kennt. Hochladen und Löschen erfordern weiterhin API-Zugangsdaten.
  • Kein Verzeichnislisting. Wer die Startseite der Domain aufruft, bekommt den Bucket nicht aufgelistet. Zufällige Objektnamen machen Links schwer zu erraten.
  • Alles im Bucket. Der Zugriff gilt pro Bucket, nicht pro Ordner. Leg private Dateien in einen separaten Bucket.
  • Caching. Standardmäßig cacht Cloudflare nur bestimmte Dateiendungen. Füge eine Cache-Regel hinzu, wenn jeder Dateityp gecacht werden soll.

Access Denied bei R2-Links beheben

Wenn ein Link Access Denied, 401 oder 403 liefert, prüf diese Punkte der Reihe nach:

  1. Der Link nutzt deine eigene Domain oder die r2.dev-URL, nicht <account-id>.r2.cloudflarestorage.com. Dieser Host ist die S3-API und verlangt immer eine Signatur.
  2. Die eigene Domain steht auf Active, und der Zugriff auf den Bucket ist in den Settings des Buckets auf Allowed gesetzt.
  3. Der Key in der URL stimmt exakt mit dem Objekt überein, inklusive Ordnern sowie Groß- und Kleinschreibung.

Häufige Fragen

Ist es sicher, einen R2-Bucket öffentlich zu machen?

Für Dateien, die du teilen willst, ja. Wer einen Link hat, kann diese Datei lesen, aber weder den Bucket auflisten noch hochladen oder löschen. Private Daten gehören in einen anderen Bucket.

Kostet ein öffentlicher R2-Bucket mehr?

Nein. R2 berechnet keinen ausgehenden Traffic, öffentliche Downloads verursachen also keine Bandbreitenkosten. Lesezugriffe zählen als Class-B-Operationen, für die es ein monatliches Gratiskontingent gibt.

Kann ich nur einen Ordner öffentlich machen?

Mit dem öffentlichen Zugriff von R2 nicht, er gilt immer für den ganzen Bucket. Nutze einen separaten Bucket, oder halte den Bucket privat und teile Presigned URLs.