Ευρετήριο ημερολογίουDockup / σημείωση πεδίου
Note / self-host-navidrome

Πώς να κάνετε self-host το Navidrome το 2026: Music mounts, scans και Subsonic apps

Ένας πρακτικός οδηγός για self-hosting του Navidrome, με Docker, ports, persistent data, TLS, ασφάλεια, backups και τα προβλήματα που εμποδίζουν τη χρήση σε production. Για το 2026.

Αν έχετε ήδη δοκιμάσει να κάνετε self-host το Navidrome, πιθανότατα γνωρίζετε αυτή την απογοητευτική κατάσταση: το UI εμφανίζεται, αλλά τα scans δεν βρίσκουν αρχεία επειδή το music path του host έχει γίνει mount λανθασμένα. Η αναδημιουργία του container σπάνια διορθώνει μια ασυμφωνία μεταξύ URLs, state και dependencies.

Αυτός ο οδηγός χρησιμοποιεί ένα συγκεκριμένο κριτήριο ολοκλήρωσης — να γίνει scan σε μια read-only music library, να επαληθευτούν τα metadata και τα artwork, να γίνει streaming ενός track μέσω Subsonic client και να αποθηκευτεί μια playlist. Κάθε επιλογή ρύθμισης αξιολογείται με βάση αυτό το κριτήριο και όχι με βάση ένα πράσινο badge του container.

Κάντε backup του state που δεν μπορεί να αναδημιουργήσει το Navidrome

Ορίστε το recovery point και το recovery time για το Navidrome με βάση τη βάση δεδομένων του Navidrome, το artwork cache, τις playlists και την αρχική music library. Κάντε mount το /data πριν από το bootstrap, γράψτε ακίνδυνα sample data και αντικαταστήστε το container για να αποδείξετε ότι το path είναι πράγματι persistent. Ένα named volume λύνει το πρόβλημα της persistence σε redeploy· δεν αντιμετωπίζει όμως ένα compromise ή την απώλεια του server.

Δημιουργήστε ένα καθαρό restore environment, χρησιμοποιήστε την ίδια pinned έκδοση της εφαρμογής και αποδείξτε ότι επανέρχονται οι χρήστες, οι playlists, το play history και τα metadata και ότι ο ίδιος Subsonic client κάνει streaming ενός γνωστού track. Καταγράψτε commands, διορθώσεις ownership και τον χρόνο που απαιτήθηκε. Ο οδηγός για backups αποτελεί χρήσιμο standard: ένα backup θεωρείται αξιόπιστο μετά το restoration και όχι μετά το upload.

Ξεκινήστε το Navidrome χωρίς να κρύβετε τις κρίσιμες λεπτομέρειες

Χρησιμοποιήστε το container ως runtime που μπορεί να αντικατασταθεί και όχι ως την πηγή της αλήθειας.

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

Επιβεβαιώστε την τοπική απαίτηση πριν από την έκθεση στο δίκτυο: ένα read-only music library mount και writable application data. Ελέγξτε τον χρήστη του container, τα writable paths και τον bound listener πριν το εκθέσετε. Εκτελέστε την πλήρη ενέργεια — κάντε scan σε μια read-only music library, επαληθεύστε τα metadata και τα artwork, κάντε streaming ενός track μέσω Subsonic client και αποθηκεύστε μια playlist — και αποθηκεύστε το ακριβές image reference που παρήγαγε το αποτέλεσμα.

Επιλέξτε την απλούστερη βιώσιμη τοπολογία για το Navidrome

Ξεκινήστε από το network namespace του Navidrome: ο web listener του είναι στο port 4533 και όχι σε ένα host port αντιγραμμένο από tutorial για laptop. Η απαίτηση του local runtime είναι ένα read-only music library mount και writable application data. Καταγράψτε τα δίπλα στο image και το port, ώστε ένας replacement host να λάβει την ίδια local capability.

Αφού ικανοποιηθεί η απαίτηση, εκτελέστε το πλήρες σενάριο — κάντε scan σε μια read-only music library, επαληθεύστε τα metadata και τα artwork, κάντε streaming ενός track μέσω Subsonic client και αποθηκεύστε μια playlist. Καταγράψτε logs και μετρήσεις για τον χρόνο του library scan, το transcoding CPU, το artwork cache, τα concurrent streams και το disk throughput. Αυτά τα στοιχεία γίνονται η πρώτη known-good αρχιτεκτονική και επιτρέπουν να ελέγχετε τις μελλοντικές μετακινήσεις μεταξύ Dockup compute και ενός συνδεδεμένου server.

Το TLS είναι εύκολο· τα generated URLs όχι

Ορίστε το ND_BASEURL όταν σερβίρετε από subpath· διαφορετικά, προτιμήστε ένα dedicated HTTPS host. Στείλτε το επιλεγμένο hostname στο container port 4533, προωθήστε το αρχικό host και το HTTPS scheme και αποφύγετε τη δημοσίευση ενός δεύτερου direct origin.

Δοκιμάστε το Navidrome από έναν καθαρό external client. Διαχωρίστε ένα ingress failure από το γνωστό application boundary — τα scans δεν βρίσκουν αρχεία επειδή το music path του host έχει γίνει mount λανθασμένα. Ένα σφάλμα certificate, DNS ή 502 ανήκει στο routing· ένα request που φτάνει στο Navidrome και αποτυγχάνει αργότερα ανήκει στο application state, το capacity ή τη σχετική supporting requirement. Ο οδηγός για custom-domain TLS καλύπτει την πρώτη κατηγορία.

Πέντε έλεγχοι ισχυρότεροι από το container health

Πριν εμφανιστούν πραγματικοί χρήστες, δημιουργήστε ένα release worksheet για το Navidrome. Πρέπει να αναφέρει το pinned image, το port 4533, το canonical origin, τα persistent paths και τον υπεύθυνο για ένα read-only music library mount και writable application data. Επισυνάψτε το αναμενόμενο αποτέλεσμα αυτής της συναλλαγής: scan σε μια read-only music library, επαλήθευση metadata και artwork, streaming ενός track μέσω Subsonic client και αποθήκευση μιας playlist.

Χρησιμοποιήστε το worksheet μετά από ένα κανονικό replacement και μετά από ένα clean restore. Το recovery γίνεται αποδεκτό μόνο αν επανέλθουν οι χρήστες, οι playlists, το play history και τα metadata και ο ίδιος Subsonic client κάνει streaming ενός γνωστού track. Συλλέξτε επίσης ένα σύντομο resource trace που να καλύπτει τον χρόνο του library scan, το transcoding CPU, το artwork cache, τα concurrent streams και το disk throughput· κρατήστε το δίπλα στο release, ώστε οι μελλοντικές αλλαγές capacity να συγκρίνονται με το ίδιο workload.

Συμπεριλάβετε ένα controlled failure: υποβάλετε ακίνδυνο input κοντά στο όριο πόρων ή format που σχετίζεται με αυτό το boundary: τα scans δεν βρίσκουν αρχεία επειδή το music path του host έχει γίνει mount λανθασμένα. Επιβεβαιώστε ότι το Navidrome αναφέρει το πρόβλημα στο σωστό boundary, επαναφέρετε τη valid condition και εκτελέστε ξανά τη συναλλαγή. Έτσι ελέγχετε την ορατότητα των errors και όχι μόνο την επιτυχία, αποτρέποντας ένα interface που φαίνεται healthy από το να κρύβει έναν broken worker, callback ή database connection.

Logs που απαντούν στην επόμενη ερώτηση

Χρησιμοποιήστε το scan σε μια read-only music library, την επαλήθευση metadata και artwork, το streaming ενός track μέσω Subsonic client και την αποθήκευση μιας playlist ως smoke test του Navidrome μετά από κάθε deployment. Τα supporting metrics είναι ο χρόνος του library scan, το transcoding CPU, το artwork cache, τα concurrent streams και το disk throughput· ορίστε alerts στα σημεία όπου αυτοί οι πόροι πλησιάζουν ένα επίπεδο που υποβαθμίζει την ενέργεια του χρήστη.

Ο βασικός κίνδυνος αλλαγής είναι ότι τα database migrations και η συμπεριφορά του scanner του Navidrome πρέπει να δοκιμάζονται ενώ τα αρχικά music files παραμένουν ανέγγιχτα. Ένα ασφαλές release ξεκινά από ένα restorable snapshot και επικυρώνει κάθε one-way state change πριν μετακινηθεί το traffic. Όταν τα scans δεν βρίσκουν αρχεία επειδή το music path του host έχει γίνει mount λανθασμένα, κρατήστε το failed container αρκετά ώστε να διαβάσετε το configuration και το πρώτο error.

Μην δίνετε στο Navidrome πρόσβαση σε ολόκληρο το host

Κλείστε το bootstrap window μόλις υπάρξει ο πρώτος έμπιστος administrator. Η συγκεκριμένη παγίδα του Navidrome είναι να κάνετε mount τη music library με read-write χωρίς λόγο· το ασφαλέστερο boundary είναι να κάνετε mount τη music library ως read-only, να προστατεύσετε τους λογαριασμούς και να εκθέσετε μόνο το streaming service και όχι τη library του host.

Το ND_BASEURL είναι configuration και όχι secret· κρατήστε την τιμή του explicit, προστατεύοντας παράλληλα τα ξεχωριστά credentials που χρησιμοποιεί το Navidrome. Το private networking πρέπει να μεταφέρει τα dependency credentials και οι ρόλοι μέσα στο Navidrome πρέπει να επιτρέπουν την ελάχιστη χρήσιμη ενέργεια. Μην καταγράφετε sensitive request bodies και provider responses στα routine logs.

Κρατήστε το Navidrome explicit, ενώ το Dockup αναλαμβάνει το routing

Το routing, τα certificates, το service replacement και το attached storage είναι λογικοί στόχοι για automation. Το Dockup τα αναλαμβάνει για το Navidrome και μπορεί να κάνει provision το σχετικό managed database ή να συνδεθεί με services σε server του πελάτη.

Αυτό που δεν πρέπει να επινοεί είναι η trust policy του Navidrome. Μετά το deployment, ορίστε το ND_BASEURL όταν σερβίρετε από subpath· διαφορετικά, προτιμήστε ένα dedicated HTTPS host, εφαρμόστε αυτό το boundary — κάντε mount τη music library ως read-only, προστατεύστε τους λογαριασμούς και εκθέστε μόνο το streaming service και όχι τη library του host — και επαληθεύστε το αποτέλεσμα αυτού του σεναρίου: scan σε μια read-only music library, επαλήθευση metadata και artwork, streaming ενός track μέσω Subsonic client και αποθήκευση μιας playlist. Το αποτέλεσμα είναι one-click infrastructure με application-specific acceptance test.

Συχνές ερωτήσεις

Τι χρειάζεται το Navidrome για deployment σε production;

Δρομολογήστε το Navidrome container στο port 4533 μέσω ενός HTTPS origin. Η απαίτηση του local runtime είναι ένα read-only music library mount και writable application data. Μην θεωρήσετε το Navidrome έτοιμο μέχρι να μπορείτε να κάνετε scan σε μια read-only music library, να επαληθεύσετε τα metadata και τα artwork, να κάνετε streaming ενός track μέσω Subsonic client και να αποθηκεύσετε μια playlist.

Ποια δεδομένα του Navidrome πρέπει να περιλαμβάνονται σε backup;

Κάντε persist το /data και συμπεριλάβετε τη βάση δεδομένων του Navidrome, το artwork cache, τις playlists και την αρχική music library στο ίδιο recovery manifest. Ένα clean restore του Navidrome θεωρείται επιτυχές μόνο όταν επανέλθουν οι χρήστες, οι playlists, το play history και τα metadata και ο ίδιος Subsonic client κάνει streaming ενός γνωστού track.

Απαιτεί το Navidrome HTTPS πίσω από reverse proxy;

Χρησιμοποιήστε HTTPS για το public origin του Navidrome και κρατήστε το port 4533 στο internal route. Εφαρμόστε σωστά τη ρύθμιση του Navidrome: ορίστε το ND_BASEURL όταν σερβίρετε από subpath· διαφορετικά, προτιμήστε ένα dedicated HTTPS host. Για το Navidrome, το HTTPS προστατεύει τα credentials ή το περιεχόμενο των χρηστών κατά τη μεταφορά και διατηρεί συνεπή τη συμπεριφορά των clients που εξαρτάται από το origin.

Πώς πρέπει να δοκιμάζεται ένα upgrade του Navidrome;

Κάντε restore το τρέχον state του Navidrome σε ένα isolated deployment, εφαρμόστε την υποψήφια έκδοση και επαναλάβετε τη transaction αποδοχής. Δώστε ιδιαίτερη προσοχή, επειδή τα database migrations και η συμπεριφορά του scanner του Navidrome πρέπει να δοκιμάζονται ενώ τα αρχικά music files παραμένουν ανέγγιχτα. Κρατήστε το προηγούμενο Navidrome image μέχρι να κατανοήσετε τα όρια του data migration και του rollback.