Self-host musikat
Music downloader for Navidrome with Deezer/Spotify search
- Stars
- 179
- Port
- 8000 (HTTP API and web UI)
- Requires
- Ffmpeg
What is musikat?
Musikat is a self-hosted web app that downloads music from YouTube using track information from Deezer (no API key needed) or Spotify (with credentials). It writes ID3 tags and cover art to each file, then either places the music into one or more Navidrome library folders on the server or sends it to the browser for local saving. The stack is FastAPI plus vanilla JavaScript, with yt-dlp and FFmpeg handling audio extraction and mutagen doing the tagging. Multiple Navidrome roots are supported, a background sync can mark tracks already present in the library, and YouTube cookies can be supplied to avoid bot blocks. You can deploy with Docker Compose or a plain Python virtual environment. The code is MIT-licensed and meant for personal use.
Should you self-host musikat?
musikat scores 41/100 on selfhost.directory (how scoring works) and ranks #43 of 59 in Music Streaming. It has 179 GitHub stars.
There was no stable release in the past 12 months, so check the repository's recent activity before you rely on it.
Setup is moderate: expect some configuration beyond a single command. It is MIT-licensed and written mostly in Python.
Its closest alternative on selfhost.directory is koel (75/100, 17 320 stars). It scores higher overall, so compare the two before you pick. See musikat vs koel side by side.
Features
- Album download
- Background library sync
- Deezer catalog search
- Duplicate Detection
- ID3 tagging with cover art
- Local browser download
- Reverse proxy subpath support
- Reverse YouTube to metadata
- Spotify catalog search
- Web UI with download queue
- YouTube audio download
- YouTube cookies support
musikat README
FAQ
How do I configure Musikat behind a reverse proxy with a subpath like /musikat/?
Configure nginx to forward requests and send X-Forwarded-Prefix: /musikat header. The frontend also infers the subpath from the browser URL when the header is missing.
How do I fix CORS errors when accessing from a different origin?
Add your site origin to CORS_ORIGINS in .env (required if the browser loads the UI from a different origin than the API, e.g. another port or domain).
Why don't downloaded files appear in Navidrome?
Ensure the music paths are writable by the Musikat process, match the paths configured in NAVIDROME_MUSIC_PATHS, and check that GET /api/navidrome/libraries matches your Docker mounts and permissions.
How do I fix YouTube errors like 'Sign in to confirm you're not a bot' or 403?
Install FFmpeg and ensure it's on PATH. Export YouTube cookies in Netscape format and set YOUTUBE_COOKIES_PATH in the environment.
Why are there no search results?
Try the other catalog (Deezer or Spotify) or use a more specific query with artist and title.
More in Audio
musikcubeOpen-source, terminal-based music player, library indexer and self-hosted audio streaming server with a remote websocket API for custom clients.
muxarrSelf-hosted, open-source utility that deletes unneeded audio and subtitle streams from video files without re-encoding, works with Sonarr and Radarr.
noisedashSelf-hosted web app for creating custom ambient soundscapes with generated tones, uploaded samples, filters, and user profiles.
open-record-poolOpen Record Pool is a self-hosted DJ record pool that scans music, extracts MP3 metadata into PostgreSQL, and provides a web UI with search, playback, and DJ exports.
owntoneSelf-hosted, open-source audio server streaming your library and radio to AirPlay multiroom speakers, Chromecast, Roku and local output, with web and MPD control.
PlaylistPillarPlaylistPillar is a self-hosted, open-source music archival tool that transforms streaming playlists into durable local libraries with embedded ID3 tags and album art.
PolarisSelf-hosted, open-source music streaming server aimed at collections of 100,000+ songs, with a web player, multi-user playlists, FLAC/MP3/Opus support and mobile apps.
PrismicalAn open-source AI note-taking app that records and transcribes meetings locally using Whisper or cloud models — no bots join calls. Works on desktop, mobile, and web.
RemiqoraSelf-hosted AI music production studio with multiple generation models, a multitrack DAW, stem separation, and LoRA training — all running locally on your GPU.
RewindRewind is a self-hosted, open-source web app that generates a visual, stories-style year-in-review of your Navidrome listening history with playable music.
SpeachesSelf-hosted OpenAI Audio API server for transcription, translation, and speech synthesis using faster-whisper, piper, and Kokoro models.
spotify-saverSelf-hosted tool to download Spotify tracks, albums, and playlists from YouTube Music with full metadata for Jellyfin libraries, featuring a web UI, CLI, and REST API.


0 comments