Sign inSign up

iuliandita/digarr

By iuliandita

•Updated about 23 hours ago

Self-hosted music discovery: finds artists and albums for Lidarr, slskd, and playlists.

Image
Machine learning & AI
1

100K+

iuliandita/digarr repository overview

Digarr

⁠Digarr

Self-hosted music discovery for your library. Digarr finds artists and albums from your listening history or a mood. Review the suggestions, listen to previews, then send what you like to Lidarr, slskd, or a playlist. Bring your own AI provider or local model. Lidarr is optional.

Source, docs, and issues: github.com/iuliandita/digarr⁠

Dashboard

More screenshots⁠

⁠What you can do

  • Find artists and albums. Connect a listening source, scan, and review scored suggestions. Release Radar finds new releases, Library Gap-Fill finds missing albums, and mood and artist searches work without a listening history.
  • Review before adding. Preview, approve, reject, or permanently block suggestions. Album approvals monitor and search only the selected albums in Lidarr.
  • Keep discovery running. Run or schedule discovery modes, and generate playlists for Spotify, Navidrome, Jellyfin, Emby, and Plex, or export M3U/XSPF.
  • Share an instance. Each user has their own queue, connections, and preferences, with optional admin approval policies. Local accounts and OIDC/SSO, 15 languages, light and dark themes.
  • Script it. Personal API tokens and an MCP endpoint for scripts and agents.
UseServices
Taste-profile sourcesListenBrainz, Last.fm, Spotify, Deezer, Plex, Jellyfin, Emby, Subsonic, Discogs
Library syncLidarr, Plex, Jellyfin, Emby, Subsonic
Approval and acquisitionLidarr, slskd
Playlist exportSpotify, Navidrome, Jellyfin, Emby, Plex
AI recommendationsAnthropic, OpenAI, Gemini, Ollama, OpenAI-compatible endpoints
NotificationsWebhooks, ntfy, Telegram, Apprise

Digarr calls your connected services. It doesn't include a downloader or a full music player.

⁠Quick start

One container with the embedded PostgreSQL database (PGlite):

mkdir digarr && cd digarr &&
(set -C; umask 077 && key=$(openssl rand -hex 32) && printf 'DIGARR_ENCRYPTION_KEY=%s\n' "$key" > digarr.env) &&
docker run -d --name digarr --restart unless-stopped -p 127.0.0.1:3000:3000 \
  --env-file ./digarr.env \
  -e ALLOWED_ORIGIN=http://localhost:3000 \
  -e DIGARR_ALLOW_INSECURE_COOKIES=true \
  -v digarr-data:/app/data -v digarr-backups:/app/backups \
  docker.io/iuliandita/digarr:latest

Open http://localhost:3000, create the first account (it becomes admin; passwords need 12 characters), and complete setup. Keep digarr.env: losing DIGARR_ENCRYPTION_KEY means re-entering saved credentials.

This example is local-only HTTP. For access from other devices, set ALLOWED_ORIGIN to your HTTPS URL and drop DIGARR_ALLOW_INSECURE_COOKIES; see public origin and reverse proxies⁠. For Compose with a bundled PostgreSQL, backups, and updates, follow the Docker guide⁠.

SettingValue
Port3000
Volumes/app/data (PGlite database), /app/backups (pre-migration backups)
RequiredDIGARR_ENCRYPTION_KEY, ALLOWED_ORIGIN
External databaseDATABASE_URL, PostgreSQL 15 or newer
Unattended first bootDIGARR_INITIAL_USERNAME and DIGARR_INITIAL_PASSWORD
HealthGET /health reports version, commit, and channel

⁠Tags

TagContents
latestNewest release. Only the newest release receives security fixes.
2.1, 2.1.0A release line, or one pinned release
stableA release that has been live for at least seven days without a follow-up patch
debian, 2.1.0-debian, stable-debianDebian/glibc variant; Alpine is the default

Images are multi-arch (amd64, arm64), cosign-signed, and ship SBOMs; see verifying image signatures⁠. Nightly builds of the development branch are published to ghcr.io/iuliandita/digarr:nightly only.

Also available as a Helm chart⁠, in the Unraid Community Applications store, and for Synology⁠.

⁠License

MIT. Made by Iulian Dita⁠.

Tag summary

Content type

Image

Digest

sha256:47fea1fe6…

Size

56.4 MB

Last updated

9 days ago

docker pull iuliandita/digarr