Geçtiğimiz kış, Plex Pass lifetime üyeliğimin fiyatı bir anda 250 dolara çıktığında, yıllardır ailemle birlikte kullandığım medya sunucusu çözümünü değiştirme kararı aldım. Bu ani fiyat artışı, beni açık kaynaklı bir alternatif olan Jellyfin’e yöneltti ve bu süreç, kendi verimin kontrolünü ne kadar önemsediğimi bana bir kez daha gösterdi. Neticede, Jellyfin’e geçtim ve bir daha Plex’e geri dönmedim; bu yazı da neden böyle bir tercih yaptığımı ve geçiş sürecinde neler yaşadığımı detaylandırıyor.
Plex Neden Bardağı Taşıran Son Damla Oldu?
Uzun yıllardır Plex kullanıcısıydım. Medya kütüphanemi organize etme, farklı cihazlardan erişim sağlama ve transkoding gibi özellikleri benim için vazgeçilmezdi. Özellikle mobil cihazlardan veya uzaktan erişimde, Plex’in basit arayüzü ve performansı oldukça işime yarıyordu. Ancak, 2025’in sonlarına doğru, Plex Pass lifetime üyeliğinin fiyatının aniden 119.99 USD’den 250 USD’ye yükseldiğini gördüğümde, bu durum benim için bir dönüm noktası oldu.
Bu fiyat artışı sadece bir maliyet meselesi değildi; aynı zamanda bir ürünün fiyatlandırma stratejisi üzerindeki kontrolün tamamen sağlayıcıda olmasının getirdiği bir rahatsızlıktı. Yıllarca yatırım yaptığım bir ekosistemin, benim kontrolüm dışında bu kadar büyük bir fiyat zammıyla karşılaşması, alternatif arayışımı hızlandırdı. Özellikle kendi sunucumda çalıştırdığım, kendi donanımımı ve bandwidth’imi kullandığım bir hizmet için, bulut tabanlı bir hizmetin maliyet artışına benzer bir durumla karşılaşmak mantıksız geliyordu. Kendi yan ürünümün finansal hesaplayıcılarını geliştirirken bile, abonelik modellerinin uzun vadeli sürdürülebilirliğini ve kullanıcıya dayattığı maliyetleri sürekli göz önünde bulundururum. Bu durum, benim için Plex’in “kullanıcı dostu” imajını ciddi şekilde zedeledi.
Jellyfin’e Geçiş Süreci: Veri ve Konfigürasyon Taşıma Zorlukları
Plex’ten Jellyfin’e geçiş kararı aldıktan sonra, ilk aklıma gelen soru, yıllardır biriktirdiğim medya kütüphanesi metadata’mı, izleme geçmişimi ve kullanıcı ayarlarımı nasıl taşıyacağımdı. Açıkçası, bu süreç biraz sancılı oldu çünkü direkt bir “Plex’ten Jellyfin’e geçiş” aracı yoktu. Her iki platform da kendi veritabanı yapılarını kullandığı için manuel adımlar atmam gerekti.
İlk adım olarak, Jellyfin’i kendi VPS’imde bir Docker container olarak kurdum. Bu benim için standart bir süreçti; Nginx reverse proxy’nin arkasına almak ve SSL sertifikası tanımlamak gibi adımlar hızlıca halloldu. Aşağıdaki docker-compose.yml örneği, Jellyfin’i basitçe nasıl ayağa kaldırdığımı gösteriyor:
version: '3.8'
services:
jellyfin:
image: jellyfin/jellyfin
container_name: jellyfin
user: 1000:1000 # Kendi kullanıcı ID'nizi ve Grup ID'nizi buraya yazın
network_mode: host # Host network mode ile port mapping daha basit
volumes:
- /path/to/jellyfin/config:/config # Konfigürasyon dosyaları
- /path/to/jellyfin/cache:/cache # Önbellek dosyaları
- /path/to/your/media:/media # Medya dosyalarınızın olduğu klasör
- /etc/localtime:/etc/localtime:ro # Zaman senkronizasyonu için
restart: unless-stopped
environment:
- PUID=1000
- PGID=1000
Medya dosyalarımı Jellyfin’e tanıtmak kolaydı, ancak asıl sorun metadata ve izleme geçmişiydi. Bazı üçüncü parti araçlar ve Python betikleri bu konuda yardımcı olabiliyor ancak tam bir uyumluluk sağlamak zordu. Örneğin, Plex-to-Jellyfin.py gibi araçlar denedim, ancak Plex’in son API değişiklikleri veya benim özel kütüphane yapım nedeniyle tüm veriyi kusursuz aktaramadım. En nihayetinde, bazı kütüphaneler için izleme geçmişini sıfırdan oluşturmayı veya manuel olarak işaretlemeyi kabul ettim. Bu, özellikle 5+ yıllık bir üretim ERP’sinde çalıştığımda, veri göçü projelerindeki “her şey aktarılamaz” gerçeğini bir kez daha hatırlattı. Bazen, temiz bir başlangıç yapmak, eksik veriyle uğraşmaktan daha iyidir.
Performans ve Kaynak Tüketimi Karşılaştırması
Jellyfin’in kurulumunu tamamladıktan sonra, Plex ile en çok merak ettiğim karşılaştırma performanstı. Benim Plex sunucum, eski bir Intel i5 işlemcili, 16GB RAM’e sahip bir bare-metal sunucuda çalışıyordu. Aynı sunucu üzerinde Jellyfin’i Docker container içinde çalıştırdım. Yaptığım gözlemlere göre, Jellyfin’in kaynak tüketimi, özellikle idle durumdayken, Plex’e kıyasla daha düşüktü. Plex, arka planda bazı bulut servisleriyle iletişim kurmaya devam ettiği için, bazen beklenmedik CPU spike’ları yaşayabiliyordu. Jellyfin ise tamamen yerel çalıştığı için bu tür sürprizler yaşatmadı.
Transkoding performansı ise kullanılan donanıma ve ayarlara bağlıydı. Plex’in ücretli sürümünde donanımsal transkoding desteği daha olgun ve geniş bir GPU yelpazesine sahipti. Jellyfin de donanımsal transkoding (örneğin Intel Quick Sync Video veya NVIDIA NVENC) desteği sunuyor, ancak kurulumu biraz daha fazla manuel çaba gerektirebiliyor. Benim i5 işlemcimdeki Quick Sync desteği, hem Plex’te hem de Jellyfin’de 1080p içerikleri sorunsuz bir şekilde transkoding yapmama olanak tanıdı. Aynı anda 2 farklı cihaza 1080p transkoding yaparken, CPU kullanımı Plex’te %60-70 civarında seyrederken, Jellyfin’de bu oran %50-60 aralığında kaldı. Bu fark, genel sistem kaynakları açısından küçük ama yine de gözle görülür bir optimizasyon anlamına geliyordu.
Disk I/O açısından da Jellyfin daha tutarlı bir performans sergiledi. Özellikle medya kütüphanesi taraması sırasında Plex’in bazen daha agresif davrandığını gözlemlemiştim. Jellyfin, varsayılan ayarlarla daha nazik bir tarama yapıyor gibiydi, bu da benim için önemliydi çünkü medya dosyalarım bir NAS üzerinden NFS ile bağlanıyordu ve aşırı disk I/O, diğer servisleri etkileyebiliyordu. Kendi VPS’imde Redis OOM eviction policy seçimlerini yaparken veya PostgreSQL WAL bloat’ını izlerken edindiğim tecrübeler, her servisin disk ve bellek kullanımının dikkatle yönetilmesi gerektiğini bana öğretmişti.
Kullanıcı Deneyimi ve Arayüz Farkları
Plex, yıllar içinde oldukça rafine bir kullanıcı arayüzü ve deneyimi sunan bir platform haline geldi. Mobil uygulamaları, akıllı TV entegrasyonları ve genel estetiği oldukça başarılıydı. Jellyfin’e geçtiğimde, bu alandaki farklar en çok dikkatimi çeken noktalardan biri oldu. Jellyfin’in arayüzü, açık kaynaklı bir proje olmasına rağmen oldukça modern ve işlevsel. Ancak, Plex’in sunduğu bazı cilalı özellikler veya entegrasyonlar Jellyfin’de ya bulunmuyor ya da farklı bir yaklaşımla sunuluyordu.
Örneğin, Plex’in “Watch Together” gibi sosyal özellikleri veya daha geniş üçüncü parti eklenti (plugin) ekosistemi başlangıçta Jellyfin’de bulamadığım şeylerdi. Ancak Jellyfin’in kendi eklenti havuzu da hızla büyüyor. Özellikle Kodi, Emby Theater gibi istemcilerle entegrasyonu, benim için Plex’in sunduğundan daha fazla esneklik sağladı. Mobil tarafta ise Jellyfin’in resmi mobil uygulamaları Plex kadar “parlak” olmasa da, temel işlevleri sorunsuz bir şekilde yerine getiriyor. Android spam blocker uygulamamı geliştirirken edindiğim mobil UI/UX tecrübesiyle, Jellyfin’in mobil uygulamalarının daha fazla geliştirme potansiyeli taşıdığını düşünüyorum.
Arayüzdeki en büyük farklardan biri, Jellyfin’in tamamen yerel ve çevrimdışı çalışabilme yeteneğiydi. Plex, bazı metadata ve kullanıcı bilgilerini bulutta tuttuğu için, internet bağlantısı kesildiğinde veya Plex’in sunucularında bir sorun olduğunda bazı işlevler kısıtlanabiliyordu. Jellyfin’de ise her şey benim sunucumda olduğu için, internet bağlantım olsa da olmasa da kütüphaneme erişebiliyor ve içerikleri oynatabiliyordum (yerel ağ üzerinden). Bu, özellikle network segmenti tasarlarken veya bir şirketin iç platformunu geliştirirken event-sourcing ve idempotency gibi kavramların önemini anlatan bir deneyimdi; kendi verinin tek ve güvenilir kaynağı olmak.
Güvenlik ve Kontrol: Kendi Verimin Sahibi Olmak
Plex’ten Jellyfin’e geçişimin en önemli motivasyonlarından biri de güvenlik ve veri kontrolüydü. Plex, bazı kullanıcı verilerini ve izleme alışkanlıklarını kendi sunucularında tutuyordu. Bir üretim firmasının ERP’sini geliştirirken, veri mahremiyeti ve kontrolü her zaman en üst önceliklerden biridir. Kendi medya sunucumda da benzer bir yaklaşım sergilemek istiyordum. Jellyfin, bu konuda tam bir özgürlük sunuyor. Tüm verilerim, sunucumda, benim kontrolüm altında kalıyor.
Kendi sunucumda Jellyfin’i çalıştırırken, güvenlik konusunda ekstra adımlar attım. Nginx reverse proxy’nin arkasına almak, sadece belirli portlardan erişime izin vermek ve fail2ban kullanarak brute-force saldırılarını engellemek gibi standart pratikleri uyguladım. Özellikle kendi yan ürünümün backend’inde rate limiting ve JWT/OAuth2 pattern’lerini uygularken edindiğim tecrübeler, bu tür açık kaynaklı servisleri dışarıya açarken ne kadar dikkatli olunması gerektiğini bana göstermişti.
Aşağıda Jellyfin için kullandığım Nginx reverse proxy konfigürasyonundan bir parça görebilirsiniz:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name jellyfin.example.com;
ssl_certificate /etc/letsencrypt/live/jellyfin.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/jellyfin.example.com/privkey.pem;
location / {
proxy_pass http://localhost:8096; # Jellyfin'in varsayılan portu
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_read_timeout 900s; # Uzun süreli bağlantılar için
}
}
Bu yapılandırma, Jellyfin trafiğini şifrelemekle kalmıyor, aynı zamanda dış dünyaya sadece Nginx üzerinden güvenli bir şekilde erişmesini sağlıyor. Ayrıca, sunucumda auditd kullanarak dosya bütünlük monitoring’i yapıyorum ve SELinux profilleriyle Jellyfin container’ının erişimini kısıtladım. Bu, sıradan bir medya sunucusu için aşırı gelebilir, ancak güvenlik benim için her zaman bir önceliktir. Özellikle bir VPS’i açtıktan 7 dakika sonra SSH’a brute-force saldırıların başladığını gören biri olarak, bu tür önlemleri almayı ihmal etmem.
Trade-off’lar ve Gelecek Planları
Plex’ten Jellyfin’e geçişim, benim için birkaç önemli trade-off’u beraberinde getirdi. En büyük kazancım, kendi verimin tam kontrolünü ele geçirmek ve sürpriz fiyat artışlarından etkilenmemek oldu. Açık kaynak kodlu bir platform kullanmak, topluluk desteğine erişim ve potansiyel olarak kendi ihtiyaçlarıma göre özelleştirme yapabilme esnekliği de cabasıydı. Kaybettiğim şey ise, Plex’in sunduğu “kurulum ve unut” kolaylığı ile daha geniş cihaz desteği ve bazı estetik cilalar oldu. Ancak bu kayıplar, elde ettiğim avantajların yanında benim için önemsiz kaldı.
Plex’in “share with friends” özelliği gibi bazı sosyal yönleri Jellyfin’de aynı kolaylıkta bulunmuyor. Ancak bu tür özellikleri nadiren kullandığım için benim için büyük bir eksiklik olmadı. Önemli olan, temel işlevselliğin (medya oynatma, transkoding, kütüphane yönetimi) sorunsuz çalışmasıydı ki Jellyfin bu konuda beni hiç hayal kırıklığına uğratmadı. Hatta, Jellyfin’in özelleştirme yeteneği sayesinde, kendi AI destekli operasyon pipeline’larıma bazı entegrasyonlar bile düşünmeye başladım. Örneğin, yeni eklenen medya içeriğini otomatik olarak belirli etiketlerle işaretlemek veya izleme alışkanlıklarıma göre öneriler oluşturmak için kendi AI agent’larımı kullanmak gibi fikirlerim var.
Gelecek planlarım arasında, Jellyfin kurulumumu daha da optimize etmek yer alıyor. Özellikle DSCP/QoS ayarlarını uçtan uca yapılandırarak medya akışının önceliğini artırmayı düşünüyorum. Şirket çıkışında 3 farklı ISP olduğunda, DSCP marking’in doğru yapılmaması yüzünden ses paketlerinin patladığını görmüş biri olarak, kendi ev ağımda da bu optimizasyonu yapmak istiyorum. Ayrıca, Jellyfin’i ZTNA (Zero Trust Network Access) mimarime entegre ederek uzaktan erişim güvenliğini daha da sıkılaştırmayı hedefliyorum. Kendi ev ağımı segmentasyon prensiplerine göre tasarladığım için, medya sunucusunun diğer cihazlardan izole bir şekilde çalışması benim için önemli.
Sonuç
Plex Pass’in fiyat politikası, benim için yıllardır kullandığım bir hizmetten vazgeçme nedeni oldu. Bu durum, sadece maliyet değil, aynı zamanda veri kontrolü ve açık kaynak felsefesine olan inancımın bir sonucuydu. Jellyfin’e geçiş süreci bazı zorlukları beraberinde getirse de, elde ettiğim özerklik ve esneklik, bu çabaya değdi. Jellyfin, performans, güvenlik ve özelleştirme açısından beklentilerimi fazlasıyla karşıladı.
Bu deneyim, bir kez daha gösterdi ki, yazılım mimarisi çoğu zaman sadece teknik bir konu değil, aynı zamanda organizasyonel akışları ve kullanıcıların beklentilerini yönetme meselesidir. Kendi verinizin sahibi olmak, dijital dünyada giderek daha önemli hale gelen bir ayrıcalık. Eğer siz de benim gibi, medya kütüphanenizin tam kontrolünü elinizde tutmak ve sürpriz maliyetlerden kaçınmak istiyorsanız, Jellyfin kesinlikle göz önünde bulundurmanız gereken bir alternatif. Benim için 250 dolarlık bir fiyat etiketi, sadece bir medya sunucusundan çok daha fazlasını temsil eden bir deneyimin kapısını araladı.