Cloudflare + Bunny CDN

Muzibu.com HLS Streaming CDN Planı

v2 - 18 Şubat 2026 Production Deploy Bekliyor

Genel Durum

7/9

Adım Tamamlandı

1

Küçük Düzeltme

1

Production Deploy

Basit Anlatım

Ne yapıyoruz? Şarkıların donmasını engellemek için müzik dosyalarını dünya genelindeki hızlı sunuculara dağıtıyoruz.

Neden? Şu an tüm müzik trafiği tek sunucudan geliyor. Çok dinleyici olunca donma ve kalite düşüşü yaşanıyor.

Çözüm: Cloudflare siteyi korumaya devam ediyor. Bunny CDN sadece müzik dosyalarını ultra hızlı dağıtıyor.

Maliyet: Cloudflare Pro zaten var (ek maliyet yok). Bunny CDN ~$1-7/ay (kullanıma göre).

Sonuç: Bir toggle açınca aktif, kapatınca eski sisteme döner. Risk sıfır.

Yeni Mimari

Kullanıcı şarkı çalar:

1. GET muzibu.com/api/muzibu/songs/123/stream
   → Cloudflare → Sunucu → JSON: {stream_url: "https://cdn.muzibu.com/hls/..."}

2. GET cdn.muzibu.com/hls/muzibu/songs/123/playlist.m3u8?token=...&bcdn_token=...
   → Bunny CDN edge (Türkiye/EU) → Origin'den çek veya cache'den ver

3. GET muzibu.com/hls-key/muzibu/songs/123?sig=...
   → Encryption key HER ZAMAN origin sunucudan (güvenlik)

4. GET cdn.muzibu.com/hls/muzibu/songs/123/segment-000.ts
   → Bunny CDN edge cache → 365 gün cache (anında teslimat)

5. Player: AES-128 key ile decrypt → Müzik çalar ✓ Donma yok

Tamamlanan Adımlar

Bunny Pull Zone Oluşturuldu

TAMAM

Pull Zone ID: 5347238

Name: muzibu-hls

Hostname: muzibu-hls.b-cdn.net

Origin: https://muzibu.com

Regions: Europe + North America + Asia

Tier: Standard

Custom Hostname + SSL

TAMAM

cdn.muzibu.com → muzibu-hls.b-cdn.net | SSL sertifikası aktif

Token Authentication

TAMAM

Token Auth: Enabled

Token Key: 646b6c86-af40-4660-a8b1-e060eb248c36

Yöntem: MD5 Basic Token Auth + Origin HMAC-SHA256

4 Edge Rule

TAMAM
*.ts → 365 gün cache (segment)
*.m3u8 → 1 saat cache (playlist)
*/enc.bin → Cache yok (key)
* → CORS: muzibu.com

Origin Shield

TAMAM

EU - Paris | Origin sunucuya gelen istek sayısını azaltır

Cloudflare CNAME Kaydı

TAMAM

Type: CNAME

Name: cdn

Target: muzibu-hls.b-cdn.net

Proxy: DNS only (GRİ BULUT) ← Kritik!

Kod Değişiklikleri (mztest'te hazır)

TAMAM

.env → BUNNY_CDN_ENABLED, BUNNY_CDN_URL, TOKEN_KEY, ZONE_ID

config/services.php → bunny config bloğu

app/Services/SignedUrlService.php → signBunnyUrl(), isBunnyCdnEnabled(), CDN URL desteği

SongStreamController.php → Dinamik CORS origin header

BUNNY_CDN_ENABLED=false → Eski sistem aynen çalışır. true yapınca CDN aktif. Geri dönüş her zaman mümkün.

Kalan Adımlar

Bunny: Follow Redirects Aç

BEKLİYOR

Neden: muzibu.com → www.muzibu.com 301 redirect yapıyor (Cloudflare ayarı). Bunny origin'den çekerken bu redirect'i takip edemiyor ve 403 veriyor.

# Bunny Dashboard:

CDN → Pull Zones → muzibu-hls → General

"Follow Redirects" → ENABLE

Save

# Origin URL değişmiyor, muzibu.com kalıyor.

# Sistem genelinde hiçbir şey değişmiyor.

Teknik Detaylar

Değişen Dosyalar (4 adet)

.env (yeni değişkenler)

BUNNY_CDN_ENABLED=false
BUNNY_CDN_URL=https://cdn.muzibu.com
BUNNY_CDN_TOKEN_KEY=646b6c86-af40-4660-a8b1-e060eb248c36
BUNNY_CDN_ZONE_ID=5347238

config/services.php (+12 satır)

'bunny' => [
    'enabled'   => env('BUNNY_CDN_ENABLED', false),
    'url'       => env('BUNNY_CDN_URL', ''),
    'token_key' => env('BUNNY_CDN_TOKEN_KEY', ''),
    'zone_id'   => env('BUNNY_CDN_ZONE_ID', ''),
],

app/Services/SignedUrlService.php (3 yeni metod)

generateHlsUrl() → Bunny etkinse CDN URL döner + çift imza
signBunnyUrl()  → Bunny Basic Token Auth (MD5 + base64)
isBunnyCdnEnabled() → Config kontrolü

İmza zinciri: Origin HMAC-SHA256 + Bunny MD5 Token = Çift güvenlik katmanı

SongStreamController.php (CORS güncellemesi)

Access-Control-Allow-Origin: *request()->header('Origin')
// Dinamik origin: muzibu.com veya cdn.muzibu.com

URL İmza Akışı

BUNNY_CDN_ENABLED=false (eski sistem):
https://www.muzibu.com/hls/muzibu/songs/123/playlist.m3u8
  ?expires=...&token=USER_ID&sig=HMAC_SHA256

BUNNY_CDN_ENABLED=true (yeni sistem):
https://cdn.muzibu.com/hls/muzibu/songs/123/playlist.m3u8
  ?expires=...&token=USER_ID&sig=HMAC_SHA256   ← Origin imzası
  &bcdn_token=MD5_BASE64&bcdn_expires=UNIX     ← Bunny imzası

Güvenlik Katmanları

Cloudflare

DDoS + WAF + SSL

Bunny Token

MD5 imzalı URL

Origin İmza

HMAC-SHA256

AES-128

HLS şifreleme

Cloudflare Mevcut Ayarlar (Pro Plan)

Cache Rules (10/25)

1. Livewire No Cache

2. API No Cache

3. Admin No Cache

4. Assets CSS JS - 7 Days

5. FONTS - 1 Year

6. Thumbmaker Cache

7. Static Files 1 Month

8. Dashboard No Cache

9. User Pages No Cache

10. HLS Audio Cache ← Bunny aktifken KALDIRILACAK

Performans Ayarları

SSL: Full (Strict)

HTTP/2 + HTTP/3

TLS 1.3

Brotli

Early Hints

Polish: Lossy + WebP

Always Online

Always Use HTTPS: Kapalı

Rocket Loader: Kapalı

DNS Kayıtları

A muzibu.com → 51.210.24.70 PROXIED

A mztest → 159.253.45.107 DNS only

CNAME www → muzibu.com PROXIED

CNAME cdn → muzibu-hls.b-cdn.net DNS only ← YENİ

Bunny CDN Yapılandırması

Pull Zone ID5347238
Namemuzibu-hls
Default URLhttps://muzibu-hls.b-cdn.net
Custom Hostnamehttps://cdn.muzibu.com
Originhttps://muzibu.com
Token Auth Key646b6c86-af40-4660-a8b1-e060eb248c36
Origin ShieldEU - Paris
RegionsEurope + North America + Asia
Edge Rules4 kural aktif
Follow RedirectsAçılması gerekiyor!
HTTP/2 + HTTP/3Aktif
HTTPS RedirectAktif

Tahmini Maliyet

HizmetAylıkNot
Cloudflare Pro$20Zaten mevcut
Bunny CDN~$1-5100-500 GB/ay (kullanıma göre)
Ek Maliyet~$1-5/ayMin. ödeme yok

1 şarkı ~5MB. 1000 dinleme/gün = ~150GB/ay = ~$1.50/ay

Geri Dönüş Planı

Herhangi bir sorun olursa tek satır değişiklikle eski sisteme dönülür:

# .env'de:
BUNNY_CDN_ENABLED=false

# Cache temizle:
php artisan config:clear

Bunny kapalıyken tüm HLS trafiği eski yoldan (Cloudflare → Origin) geçer. Hiçbir şey bozulmaz.

18 Şubat 2026 • Muzibu.com