🐰

Bunny CDN Birleşik Plan

Migration Tamamlandı • Safari iOS Çözümü Bekliyor

24 Mart 2026 • v1

📊 Mevcut Durum Özeti

Altyapı Hazır

33,112

HLS Yüklendi

33,112

MP3 Yüklendi

LOCAL

Şu Anki Mod

Aktif .env Ayarları

BUNNY_STORAGE_ENABLED=true
BUNNY_STORAGE_API_KEY=b9edcf9f-****-****
BUNNY_STORAGE_ZONE=muzibu-audio
BUNNY_STORAGE_REGION=de
BUNNY_STORAGE_CDN_URL=https://audio.muzibu.com     ← Custom hostname aktif!
BUNNY_STORAGE_MODE=local                            ← Safari iOS sorunu çözülünce hybrid olacak
BUNNY_FALLBACK_TO_LOCAL=true

✅ Tamamlanan İşler

AŞAMA 1

Bunny Altyapı Hazırlığı

TAMAMLANDI
1.1 Custom Hostname Eklendi

audio.muzibu.com → Bunny Pull Zone'a eklendi

1.2 DNS CNAME Ayarlandı

Cloudflare: audiomuzibu-audio-cdn.b-cdn.net (DNS only)

1.3 SSL Sertifikası Aktif

Let's Encrypt otomatik sertifika oluşturuldu

1.4 Edge Rule: CORS Headers

Access-Control-Allow-Origin: * eklendi (HLS için gerekli)

1.5 Cache Ayarları Optimize Edildi

Smart Cache: Kapalı (değişmeyen audio için gereksiz), Default: 1 yıl

1.6 .env CDN URL Güncellendi

BUNNY_STORAGE_CDN_URL=https://audio.muzibu.com

AŞAMA 2

Dosya Yükleme (Migration)

TAMAMLANDI
2.1 HLS Dosyaları Yüklendi

33,112 şarkının HLS klasörleri (/hls/*)

2.2 MP3 Dosyaları Yüklendi

/songs/original/ (33,112) • /songs/mp3_64/ (33,103) • /songs/mp3_128/ (33,099)

2.3 Redis Set Senkronize

bunny:uploaded_songs → 33,112 şarkı ID'si

2.4 Orphan Dosyalar Temizlendi

308 orphan HLS klasörü silindi (3.8 GB alan kazanıldı)

2.5 Soft-Deleted Kayıtlar Temizlendi

839 veritabanı kaydı kalıcı olarak silindi

Bunny Storage Doğrulama

Klasör Dosya/Klasör Sayısı Test URL
/hls/ 33,112 klasör 200 OK ✓
/songs/original/ 33,112 dosya 200 OK ✓
/songs/mp3_64/ 33,103 dosya 200 OK ✓
/songs/mp3_128/ 33,099 dosya 200 OK ✓

🔙 Geri Alınan Safari iOS Denemeleri

Safari iOS'ta Bunny CDN ile HLS çalıştırmak için çeşitli denemeler yapıldı ancak başarısız oldu. Tüm değişiklikler geri alındı ve sistem local moduna döndürüldü.

Git: eb0acb8ff  🔙 Safari iOS denemelerini geri al + Bunny local moda
Git: 83d1043bd  🍎 Safari iOS HLS Denemeleri (HATALI - GERİ ALINDI)
BAŞARISIZ

1. Blob URL + Data URI Key

Safari native HLS player blob:// URL desteklemiyor. "NotSupportedError" hatası.

BAŞARISIZ

2. Session/Cookie Cross-Origin

Safari iOS cross-origin isteklerde cookie göndermiyor. Playlist Bunny'de, key bizde → 401.

BAŞARISIZ

3. HLS.js Override

Safari iOS'ta Hls.isSupported() = false. HLS.js çalışmıyor, CachingKeyLoader devreye girmiyor.

⚠️ Temel Sorun

Safari iOS:
├── HLS.js çalışmıyor (native player kullanıyor)
├── Native player cross-origin cookie göndermiyor
├── Playlist: https://audio.muzibu.com/hls/...  (Bunny)
├── Key:      https://www.muzibu.com/hls-key/... (Bizim sunucu)
└── Sonuç:    401 Unauthorized (key isteği başarısız)

⏳ Kalan İşler (Safari iOS Çözümü)

AŞAMA 3

Safari iOS MP3 Fallback

BEKLİYOR
AŞAMA 4

Hybrid Moda Geçiş

BEKLİYOR

🚨 Sorun Olursa Geri Al

# .env
BUNNY_STORAGE_MODE=local

# Cache temizle
php artisan config:cache && php artisan cache:clear

🏗️ Mimari Özet

Pull Zone #1: muzibuweb

  • Origin: origin.muzibu.com (URL)
  • Hostnames: www.muzibu.com, muzibu.com
  • Amaç: Web sitesi (dinamik içerik)
  • Shield: Advanced ($9.50/ay)
  • Edge Rules: 17 kural (HLS, CORS, No-Cache)

Pull Zone #2: muzibu-audio-cdn

  • Origin: muzibu-audio (Storage Zone)
  • Hostnames: audio.muzibu.com ✓
  • Amaç: Statik ses dosyaları (HLS + MP3)
  • Shield: Yok (gereksiz)
  • Edge Rules: 1 kural (CORS)

Storage Zone: muzibu-audio

/hls/
├── 1001/           ← Song ID
│   ├── master.m3u8
│   ├── playlist.m3u8
│   ├── playlist_32.m3u8
│   ├── playlist_64.m3u8
│   ├── playlist_128.m3u8
│   ├── segment-000.ts
│   └── ...
├── 1002/
└── ...             (33,112 klasör)

/songs/
├── original/       (33,112 dosya - orijinal kalite)
├── mp3_64/         (33,103 dosya - 64kbps)
└── mp3_128/        (33,099 dosya - 128kbps)

Hybrid Mode Akışı (Hedef)

┌─────────────────────────────────────────────────────────────────┐
│  BUNNY_STORAGE_MODE=hybrid                                      │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  Chrome/Firefox/Edge/Android:                                   │
│  ├── HLS playlist → https://audio.muzibu.com/hls/...            │
│  ├── HLS segments → https://audio.muzibu.com/hls/...            │
│  └── HLS key      → https://www.muzibu.com/hls-key/... (local)  │
│                                                                 │
│  Safari macOS:                                                  │
│  ├── HLS playlist → https://audio.muzibu.com/hls/...            │
│  ├── HLS segments → https://audio.muzibu.com/hls/...            │
│  └── HLS key      → https://www.muzibu.com/hls-key/... (local)  │
│                                                                 │
│  Safari iOS:                                                    │
│  ├── force_mp3=1  → MP3 fallback aktif                          │
│  └── MP3          → https://audio.muzibu.com/songs/mp3_128/...  │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

📎 Eski Dökümanlar (Referans)

📝 Sonuç

Altyapı hazır: Bunny CDN'e tüm HLS ve MP3 dosyaları yüklendi. Custom hostname (audio.muzibu.com), SSL ve CORS ayarları tamamlandı.

Safari iOS sorunu: Native HLS player cross-origin cookie göndermiyor. Önceki denemeler (blob URL vb.) başarısız oldu ve geri alındı.

Önerilen çözüm: Safari iOS için MP3 fallback. Bu cihazlarda HLS yerine MP3 formatında müzik sunulacak. MP3 dosyaları zaten Bunny'de hazır.

Şu an: Sistem local modda çalışıyor. Safari iOS çözümü uygulandıktan sonra hybrid moda geçilecek.