Jellyfin’i Kendi Sunucunuzda Traefik ile Güvenle Barındırma: Kapsamlı Bir Rehber
Dijital medya kütüphanenizi yönetmek, filmlerinizi, dizilerinizi ve müziklerinizi istediğiniz zaman, istediğiniz yerden erişilebilir kılmak artık karmaşık bir süreç olmak zorunda değil. Kendi medya sunucunuzu kurarak dijital varlıklarınız üzerinde tam kontrol sahibi olabilirsiniz. Bu rehberde, açık kaynaklı medya sunucusu Jellyfin’i, modern bir ters proxy (reverse proxy) ve yük dengeleyici olan Traefik ile birleştirerek, medya kütüphanenize hem güvenli hem de kolayca erişilebilir bir kapı açmanın inceliklerini adım adım inceleyeceğiz.
Kendi Medya Sunucunuz Neden Önemli? Jellyfin ve Traefik Nedir?
Günümüz dijital çağında, içerik tüketimi alışkanlıklarımız hızla değişiyor. Artık sadece televizyon kanallarına veya belirli platformlara bağlı kalmak yerine, kendi medya kütüphanelerimizi oluşturma ve bu kütüphanelere istediğimiz zaman erişme arzusu giderek artıyor. Ancak bu durum, gizlilik endişeleri, platform bağımlılığı ve yüksek abonelik ücretleri gibi çeşitli zorlukları da beraberinde getirebiliyor. İşte tam da bu noktada, kendi medya sunucunuzu barındırmak (self-hosting) devreye giriyor ve dijital özgürlüğünüzü yeniden tanımlıyor.
Kendi medya sunucunuzu kurmanın en büyük avantajlarından biri, medya içeriğiniz üzerinde tam kontrol sağlamanızdır. Hangi filmlerin, dizilerin veya müziklerin kütüphanenizde yer alacağına, bu içeriğin nasıl düzenleneceğine ve kimlerin erişebileceğine siz karar verirsiniz. Üçüncü taraf hizmetlerin kısıtlamalarından veya sansür politikalarından etkilenmezsiniz. Ayrıca, kişisel verilerinizin gizliliği konusunda endişelenmenize gerek kalmaz, çünkü tüm verileriniz kendi sunucunuzda güvende olur. Bu yaklaşım, uzun vadede abonelik maliyetlerinden tasarruf etmenizi sağlayabilir ve aynı zamanda teknoloji bilginizi geliştirmeniz için harika bir fırsat sunar.
Jellyfin: Özgür ve Açık Kaynak Medya Merkezi
Jellyfin, bu dijital özgürlüğü gerçeğe dönüştüren, ücretsiz ve açık kaynaklı bir medya sunucusu yazılımıdır. Plex ve Emby gibi popüler ticari alternatiflere güçlü bir rakip olarak ortaya çıkan Jellyfin, kullanıcılarına kendi medya kütüphanelerini düzenleme, kataloglama ve çeşitli cihazlar üzerinden yayınlama imkanı sunar. En büyük farkı ise, tamamen topluluk destekli olması ve hiçbir ücretli özelliğe sahip olmamasıdır. Jellyfin ile filmlerinizi, dizilerinizi, müziklerinizi, fotoğraflarınızı ve hatta canlı TV yayınlarınızı tek bir merkezi konumda toplayabilir, zengin meta veriler (kapak resimleri, özetler, oyuncu bilgileri) ile düzenleyebilir ve akıllı TV’lerden, mobil cihazlardan, web tarayıcılarından veya medya oynatıcılardan kolayca erişebilirsiniz.
Jellyfin’in öne çıkan bazı özellikleri şunlardır:
- Platform Bağımsızlığı: Windows, Linux, macOS ve Docker gibi çeşitli platformlarda çalışabilir.
- Geniş Cihaz Desteği: Android, iOS, Apple TV, Roku, Chromecast, Fire TV ve web tarayıcıları dahil olmak üzere birçok cihazda kullanılabilir uygulamaları mevcuttur.
- Donanım Hızlandırma (Hardware Transcoding): Desteklenen donanımlar (Intel Quick Sync, NVIDIA NVENC, AMD VCE/VCN) ile medya dönüştürme (transcoding) işlemlerini hızlandırarak düşük bant genişliğine sahip cihazlarda bile sorunsuz yayın deneyimi sunar.
- Kullanıcı Yönetimi: Aile üyeleri veya arkadaşlarınız için ayrı kullanıcı hesapları oluşturabilir, her kullanıcıya özel erişim izinleri ve kütüphane erişimi tanımlayabilirsiniz.
- Canlı TV ve DVR: Uyumlu TV tunerleri ile canlı TV yayınlarını izleyebilir ve kaydedebilirsiniz.
- Eklenti Desteği: Çeşitli eklentilerle işlevselliğini genişletebilirsiniz.
Bu özellikler, Jellyfin’i kendi medya merkezinizi kurmak isteyen herkes için cazip bir seçenek haline getirir.
Traefik: Modern Uygulamalar İçin Dinamik Ters Proxy ve Yük Dengeleyici
Medya sunucunuzu ev ağınızın dışından güvenli bir şekilde erişilebilir kılmak için bir ters proxy’ye ihtiyacınız vardır. İşte burada Traefik devreye giriyor. Traefik, modern bulut tabanlı uygulamalar, mikro hizmetler ve konteyner tabanlı ortamlar için tasarlanmış, açık kaynaklı bir kenar yönlendirici (edge router), ters proxy ve yük dengeleyicidir. Gelen ağ isteklerini dinler ve bu istekleri doğru arka uç hizmetlerine (örneğin Jellyfin sunucunuza) yönlendirir.
Traefik’i bu kadar özel kılan şey, dinamik yapılandırma yeteneğidir. Docker, Kubernetes, Rancher gibi konteyner orkestrasyon araçlarıyla doğrudan entegre olabilir ve yeni servisler dağıtıldığında veya mevcut servisler güncellendiğinde yapılandırmasını otomatik olarak güncelleyebilir. Bu, manuel yapılandırma ihtiyacını ortadan kaldırır ve yönetim yükünü büyük ölçüde azaltır.
Traefik’in temel faydaları şunlardır:
- Otomatik Keşif: Konteyner tabanlı servisleri otomatik olarak algılar ve bunlar için yönlendirme kuralları oluşturur.
- Otomatik SSL/TLS: Let’s Encrypt gibi hizmetlerle entegre olarak alan adlarınız için otomatik olarak SSL/TLS sertifikaları sağlar ve yeniler, böylece güvenli (HTTPS) bağlantılar kurmanızı kolaylaştırır.
- Yük Dengeleme: Birden fazla arka uç servisi arasında trafiği dağıtarak performansı ve kullanılabilirliği artırır.
- Middleware Desteği: Kimlik doğrulama, IP kısıtlamaları, yeniden yönlendirmeler gibi ek işlevler için ara katman yazılımları (middleware) kullanmanıza olanak tanır.
- Kolay Yönetim Paneli: Traefik’in durumunu, yönlendirme kurallarını ve sertifikalarını izleyebileceğiniz web tabanlı bir gösterge paneli sunar.
Jellyfin’i kendi sunucunuzda barındırırken Traefik kullanmak, medya kütüphanenize güvenli, şifreli (HTTPS) ve kolayca erişilebilir bir kapı açmanın anahtarıdır. Traefik, Jellyfin konteynerinizi otomatik olarak algılar, ona bir alan adı atar ve Let’s Encrypt ile ücretsiz bir SSL sertifikası sağlayarak tüm bu karmaşık işlemleri sizin için otomatikleştirir. Böylece, medya sunucunuz hem profesyonel bir görünüme kavuşur hem de dış dünyaya karşı güvende olur.
Başlangıç İçin Temel Hazırlıklar: Neler Gerekiyor?
Jellyfin ve Traefik ile kendi medya sunucunuzu kurma yolculuğuna çıkmadan önce, bazı temel hazırlıkları tamamlamanız gerekmektedir. Bu adımlar, kurulum sürecinin sorunsuz ilerlemesi ve sisteminizin sağlam bir temel üzerine inşa edilmesi için kritik öneme sahiptir.
Donanım Seçimi: Medya Sunucunuzun Kalbi
Medya sunucunuz için doğru donanımı seçmek, performans ve maliyet arasında bir denge kurmayı gerektirir. İhtiyaçlarınıza ve bütçenize göre birkaç farklı seçenek mevcuttur:
- Ev Sunucusu (Dedicated Home Server): Eski bir masaüstü bilgisayarınızı yeniden değerlendirebilir veya uygun fiyatlı mini PC’ler (Intel NUC, Raspberry Pi 4 – ancak Raspberry Pi 4 transcoding için yeterli olmayabilir) kullanabilirsiniz. Bu seçenek, genellikle en esnek ve güçlü çözümü sunar. Özellikle çok sayıda eşzamanlı yayın veya donanım hızlandırma (hardware transcoding) ihtiyacınız varsa, Intel işlemcili (Quick Sync destekli) veya NVIDIA ekran kartlı bir sistem tercih etmek önemlidir.
- NAS (Network Attached Storage) Cihazları: Synology, QNAP gibi markaların NAS cihazları, medya depolama ve sunucu işlevlerini bir arada sunar. Bazı modeller (özellikle Intel işlemcili olanlar) Docker’ı destekler ve Jellyfin’i kolayca kurmanıza olanak tanır. NAS’lar genellikle daha az güç tüketir ve daha sessiz çalışır, ancak ilk yatırım maliyetleri daha yüksek olabilir.
- Mini PC’ler: Daha az yer kaplayan, enerji verimli ve genellikle sessiz çalışan mini PC’ler, ev ortamı için idealdir. Özellikle Intel NUC serisi veya benzeri cihazlar, entegre grafik birimleri sayesinde donanım hızlandırma için iyi birer aday olabilir.
Seçtiğiniz donanım ne olursa olsun, yeterli depolama alanına (medya kütüphaneniz için), en az 8GB RAM’e ve çoklu yayınları veya transcoding’i kaldırabilecek bir işlemciye sahip olduğundan emin olun. Özellikle 4K içerik yayınlamayı planlıyorsanız, işlemci gücü ve donanım hızlandırma desteği daha da kritik hale gelecektir.
İşletim Sistemi: Sunucunuzun Temeli
Jellyfin ve Traefik’i Docker konteynerleri içinde çalıştıracağımız için, ana işletim sisteminin seçimi genellikle Linux dağıtımlarından yana olur. Linux, kararlılığı, güvenliği ve kaynak verimliliği nedeniyle sunucu ortamları için idealdir. En popüler ve önerilen seçenekler şunlardır:
- Ubuntu Server: Geniş topluluk desteği, zengin dokümantasyon ve kolay kullanımı sayesinde yeni başlayanlar için harika bir seçenektir.
- Debian: Ubuntu’nun temelini oluşturan Debian, daha kararlı ve minimalist bir deneyim arayanlar için uygundur.
- Proxmox VE (Virtual Environment): Eğer birden fazla sanal makine veya konteyner çalıştırmayı planlıyorsanız, Proxmox gibi bir hipervizör (hypervisor) kullanmak, kaynakları daha verimli yönetmenizi sağlar. Bu durumda, Jellyfin ve Traefik’i ayrı bir Ubuntu/Debian sanal makinesi içinde Docker üzerinde çalıştırabilirsiniz.
İşletim sistemini kurarken, SSH erişimini etkinleştirdiğinizden emin olun, böylece sunucunuza uzaktan bağlanarak komut satırı üzerinden yönetim işlemlerini gerçekleştirebilirsiniz. Ayrıca, sistem güncellemelerini düzenli olarak yapmayı unutmayın.
Docker ve Docker Compose Kurulumu: Konteyner Gücü
Jellyfin ve Traefik’i konteynerler içinde çalıştırmak, kurulumu basitleştirir, bağımlılık sorunlarını ortadan kaldırır ve yönetimi kolaylaştırır. Docker, uygulamaları konteyner adı verilen izole edilmiş ortamlarda paketlemenizi sağlar. Docker Compose ise, birden fazla Docker konteynerini tek bir YAML dosyası üzerinden tanımlamanıza ve yönetmenize olanak tanır.
Kurulum adımları (Ubuntu/Debian için):
- Docker Kurulumu:
Sisteminizi güncelleyin:
sudo apt update && sudo apt upgrade -yDocker’ın kurulumu için gerekli paketleri yükleyin:
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release -yDocker GPG anahtarını ekleyin:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpgDocker deposunu ekleyin:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullDocker’ı yükleyin:
sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io -yKullanıcınızı
dockergrubuna ekleyin (yeniden oturum açmanız gerekebilir):sudo usermod -aG docker $USERDocker’ın çalıştığını doğrulayın:
docker run hello-world - Docker Compose Kurulumu:
Docker Compose’un en son kararlı sürümünü indirin (sürüm numarasını kontrol edin):
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composeİndirilen dosyaya yürütme izni verin:
sudo chmod +x /usr/local/bin/docker-composeDocker Compose’un çalıştığını doğrulayın:
docker-compose --version
Bu adımları tamamladıktan sonra, sunucunuz Docker konteynerlerini çalıştırmaya hazır olacaktır.
Alan Adı ve DNS Yapılandırması: İnternet Kimliğiniz
Jellyfin sunucunuza ev ağınızın dışından erişmek ve Traefik’in otomatik SSL sertifikalarını kullanabilmesi için bir alan adına (domain name) ihtiyacınız olacaktır. Bir alan adı sağlayıcısından (örneğin Namecheap, Godaddy, Turhost) kendi alan adınızı satın alabilirsiniz. Örneğin, benimmedyam.com gibi bir alan adı kullanabilirsiniz.
Alan adınızı aldıktan sonra, DNS (Domain Name System) kayıtlarını yapılandırmanız gerekir. Temel olarak, alan adınızı veya bir alt alan adını (subdomain) ev ağınızın dış IP adresine işaret etmelisiniz. Bu genellikle bir A kaydı (A record) veya CNAME kaydı (CNAME record) ile yapılır:
- A Kaydı:
jellyfin.benimmedyam.comgibi bir alt alan adını, ev internet sağlayıcınızdan aldığınız genel (public) IP adresinize yönlendirir. - CNAME Kaydı: Eğer dinamik bir IP adresiniz varsa ve bunu yönetmek için DDNS (Dynamic DNS) hizmeti kullanıyorsanız, CNAME kaydını DDNS sağlayıcınızın size verdiği adrese yönlendirebilirsiniz.
Ev internet sağlayıcınız genellikle size dinamik bir IP adresi atar, yani IP adresiniz zaman zaman değişebilir. Bu durumda, bir DDNS hizmeti (örneğin No-IP, DynDNS, DuckDNS) kullanarak alan adınızın her zaman güncel IP adresinizi göstermesini sağlayabilirsiniz. Birçok modern modem/router, DDNS ayarlarını doğrudan arayüzünden yapılandırma olanağı sunar.
Son olarak, modem/router’ınızda port yönlendirme (port forwarding) yapmanız gerekecektir. Traefik’in gelen HTTP (port 80) ve HTTPS (port 443) isteklerini dinleyebilmesi için, bu portları modeminizden sunucunuzun yerel IP adresine yönlendirmeniz şarttır. Bu ayarlar, modeminizin yönetim arayüzünden yapılır ve modeline göre değişiklik gösterebilir. Genellikle “Port Forwarding”, “NAT” veya “Sanal Sunucu” gibi bölümlerde bulunur.
Bu hazırlıklar tamamlandığında, Jellyfin ve Traefik kurulumuna geçmeye hazır olacaksınız. Her adımın doğru yapıldığından emin olmak, ileride yaşanabilecek sorunların önüne geçecektir.
Adım Adım Kurulum Rehberi: Traefik ve Jellyfin’i Docker ile Nasıl Çalıştırılır?
Artık temel hazırlıkları tamamladığımıza göre, Traefik ve Jellyfin’i Docker konteynerleri içinde kurmaya başlayabiliriz. Bu bölümde, iki servisi de bir docker-compose.yml dosyası aracılığıyla nasıl yapılandıracağımızı ve çalıştıracağımızı adım adım ele alacağız. Bu yaklaşım, servislerinizi yönetmeyi, güncelleştirmeyi ve yedeklemeyi oldukça kolaylaştıracaktır.
Proje Dizini Oluşturma
Öncelikle, tüm yapılandırma dosyalarımızı ve Docker Compose dosyamızı barındıracak bir ana proje dizini oluşturalım. Bu, organizasyon açısından önemlidir.
mkdir -p ~/jellyfin-traefik
cd ~/jellyfin-traefik
Bu dizin altında, Traefik ve Jellyfin için gerekli dosyaları oluşturacağız.
Traefik Yapılandırması: Ters Proxy’nizi Ayağa Kaldırma
Traefik’i çalıştırabilmek için iki ana dosyaya ihtiyacımız olacak: docker-compose.yml ve traefik.yml. docker-compose.yml Traefik servisini tanımlarken, traefik.yml Traefik’in kendi iç yapılandırmasını içerir.
docker-compose.yml (Traefik Bölümü)
Ana dizininizde docker-compose.yml adında bir dosya oluşturun ve aşağıdaki içeriği ekleyin. Bu dosya, Traefik servisini, ağlarını ve Docker soketine erişimini tanımlar.
version: '3.8'
services:
traefik:
image: traefik:v2.10 # Traefik'in en son kararlı sürümünü kullanın
container_name: traefik
restart: unless-stopped
security_opt:
- no-new-privileges:true
networks:
- web
ports:
- "80:80" # HTTP trafiği için
- "443:443" # HTTPS trafiği için
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro # Docker soketi erişimi
- ./traefik.yml:/etc/traefik/traefik.yml:ro # Traefik ana yapılandırması
- ./acme.json:/etc/traefik/acme.json # Let's Encrypt sertifikaları için
command:
- --log.level=INFO
- --api.dashboard=true # Traefik dashboard'u etkinleştir
- --api.insecure=false # Dashboard'a güvenli erişim
- --providers.docker=true
- --providers.docker.exposedbydefault=false # Varsayılan olarak servisleri gösterme
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --entrypoints.web.http.redirections.entrypoint.to=websecure
- --entrypoints.web.http.redirections.entrypoint.scheme=https
- --certificatesresolvers.myresolver.acme.email=your-email@example.com # Kendi e-posta adresinizi yazın
- --certificatesresolvers.myresolver.acme.storage=/etc/traefik/acme.json
- --certificatesresolvers.myresolver.acme.tlschallenge=true # TLS Challenge ile sertifika alımı
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik-dashboard.rule=Host(traefik.your-domain.com)" # Kendi alan adınızı yazın
- "traefik.http.routers.traefik-dashboard.entrypoints=websecure"
- "traefik.http.routers.traefik-dashboard.tls.certresolver=myresolver"
- "traefik.http.routers.traefik-dashboard.service=api@internal"
- "traefik.http.routers.traefik-dashboard.middlewares=traefik-auth" # Dashboard için basic auth
- "traefik.http.middlewares.traefik-auth.basicauth.users=user:$$apr1$$HASH$$" # Kendi kullanıcı adı ve şifrenizi oluşturun
- "traefik.http.services.traefik-dashboard.loadbalancer.server.port=8080" # Traefik dashboard varsayılan portu
networks:
web:
external: true # Bu ağı diğer servislerle paylaşacağız
Önemli Notlar:
image: traefik:v2.10kısmındaki sürümü güncel tutun.your-email@example.comyerine kendi geçerli e-posta adresinizi yazın. Let’s Encrypt sertifika bildirimleri bu adrese gönderilecektir.traefik.your-domain.comyerine Traefik dashboard’una erişmek istediğiniz alt alan adını yazın. Örneğin,traefik.benimmedyam.com.user:$$apr1$$HASH$$kısmı için bir kullanıcı adı ve şifre oluşturmanız gerekiyor. Birhtpasswdaracı kullanarak (örneğin online bir generator veyaapache2-utilspaketindekihtpasswdkomutu ile) şifrenizi şifreleyin. Örneğin,echo $(htpasswd -nb user password) | sed -e s/\\$/\\$\\$/gkomutunu kullanarak çıktıyı buraya yapıştırın.acme.jsondosyası Traefik tarafından otomatik olarak oluşturulacak ve sertifikaları depolayacaktır. İlk çalıştırmadan önce bu dosyayı oluşturup boş bırakın ve doğru izinleri verin:touch acme.json chmod 600 acme.jsonnetworks: web: external: trueile harici bir ağ tanımlıyoruz. Bu ağı daha sonra Jellyfin ve diğer servisler için de kullanacağız. Bu ağı henüz oluşturmadıysanız, Traefik’i başlatmadan önce oluşturun:docker network create web
traefik.yml (Traefik Ana Yapılandırması)
Ana dizininizde traefik.yml adında bir dosya oluşturun ve aşağıdaki içeriği ekleyin. Bu dosya, Traefik’in genel davranışlarını ve Let’s Encrypt yapılandırmasını belirler.
api:
dashboard: true
insecure: false # Dashboard'a güvenli erişim için false olmalı
entryPoints:
web:
address: ":80"
http:
redirections:
entryPoint:
to: "websecure"
scheme: "https"
websecure:
address: ":443"
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false # Varsayılan olarak hiçbir servisi gösterme
network: web # Sadece 'web' ağındaki servisleri dinle
certificatesResolvers:
myresolver:
acme:
email: "your-email@example.com" # Kendi e-posta adresinizi yazın
storage: "acme.json"
tlsChallenge: {} # TLS Challenge kullanarak sertifika alımı
your-email@example.com kısmını yine kendi e-posta adresinizle güncellemeyi unutmayın.
Jellyfin Yapılandırması: Medya Sunucunuzu Entegre Etme
Şimdi docker-compose.yml dosyamıza Jellyfin servisini ekleyelim. Bu servis, Traefik tarafından algılanacak ve ona yönlendirilecektir.
docker-compose.yml (Jellyfin Bölümü)
Mevcut docker-compose.yml dosyanızı açın ve services: bloğunun altına aşağıdaki Jellyfin servisini ekleyin:
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
restart: unless-stopped
security_opt:
- no-new-privileges:true
networks:
- web
volumes:
- ./config/jellyfin:/config # Jellyfin yapılandırma dosyaları
- ./cache/jellyfin:/cache # Jellyfin önbellek dosyaları
- /path/to/your/media:/media # Medya dosyalarınızın yolu (ÖNEMLİ: Kendi yolunuzu yazın!)
- /path/to/your/tvshows:/tvshows # TV şovlarınızın yolu (isteğe bağlı)
- /path/to/your/movies:/movies # Filmlerinizin yolu (isteğe bağlı)
environment:
- PUID=1000 # Kullanıcı ID'nizi buraya yazın (genellikle 1000)
- PGID=1000 # Grup ID'nizi buraya yazın (genellikle 1000)
- TZ=Europe/Istanbul # Kendi zaman diliminizi yazın
- JELLYFIN_PublishedServerUrl=https://jellyfin.your-domain.com # Kendi alan adınızı yazın
labels:
- "traefik.enable=true"
- "traefik.http.routers.jellyfin.rule=Host(jellyfin.your-domain.com)" # Kendi alan adınızı yazın
- "traefik.http.routers.jellyfin.entrypoints=websecure"
- "traefik.http.routers.jellyfin.tls.certresolver=myresolver"
- "traefik.http.services.jellyfin.loadbalancer.server.port=8096" # Jellyfin'in varsayılan portu
- "traefik.http.routers.jellyfin.middlewares=jellyfin-compress@docker" # Gzip sıkıştırma (isteğe bağlı)
- "traefik.http.middlewares.jellyfin-compress.compress=true"
Önemli Notlar:
/path/to/your/media,/path/to/your/tvshows,/path/to/your/moviesgibi yer tutucuları, medya dosyalarınızın sunucunuzdaki gerçek yollarıyla değiştirmeniz gerekmektedir. Örneğin,/mnt/medya/filmler.PUIDvePGIDdeğerleri, Docker konteynerinin medya dosyalarınıza erişebilmesi için önemlidir. Bu değerleri sunucunuzdaid $USERkomutunu çalıştırarak bulabilirsiniz. Genellikle her ikisi de1000olur.TZdeğerini kendi zaman diliminize göre ayarlayın (örneğinEurope/Istanbul).jellyfin.your-domain.comyerine Jellyfin’e erişmek istediğiniz alt alan adını yazın. Örneğin,jellyfin.benimmedyam.com.- Jellyfin’in varsayılan HTTP portu
8096‘dır, bu yüzden Traefik servisi bu porta yönlendirme yapar. jellyfin-compress@dockermiddleware’ı, web trafiğini sıkıştırarak bant genişliği kullanımını azaltabilir.
Tüm Servisleri Başlatma
Tüm yapılandırma dosyalarınızı kaydettikten sonra, proje dizininizde (~/jellyfin-traefik) aşağıdaki komutu çalıştırarak servisleri başlatabilirsiniz:
docker-compose up -d
-d bayrağı, konteynerleri arka planda çalıştırmanızı sağlar. Servisler başlarken, Traefik otomatik olarak Let’s Encrypt ile alan adlarınız için SSL sertifikalarını almaya çalışacaktır. Bu işlem birkaç dakika sürebilir.
Kurulumun başarılı olup olmadığını kontrol etmek için:
docker-compose pskomutu ile konteynerlerin çalıştığını kontrol edin.docker-compose logs traefikkomutu ile Traefik loglarını izleyerek sertifika alım sürecini görebilirsiniz.- Tarayıcınızdan
https://traefik.your-domain.comadresine giderek Traefik dashboard’una erişmeyi deneyin. Başarılı olursa, belirlediğiniz kullanıcı adı ve şifre ile giriş yapmalısınız. - Ardından,
https://jellyfin.your-domain.comadresine giderek Jellyfin kurulum sihirbazına ulaşmalısınız. İlk kurulumu tamamlayarak medya kütüphanelerinizi ekleyebilirsiniz.
Bu adımlarla, Traefik ve Jellyfin’i Docker ile başarıyla kurmuş ve güvenli bir şekilde erişilebilir hale getirmiş olmalısınız. Artık kendi medya kütüphanenizi yönetme ve istediğiniz yerden erişme özgürlüğüne sahipsiniz!
Jellyfin’i Güvenli ve Erişilebilir Kılma: Traefik’in Rolü
Jellyfin medya sunucunuzu kurmak sadece ilk adımdır. Medya kütüphanenize ev ağınızın dışından güvenli bir şekilde erişebilmek, kullanıcı deneyimini zenginleştirmenin yanı sıra, dijital varlıklarınızı yetkisiz erişimden korumak için de hayati öneme sahiptir. İşte Traefik’in bu noktada devreye girdiği ve Jellyfin’i güvenli ve erişilebilir kılmada oynadığı kilit rol:
Otomatik HTTPS (SSL/TLS) ile Şifreleme: Güvenli Bağlantının Temeli
İnternet üzerindeki her türlü iletişimde güvenlik, şifreleme ile sağlanır. HTTPS (Hypertext Transfer Protocol Secure), web siteleri ile kullanıcılar arasındaki iletişimi şifreleyerek veri bütünlüğünü ve gizliliğini korur. Traefik, Let’s Encrypt ile tam entegrasyonu sayesinde, alan adınız için ücretsiz ve otomatik olarak SSL/TLS sertifikaları sağlar ve bunları düzenli olarak yeniler. Bu, Jellyfin sunucunuzla olan tüm iletişimin şifrelenmesini ve dışarıdan gelebilecek olası dinlemelere karşı korunmasını garanti eder.
Önceki bölümde docker-compose.yml ve traefik.yml dosyalarında yaptığımız yapılandırmalar sayesinde, Traefik otomatik olarak şu adımları gerçekleştirir:
- Gelen HTTP (port 80) isteklerini otomatik olarak HTTPS (port 443) üzerine yönlendirir.
- Belirttiğiniz alan adları (örneğin
jellyfin.your-domain.com) için Let’s Encrypt’e sertifika talebinde bulunur. - Let’s Encrypt’in alan adı sahipliğini doğrulaması için TLS Challenge yöntemini kullanır (bu, Traefik’in port 443 üzerinden belirli bir doğrulama isteğini yanıtlamasıyla gerçekleşir).
- Sertifikaları alır ve
acme.jsondosyasına kaydeder. - Sertifikaların süresi dolmadan önce otomatik olarak yeniler.
Bu sayede, tarayıcınızdan veya Jellyfin uygulamalarından sunucunuza bağlanırken “güvenli bağlantı” simgesini (kilit işareti) görecek ve verilerinizin şifrelendiğinden emin olacaksınız. Bu, özellikle medya kütüphanenize uzaktan erişirken veya hassas bilgiler (kullanıcı adları, şifreler) girerken kritik bir güvenlik katmanıdır.
Kimlik Doğrulama ve Yetkilendirme: Erişim Kontrolü
Jellyfin’in kendi içinde kullanıcı yönetimi olmasına rağmen, Traefik seviyesinde ek bir kimlik doğrulama katmanı eklemek, sunucunuzu daha da güvenli hale getirebilir. Özellikle Traefik dashboard’u gibi yönetim arayüzlerine erişimi kısıtlamak için bu yöntem oldukça etkilidir. Örnek docker-compose.yml dosyamızda Traefik dashboard’u için temel kimlik doğrulama (basic auth) middleware’ı tanımlamıştık:
- "traefik.http.middlewares.traefik-auth.basicauth.users=user:$$apr1$$HASH$$"
Bu, Traefik dashboard’una erişmeye çalışan her kullanıcının önce belirlediğiniz kullanıcı adı ve şifreyi girmesini gerektirir. Jellyfin için de benzer bir middleware tanımlayarak, Jellyfin’in kendi login ekranına ulaşmadan önce ek bir kimlik doğrulama adımı ekleyebilirsiniz. Ancak bu, kullanıcı deneyimini bir miktar etkileyebileceğinden, genellikle Jellyfin’in kendi kullanıcı yönetimi yeterli görülür. Daha ileri düzey güvenlik için Authelia gibi tek oturum açma (Single Sign-On – SSO) çözümleri Traefik ile entegre edilebilir, ancak bu daha karmaşık bir yapılandırma gerektirir.
Güvenlik Duvarı (Firewall) Ayarları: Ağınızı Koruma
Sunucunuzun güvenliği için en temel adımlardan biri, bir güvenlik duvarı (firewall) yapılandırmaktır. Linux tabanlı sistemlerde UFW (Uncomplicated Firewall) veya iptables gibi araçlar kullanılabilir. Temel prensip, yalnızca kesinlikle gerekli olan portları açmaktır. Traefik’in düzgün çalışabilmesi ve Let’s Encrypt sertifikalarını alabilmesi için sadece aşağıdaki portların dışarıdan erişime açık olması gerekir:
- Port 80 (HTTP): Let’s Encrypt sertifika doğrulama için gereklidir (Traefik otomatik olarak HTTPS’ye yönlendirse bile).
- Port 443 (HTTPS): Şifreli web trafiği için gereklidir.
Diğer tüm portlar kapalı olmalıdır. SSH erişimi için kullandığınız portu da (varsayılan 22, ancak güvenliği artırmak için değiştirilmesi önerilir) sadece belirli IP adreslerinden erişime açmak iyi bir uygulamadır. Örneğin, UFW kullanarak bu kuralları uygulayabilirsiniz:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow OpenSSH # veya belirlediğiniz SSH portu
sudo ufw enable
Bu, sunucunuzun dışarıdan gelebilecek gereksiz bağlantı isteklerine karşı korunmasını sağlar ve saldırı yüzeyini azaltır.
Ağ Erişimi Kontrolü: IP Tabanlı Kısıtlamalar
Traefik, middleware’lar aracılığıyla IP tabanlı erişim kısıtlamaları da uygulamanıza olanak tanır. Örneğin, Jellyfin’e sadece belirli IP adreslerinden veya IP aralıklarından erişilmesini isteyebilirsiniz. Bu, özellikle sunucunuza sadece kendi ev ağınızdan veya belirli güvenilir konumlardan erişecekseniz kullanışlıdır.
Örneğin, docker-compose.yml dosyanıza aşağıdaki gibi bir IP kısıtlama middleware’ı ekleyebilirsiniz:
- "traefik.http.middlewares.ip-whitelist.ipwhitelist.sourcerange=192.168.1.0/24,203.0.113.42/32" # Güvenilir IP'lerinizi yazın
Ve sonra bu middleware’ı Jellyfin router’ınıza ekleyin:
- "traefik.http.routers.jellyfin.middlewares=ip-whitelist@docker,jellyfin-compress@docker"
Bu sayede, sadece belirttiğiniz IP aralıklarından gelen bağlantılara izin verilir, diğer tüm bağlantılar reddedilir. Bu, sunucunuzun güvenliğini bir üst seviyeye taşır.
Traefik’in bu güçlü özellikleri sayesinde, Jellyfin medya sunucunuz sadece erişilebilir olmakla kalmaz, aynı zamanda modern web standartlarına uygun, şifreli ve güvenli bir şekilde dış dünyaya açılır. Bu da size dijital medya kütüphanenizi gönül rahatlığıyla kullanma imkanı sunar.
Performans ve Yönetim İpuçları: Medya Deneyiminizi Optimize Edin
Jellyfin ve Traefik kurulumunuzu tamamladınız ve medya kütüphanenize güvenle erişebiliyorsunuz. Ancak, mükemmel bir medya deneyimi sunmak ve sunucunuzu uzun vadede sorunsuz çalıştırmak için bazı performans optimizasyonları ve yönetim ipuçları uygulamak faydalı olacaktır. Bu bölüm, sunucunuzun verimliliğini artırmanıza ve bakımını kolaylaştırmanıza yardımcı olacak pratik bilgiler sunmaktadır.
Donanım Hızlandırma (Hardware Transcoding): Akıcı Yayınların Sırrı
Medya sunucularında en çok kaynak tüketen işlemlerden biri, medya dosyalarının farklı cihazlara uygun formatlara dönüştürülmesi, yani “transcoding” işlemidir. Özellikle 4K veya yüksek bit hızlı videoları daha düşük bant genişliğine sahip cihazlara (örneğin mobil telefonlar) yayınlarken transcoding kaçınılmaz hale gelir. Yazılımsal transcoding, işlemcinizi yoğun bir şekilde kullanır ve bu da sunucunuzun yavaşlamasına, ısınmasına ve diğer işlemleri etkilemesine neden olabilir.
Donanım hızlandırma (hardware transcoding), bu yükü işlemciden alarak özel donanım bileşenlerine (GPU veya entegre grafik birimi) aktarır. Bu, transcoding işlemini çok daha verimli ve hızlı hale getirir, aynı zamanda işlemcinin diğer görevler için serbest kalmasını sağlar. Jellyfin, Intel Quick Sync Video, NVIDIA NVENC ve AMD VCE/VCN gibi popüler donanım hızlandırma teknolojilerini destekler.
Docker’da Donanım Hızlandırmayı Etkinleştirme:
Donanım hızlandırmayı etkinleştirmek için, Jellyfin Docker konteynerine ilgili donanım aygıtlarını (device) passthrough yapmanız gerekir. Bu, docker-compose.yml dosyanızdaki Jellyfin servisine devices bölümünü ekleyerek yapılır.
- Intel Quick Sync için:
Eğer Intel işlemciniz Quick Sync destekliyorsa (çoğu modern Intel CPU’da bulunur), aşağıdaki satırı Jellyfin servis tanımınıza ekleyin:
devices: - /dev/dri:/dev/driAyrıca, Jellyfin konteynerinin doğru izinlere sahip olduğundan emin olun. Genellikle
renderveyavideogrubuna kullanıcı ID’nizi eklemeniz gerekebilir. Sunucunuzdasudo usermod -aG render $USERveyasudo usermod -aG video $USERkomutlarını çalıştırın. - NVIDIA NVENC için:
Eğer NVIDIA ekran kartınız varsa, NVIDIA’nın Docker entegrasyonunu kullanmanız gerekir. Öncelikle NVIDIA Container Toolkit’i kurmanız gerekebilir. Ardından, Jellyfin servis tanımınıza aşağıdaki satırı ekleyin:
runtime: nvidia environment: - NVIDIA_VISIBLE_DEVICES=all # veya belirli bir GPU ID'si
Donanım hızlandırmayı etkinleştirdikten sonra, Jellyfin web arayüzünden “Yönetici Paneli > Transcoding” bölümüne giderek kullandığınız donanım hızlandırma yöntemini seçmeyi unutmayın. Bu ayar, medya yayınlarınızın akıcılığı üzerinde büyük bir etkiye sahip olacaktır.
Depolama Çözümleri: Medya Kütüphanenizin Evi
Medya kütüphaneniz büyüdükçe, güvenilir ve geniş depolama çözümlerine olan ihtiyacınız da artacaktır. Doğru depolama stratejisi seçimi, veri güvenliği ve erişim hızı açısından önemlidir:
- RAID (Redundant Array of Independent Disks): Birden fazla diski bir araya getirerek performans veya veri yedekliliği sağlayan bir teknolojidir. RAID 1 (veri yedekliliği), RAID 5 veya RAID 6 (hem performans hem de yedeklilik) gibi seçenekler, disk arızalarına karşı koruma sağlayabilir.
- ZFS veya Btrfs: Bu modern dosya sistemleri, veri bütünlüğü kontrolü, anlık görüntüler (snapshots) ve kolay depolama havuzu yönetimi gibi gelişmiş özellikler sunar. Özellikle büyük medya kütüphaneleri için önerilir.
- Harici Diskler: Başlangıç için uygun maliyetli bir çözüm olabilir, ancak performans ve uzun vadeli güvenilirlik açısından dahili diskler veya NAS çözümleri kadar iyi değildir.
Hangi depolama çözümünü seçerseniz seçin, medya dosyalarınızın düzenli olarak yedeklendiğinden emin olun. Dijital varlıklarınızı kaybetmek istemezsiniz!
Güncelleme ve Bakım: Sisteminizin Sağlıklı Kalması
Konteyner tabanlı bir sistemde bile düzenli güncelleme ve bakım, güvenlik açıklarını kapatmak, yeni özelliklerden yararlanmak ve sistem kararlılığını sağlamak için kritik öneme sahiptir:
- Docker Konteynerlerini Güncelleme: Konteynerlerinizi düzenli olarak en son sürümlerine güncellemek önemlidir. Bunun için
docker-compose pullkomutuyla yeni imajları çekebilir, ardındandocker-compose up -dile konteynerleri yeniden oluşturabilirsiniz. - İşletim Sistemi Güncellemeleri: Ana işletim sisteminizi de düzenli olarak güncelleyin:
sudo apt update && sudo apt upgrade -y - Traefik Sertifikalarını Kontrol Etme: Traefik, Let’s Encrypt sertifikalarını otomatik olarak yenilese de, zaman zaman Traefik dashboard’undan veya loglardan sertifika durumunu kontrol etmek iyi bir alışkanlıktır.
- Disk Alanı Takibi: Medya kütüphaneniz büyüdükçe disk alanınızın dolduğunu fark edebilirsiniz. Düzenli olarak disk kullanımını kontrol edin ve gereksiz dosyaları temizleyin.
Yedekleme Stratejileri: Verileriniz Güvende Olsun
En iyi donanım ve yazılım bile arızalanabilir. Bu yüzden sağlam bir yedekleme stratejisine sahip olmak vazgeçilmezdir. Jellyfin’in yapılandırma dosyaları, meta verileri ve kullanıcı verileri oldukça değerlidir. Medya dosyalarınız genellikle çok yer kapladığı için ayrı bir yedekleme stratejisi gerektirebilir.
- Jellyfin Yapılandırması ve Meta Verileri:
docker-compose.ymldosyanızda Jellyfin’in/configve/cachebirimlerini (volumes) ana sunucunuzdaki belirli dizinlere bağlamıştık. Bu dizinlerin (örneğin~/jellyfin-traefik/config/jellyfin) düzenli olarak harici bir diske, ağ depolama alanına veya bulut depolama hizmetine yedeklenmesi önemlidir. - Traefik Yapılandırması ve Sertifikaları:
traefik.ymlveacme.jsondosyalarını da yedeklemeyi unutmayın. Özellikleacme.json, Let’s Encrypt sertifikalarınızı içerir. - Medya Dosyaları: Filmleriniz, dizileriniz ve müzikleriniz genellikle terabaytlarca yer kaplar. Bunları yedeklemek için harici sabit diskler, bir NAS cihazındaki RAID yapılandırması veya bulut depolama hizmetleri (Google Drive, OneDrive, Amazon S3) gibi çözümler düşünebilirsiniz. Rclone gibi araçlar, bulut depolama hizmetleriyle senkronizasyon için oldukça kullanışlıdır.
Unutmayın, yedekleme yapmak kadar, yedeklerinizi düzenli olarak test etmek de önemlidir. Bir felaket anında yedeklerinizin gerçekten işe yaradığından emin olmalısınız.
Bu performans ve yönetim ipuçları, Jellyfin medya sunucunuzu Traefik ile birlikte daha verimli, güvenli ve sorunsuz bir şekilde çalıştırmanıza yardımcı olacaktır. Kendi medya merkezinizin keyfini çıkarırken, aynı zamanda sisteminizi profesyonelce yönettiğinizden emin olabilirsiniz.
Sonuç: Dijital Medya Özgürlüğünüz Parmaklarınızın Ucunda
Bu kapsamlı rehber boyunca, Jellyfin ve Traefik ikilisini kullanarak kendi medya sunucunuzu sıfırdan nasıl kuracağınızı, yapılandıracağınızı ve güvenli bir şekilde erişilebilir hale getireceğinizi adım adım inceledik. Dijital medya kütüphanenizi kendi kontrolünüzde tutmanın, gizliliğinizi korumanın ve içeriklerinize istediğiniz yerden, istediğiniz zaman erişmenin ne kadar kolay ve ödüllendirici olabileceğini gördük. Traefik’in dinamik ters proxy yetenekleri ve otomatik SSL sertifikaları sayesinde, karmaşık ağ ve güvenlik yapılandırmalarıyla uğraşmadan profesyonel düzeyde bir medya sunucusu deneyimi elde edebilirsiniz.
Jellyfin’in açık kaynaklı yapısı, geniş cihaz desteği ve güçlü transcoding yetenekleri, onu kişisel medya kütüphaneniz için ideal bir seçim haline getiriyor. Traefik ise, bu kütüphaneye güvenli ve modern bir kapı açarak, içeriğinize HTTPS üzerinden şifreli bir şekilde erişmenizi sağlıyor. Docker ve Docker Compose’un sağladığı konteynerleştirme kolaylığı sayesinde, tüm bu bileşenleri hızlı ve verimli bir şekilde kurup yönetmek artık mümkün.
Unutmayın, kendi sunucunuzu barındırmak sürekli bir öğrenme ve bakım sürecidir. Düzenli güncellemeler, donanım optimizasyonları ve sağlam bir yedekleme stratejisi, medya sunucunuzun uzun ömürlü ve sorunsuz çalışmasını sağlayacaktır. Artık filmlerinizi, dizilerinizi ve müziklerinizi kendi kurallarınıza göre, tam özgürlük içinde deneyimleyebilirsiniz. Kendi dijital medya krallığınız hayırlı olsun!
Sıkça Sorulan Sorular (SSS)
- Jellyfin’i neden Plex veya Emby’ye tercih etmeliyim?
- Jellyfin tamamen ücretsiz ve açık kaynaklıdır, yani hiçbir ücretli özelliğe veya abonelik modeline sahip değildir. Gizlilik odaklıdır ve verileriniz üzerinde tam kontrol sağlarsınız. Plex ve Emby’nin bazı gelişmiş özellikleri ücretli abonelik gerektirirken, Jellyfin tüm özelliklerini ücretsiz sunar.
- Traefik yerine Nginx veya Caddy kullanabilir miyim?
- Evet, kesinlikle kullanabilirsiniz. Nginx ve Caddy de popüler ters proxy çözümleridir. Nginx oldukça güçlü ve esnek bir yapıya sahipken, Caddy otomatik HTTPS konusunda Traefik kadar kolay bir deneyim sunar. Ancak Traefik, Docker gibi konteyner orkestrasyon araçlarıyla dinamik entegrasyonu sayesinde yapılandırma ve yönetim kolaylığı açısından öne çıkar.
- Jellyfin medya kütüphanemi nasıl düzenlemeliyim?
- Jellyfin, medya dosyalarınızın iyi düzenlenmiş olmasını sever. Filmlerinizi “Filmler” klasöründe, her filmi kendi klasöründe (örneğin
/Filmler/Avatar (2009)/Avatar (2009).mkv) tutmanız önerilir. Diziler için ise/Diziler/Dizi Adı/Sezon 01/Dizi Adı - S01E01 - Bölüm Adı.mkvgibi bir yapı kullanmak meta verilerin doğru şekilde eşleşmesini sağlar. Bu, Jellyfin’in içeriğinizi doğru tanıması ve zengin meta verilerle göstermesi için kritik öneme sahiptir. - Donanım hızlandırma gerçekten gerekli mi?
- Eğer birden fazla eşzamanlı yayın yapmayı planlıyorsanız, 4K veya yüksek bit hızlı videoları daha düşük çözünürlüklere dönüştürmeniz gerekiyorsa veya sunucunuzun işlemcisinin başka görevler için boş kalmasını istiyorsanız, donanım hızlandırma kesinlikle gereklidir. Küçük kütüphaneler veya sadece ev ağında doğrudan yayın için yazılımsal transcoding yeterli olabilir, ancak performans farkı oldukça belirgindir.
- Ev ağımın dışından Jellyfin’e erişmek güvenli mi?
- Evet, Traefik ile HTTPS (SSL/TLS) şifrelemesini kullanarak Jellyfin’e güvenli bir şekilde erişebilirsiniz. Bu, verilerinizin internet üzerinden şifreli olarak iletilmesini sağlar. Ek olarak, güçlü şifreler kullanmak, güvenlik duvarı ayarlarınızı doğru yapmak ve Traefik dashboard’una basic auth gibi ek güvenlik katmanları eklemek, güvenliği daha da artıracaktır.
#Jellyfin #Traefik #SelfHosting #Docker #MedyaSunucusu