$ services: navidrome: image: deluan/navidrome:0.60.3 container_name: navidrome -weight: 500;">restart: unless-stopped ports: - "4533:4533" # Web UI and Subsonic API environment: ND_SCANSCHEDULE: "1h" # Rescan library every hour ND_LOGLEVEL: "info" ND_BASEURL: "" # Set to "/navidrome" if behind a subpath proxy ND_SESSIONTIMEOUT: "24h" ND_ENABLETRANSCODINGCONFIG: "true" # Allow users to configure transcoding volumes: - navidrome-data:/data # Database and cache - /path/to/your/music:/music:ro # CHANGE: Your music library (read-only) volumes: navidrome-data:
services: navidrome: image: deluan/navidrome:0.60.3 container_name: navidrome -weight: 500;">restart: unless-stopped ports: - "4533:4533" # Web UI and Subsonic API environment: ND_SCANSCHEDULE: "1h" # Rescan library every hour ND_LOGLEVEL: "info" ND_BASEURL: "" # Set to "/navidrome" if behind a subpath proxy ND_SESSIONTIMEOUT: "24h" ND_ENABLETRANSCODINGCONFIG: "true" # Allow users to configure transcoding volumes: - navidrome-data:/data # Database and cache - /path/to/your/music:/music:ro # CHANGE: Your music library (read-only) volumes: navidrome-data:
services: navidrome: image: deluan/navidrome:0.60.3 container_name: navidrome -weight: 500;">restart: unless-stopped ports: - "4533:4533" # Web UI and Subsonic API environment: ND_SCANSCHEDULE: "1h" # Rescan library every hour ND_LOGLEVEL: "info" ND_BASEURL: "" # Set to "/navidrome" if behind a subpath proxy ND_SESSIONTIMEOUT: "24h" ND_ENABLETRANSCODINGCONFIG: "true" # Allow users to configure transcoding volumes: - navidrome-data:/data # Database and cache - /path/to/your/music:/music:ro # CHANGE: Your music library (read-only) volumes: navidrome-data: - Extremely lightweight — runs on a Raspberry Pi with room to spare
- Full Subsonic API means dozens of mobile app choices
- Clean web UI with smart playlists, favorites, ratings, and lyrics
- Fast library scanning even with 100,000+ tracks
- Last.fm and ListenBrainz scrobbling built in
- Multi-user with per-user playlists and play history
- Single Go binary or Docker image — trivial to deploy - No podcast support (it is a music server, not a podcast player)
- No video support (use Jellyfin for that)
- No federation or social features
- Web UI is functional but not as visually rich as Koel - ActivityPub federation — share and discover music across instances
- Podcast support built in
- Modern, attractive web UI
- Channels system for content organization
- Multi-user with granular permissions
- API for third-party clients - Significantly heavier than Navidrome (PostgreSQL + Redis + Celery workers)
- No Subsonic API — limited mobile app options (Funkwhale has its own app, but ecosystem is small)
- Federation features require a publicly accessible server with a domain
- Setup is more involved than simpler servers
- Smaller community and slower release cadence - One server for all your media — video, music, books, photos
- Completely free and open-source, no premium tier
- Hardware transcoding at no cost
- Finamp mobile app is a good dedicated music client
- Active development and large community
- Plugin ecosystem (Last.fm, Lyrics, OpenSubtitles) - Music is not the primary focus — UI is video-oriented
- No native Subsonic API (plugin exists but is unofficial)
- Smart playlist support is basic
- Heavier than dedicated music servers (1-2 GB RAM minimum)
- Library scanning can be slower with large music collections - The best-looking web UI of any self-hosted music server
- Built-in equalizer and visualizer
- Smart playlists with rule-based filtering
- Last.fm scrobbling
- Optional Spotify integration for catalog browsing
- Multi-user support - No Subsonic API — no third-party mobile apps
- Mobile experience is web-only (responsive, but no native app)
- Requires PHP and MariaDB — heavier stack than Go-based alternatives
- Smaller community than Navidrome or Jellyfin
- No podcast or video support
- APP_KEY must be pre-generated before first -weight: 500;">start - Subsonic API compatible — works with Subsonic mobile apps
- 20+ years of feature accumulation — covers edge cases others do not
- Podcast and radio stream support
- Video support alongside music
- Multiple music catalogs with per-catalog permissions
- Democratic playback mode
- Active development (v7.9.2 as of March 2026) - UI shows its age despite modernization efforts
- PHP/MySQL stack is heavier to maintain than Go-based servers
- Configuration can be complex due to the sheer number of options
- Documentation is extensive but sometimes outdated
- Scanning large libraries can be slow - Extremely lightweight — under 20 MB RAM
- Full Subsonic API compatibility
- Podcast support
- Last.fm and ListenBrainz scrobbling
- Minimal attack surface — barely any web UI to exploit - No web UI for playback — you must use Subsonic client apps
- No smart playlists
- No lyrics display
- Smaller community than Navidrome
- Fewer configuration options - Subsonic API compatible
- Podcast support
- Jukebox mode (play through server speakers)
- Familiar to long-time Subsonic users - Development is stalled — last significant release was 2023
- Java-based with higher resource usage (500 MB+ RAM)
- UI feels dated
- Navidrome does everything Airsonic does, but lighter and actively maintained - Native Squeezebox ecosystem support
- Enormous plugin library
- Multi-room synchronized audio
- Internet radio integration
- Material Design web interface via plugin - Tied to the Squeezebox ecosystem
- Perl-based — unusual stack to maintain
- No Subsonic API
- UI requires a plugin to look modern
- Not a general-purpose music server - Mobile experience (30%) — Can you stream your library on the go with a good app? Subsonic API compatibility is a massive advantage here because it unlocks the best third-party apps.
- Setup simplicity (20%) — How quickly can you go from -weight: 500;">docker compose up to playing music? Fewer dependencies and simpler configs score higher.
- Resource efficiency (20%) — Can it run on modest hardware? A music server should not require a dedicated workstation.
- Feature set (20%) — Smart playlists, lyrics, scrobbling, transcoding, multi-user.
- Community and maintenance (10%) — Active development, responsive community, regular releases. - How to Self-Host Navidrome
- How to Self-Host Funkwhale
- How to Self-Host Ampache
- How to Self-Host Koel
- How to Self-Host Jellyfin
- Navidrome vs Jellyfin
- Funkwhale vs Navidrome
- Self-Hosted Alternatives to Spotify
- Self-Hosted Alternatives to Amazon Music
- Self-Hosted Alternatives to Tidal
- Best Self-Hosted Media Servers
- Docker Compose Basics
- Reverse Proxy Explained