2026'da Navidrome Nasıl Self-Host Edilir: Müzik Mount'ları, Scan'ler ve Subsonic Uygulamaları
Docker, portlar, kalıcı veriler, TLS, güvenlik, yedeklemeler ve production kullanımını engelleyen sorunları kapsayan pratik bir Navidrome self-hosting rehberi. 2026.
Navidrome'u daha önce self-host etmeyi denediyseniz, muhtemelen şu can sıkıcı duruma aşinasınızdır: UI açılır, ancak host'taki müzik path'i hatalı mount edildiği için scan'ler hiçbir dosya bulamaz. Container'ı yeniden oluşturmak, URL'ler, state ve dependency'ler arasındaki uyumsuzluğu nadiren çözer.
Bu walkthrough'da tek bir somut tamamlanma kriteri kullanıyoruz: read-only bir müzik library'sini scan etmek, metadata ve artwork'ü doğrulamak, bir track'i Subsonic client üzerinden stream etmek ve bir playlist kaydetmek. Her configuration seçimini, yeşil bir container badge'ine göre değil, bu kritere göre değerlendiriyoruz.
Navidrome'un yeniden oluşturamayacağı state'i yedekleyin
Navidrome için recovery point ve recovery time'ı Navidrome database'i, artwork cache'i, playlist'ler ve orijinal müzik library'si üzerinden tanımlayın. Bootstrap işleminden önce /data'yı mount edin, zararsız örnek veriler yazın ve bu path'in gerçekten kalıcı olduğunu kanıtlamak için container'ı değiştirin. Named volume, redeploy sonrasında kalıcılığı çözer; compromise veya server kaybını çözmez.
Temiz bir restore ortamı oluşturun, aynı pinned application version'ı kullanın ve kullanıcıların, playlist'lerin, play history'nin ve metadata'nın geri geldiğini; aynı Subsonic client'ın bilinen bir track'i stream edebildiğini kanıtlayın. Komutları, ownership düzeltmelerini ve geçen süreyi kaydedin. Backup rehberi faydalı bir standart sunar: bir backup, upload edildikten sonra değil, restore edildikten sonra güvenilir kabul edilir.
Navidrome'u hareketli parçaları gizlemeden başlatın
Container'ı gerçeğin bulunduğu yer olarak değil, değiştirilebilir bir runtime olarak kullanın.
docker run -d \
--name navidrome \
--restart unless-stopped \
-p 127.0.0.1:4533:4533 \
-v navidrome-data:/data \
-v /srv/music:/music:ro \
-e ND_BASEURL=/ \
deluan/navidrome:latest
Dış erişim vermeden önce local gereksinimi doğrulayın: read-only bir müzik library mount'ı ve writable application data. Dışarı açmadan önce container user'ını, writable path'leri ve bind edilmiş listener'ı inceleyin. Eksiksiz action'ı çalıştırın — read-only bir müzik library'sini scan edin, metadata ve artwork'ü doğrulayın, bir track'i Subsonic client üzerinden stream edin ve bir playlist kaydedin — ve sonucu üreten image reference'ın tam halini kaydedin.
Uygulanabilir en küçük Navidrome topology'sini seçin
Navidrome network namespace'iyle başlayın: web listener'ı 4533 portudur; bir laptop tutorial'ından kopyalanmış host portu değildir. Local runtime gereksinimi, read-only bir müzik library mount'ı ile writable application data'dır. Bir replacement host'un aynı local capability'yi alabilmesi için bunları image ve port bilgisinin yanında kaydedin.
Gereksinim karşılandıktan sonra eksiksiz scenario'yu çalıştırın — read-only bir müzik library'sini scan edin, metadata ve artwork'ü doğrulayın, bir track'i Subsonic client üzerinden stream edin ve bir playlist kaydedin. Library scan süresi, transcoding CPU kullanımı, artwork cache, eş zamanlı stream'ler ve disk throughput için log'ları ve ölçümleri kaydedin. Bu kanıt, ilk known-good architecture'ı oluşturur ve Dockup compute ile bağlı bir server arasındaki sonraki geçişleri test edilebilir hâle getirir.
TLS kolaydır; oluşturulan URL'ler değildir
Bir subpath üzerinden servis veriyorsanız ND_BASEURL'i ayarlayın; aksi durumda dedicated bir HTTPS host'u tercih edin. Seçilen hostname'i container'ın 4533 portuna gönderin, original host'u ve HTTPS scheme'ini forward edin ve ikinci bir direct origin yayınlamaktan kaçının.
Navidrome'u temiz bir external client üzerinden test edin. Ingress failure'ı bilinen application boundary'sinden ayırın — host'taki müzik path'i hatalı mount edildiği için scan'ler hiçbir dosya bulamaz. Certificate, DNS veya 502 hatası routing'e aittir; Navidrome'a ulaşan ve daha sonra başarısız olan bir request ise application state'ine, capacity'ye veya supporting requirement'a aittir. Custom-domain TLS rehberi ilk grubu ele alır.
Container health'ten daha güçlü beş kontrol
Gerçek kullanıcılar gelmeden önce Navidrome için bir release worksheet hazırlayın. Worksheet; pinned image'ı, 4533 portunu, canonical origin'i, persistent path'leri ve read-only bir müzik library mount'ı ile writable application data'nın sahibini belirtmelidir. Şu transaction'ın beklenen sonucunu da ekleyin: read-only bir müzik library'sini scan etmek, metadata ve artwork'ü doğrulamak, bir track'i Subsonic client üzerinden stream etmek ve bir playlist kaydetmek.
Worksheet'i normal bir replacement sonrasında ve temiz bir restore işleminden sonra kullanın. Recovery yalnızca kullanıcılar, playlist'ler, play history ve metadata geri geldiğinde ve aynı Subsonic client bilinen bir track'i stream ettiğinde kabul edilir. Ayrıca library scan süresi, transcoding CPU kullanımı, artwork cache, eş zamanlı stream'ler ve disk throughput'u kapsayan kısa bir resource trace toplayın; gelecekteki capacity değişikliklerini aynı workload ile karşılaştırabilmek için bunu release'in yanında tutun.
Bu boundary ile ilişkili resource veya format limitinin yakınında zararsız bir input göndererek kontrollü bir failure ekleyin: host'taki müzik path'i hatalı mount edildiği için scan'ler hiçbir dosya bulamaz. Navidrome'un sorunu doğru boundary'de raporladığını doğrulayın, geçerli koşulu geri yükleyin ve transaction'ı yeniden çalıştırın. Bu işlem yalnızca başarıyı değil, hata görünürlüğünü de test eder ve sağlıklı görünen bir arayüzün bozuk bir worker'ı, callback'i veya database connection'ını gizlemesini önler.
Bir sonraki soruyu yanıtlayan log'lar
Her deployment sonrasında Navidrome smoke test'i olarak read-only bir müzik library'sini scan edin, metadata ve artwork'ü doğrulayın, bir track'i Subsonic client üzerinden stream edin ve bir playlist kaydedin. Bunu destekleyen metric'ler library scan süresi, transcoding CPU kullanımı, artwork cache, eş zamanlı stream'ler ve disk throughput'udur; kullanıcı action'ını bozacak bir noktaya yaklaşan resource'lar için alert oluşturun.
En büyük change riski, Navidrome database migration'larının ve scanner davranışının orijinal müzik dosyaları değiştirilmeden test edilmesi gerekliliğidir. Güvenli bir release, restore edilebilir bir snapshot ile başlar ve tek yönlü olası state değişikliklerini traffic taşınmadan önce doğrular. Host'taki müzik path'i hatalı mount edildiği için scan'ler hiçbir dosya bulamadığında, configuration'ı ve ilk hatayı okuyabilmek için failed container'ı yeterince uzun süre saklayın.
Navidrome'a tüm host'u vermeyin
İlk güvenilir administrator oluşturulur oluşturulmaz bootstrap window'u kapatın. Navidrome'a özgü somut tuzak, bir neden olmadan müzik library'sini read-write mount etmektir; daha güvenli boundary, müziği read-only mount etmek, hesapları korumak ve host library'si yerine yalnızca streaming service'i dışarı açmaktır.
ND_BASEURL bir configuration değeridir, secret değildir; Navidrome tarafından kullanılan ayrı credential'ları korurken değerini açıkça belirtin. Private networking, dependency credential'larını taşımalıdır ve Navidrome içindeki role'ler en küçük faydalı action'ı verecek şekilde tanımlanmalıdır. Hassas request body'lerini ve provider response'larını rutin log'ların dışında tutun.
Dockup routing'i yönetirken Navidrome'u açıkça yapılandırın
Routing, certificate'lar, service replacement ve attached storage makul automation hedefleridir. Dockup bunları Navidrome için yönetir; ayrıca ilgili managed database'i provision edebilir veya müşterinin kendi server'ındaki service'lere bağlanabilir.
Ancak icat etmemesi gereken şey Navidrome trust policy'sidir. Deployment sonrasında, bir subpath üzerinden servis veriyorsanız ND_BASEURL'i ayarlayın; aksi durumda dedicated bir HTTPS host'u tercih edin, şu boundary'yi uygulayın — müziği read-only mount edin, hesapları koruyun ve host library'si yerine yalnızca streaming service'i dışarı açın — ve şu scenario'nun sonucunu doğrulayın: read-only bir müzik library'sini scan etmek, metadata ve artwork'ü doğrulamak, bir track'i Subsonic client üzerinden stream etmek ve bir playlist kaydetmek. Sonuç, application-specific acceptance test'i olan one-click infrastructure'dır.
Sık sorulan sorular
Production deployment için Navidrome'un neye ihtiyacı vardır?
Navidrome container'ını tek bir HTTPS origin üzerinden 4533 portunda route edin. Local runtime gereksinimi, read-only bir müzik library mount'ı ile writable application data'dır. Read-only bir müzik library'sini scan edemeden, metadata ve artwork'ü doğrulayamadan, bir track'i Subsonic client üzerinden stream edemeden ve bir playlist kaydedemeden Navidrome'u hazır kabul etmeyin.
Hangi Navidrome verileri backup'a dahil edilmelidir?
/data'yı kalıcı hâle getirin ve Navidrome database'ini, artwork cache'ini, playlist'leri ve orijinal müzik library'sini aynı recovery manifest'ine dahil edin. Temiz bir Navidrome restore işlemi yalnızca kullanıcılar, playlist'ler, play history ve metadata geri geldiğinde ve aynı Subsonic client bilinen bir track'i stream ettiğinde başarılı sayılır.
Navidrome'un reverse proxy arkasında HTTPS kullanması gerekir mi?
Public Navidrome origin'i için HTTPS kullanın ve 4533 portunu internal route üzerinde tutun. Navidrome setting'ini doğru uygulayın: bir subpath üzerinden servis veriyorsanız ND_BASEURL'i ayarlayın; aksi durumda dedicated bir HTTPS host'u tercih edin. Navidrome için HTTPS, credentials veya user content'in transit sırasında korunmasını sağlar ve origin'e duyarlı client davranışının tutarlı kalmasına yardımcı olur.
Bir Navidrome upgrade'i nasıl test edilmelidir?
Mevcut Navidrome state'ini izole bir deployment'a restore edin, candidate version'ı uygulayın ve acceptance transaction'ını tekrarlayın. Özellikle dikkatli olun; çünkü Navidrome database migration'ları ve scanner davranışı, orijinal müzik dosyaları değiştirilmeden test edilmelidir. Data migration ve rollback boundary'leri anlaşılana kadar önceki Navidrome image'ını saklayın.
