ChartHound is running but connection saving is disabled until you set a real SECRET_KEY.
Open your docker-compose.yml and replace CHANGE_ME_GENERATE_A_STRONG_RANDOM_KEY with a real key.
How to fix it in 4 steps:
1. Run this command for your OS to generate a key: Linux/Mac/Unraid/TrueNAS/Proxmox:python3 -c "import secrets; print(secrets.token_hex(32))" Windows PowerShell:python -c "import secrets; print(secrets.token_hex(32))" Synology/QNAP:docker run --rm python:3.12-slim python3 -c "import secrets; print(secrets.token_hex(32))"
2. Copy the result and paste it into docker-compose.yml replacing CHANGE_ME...
3. Save the file then restart: docker compose down && docker compose up -d
4. Refresh this page β the warning disappears and full functionality unlocks.
CHARTHOUND
THE NEW WORLD Β· v1.0
Developed by Colby R. Curtis Β· β Buy Me a Coffee Β· Claude.ai code support
Two quick setup steps. Connect all services anytime in The Kennel after setup.
1
SECRET KEY
2
MUSIC PATH
3
READY!
ChartHound encrypts all your API tokens and passwords. To do this it needs a
SECRET_KEY β a long random password only you know.
Run the command for your OS below, copy the result, then paste it into your
docker-compose.yml where it says
CHANGE_ME_GENERATE_A_STRONG_RANDOM_KEY.
Then restart the container and click Next.
β Never share your SECRET_KEY or docker-compose.yml after filling it in. Treat it like a master password.
After pasting your key into docker-compose.yml:
1. Save the file
2. Run: docker compose down && docker compose up -d
3. Come back here and click Next
ChartHound needs to translate your media server's file paths to the Docker
/music mount so it can tag your physical files.
You should have already set the volume path in docker-compose.yml before running the container.
This step tells ChartHound how the two paths relate.
EXAMPLE β HOW PATH TRANSLATION WORKS:
Media server sees: /media/colby/NAS1/MUSIC TAGGED/ABBA/Gold/Dancing Queen.flac
Docker sees: /music/ABBA/Gold/Dancing Queen.flac
The gold part stays the same β only the prefix changes. Your prefix is everything before the artist folder.
Open any track in Plex/Emby/Jellyfin file info. Copy everything up to (not including) the artist folder name. That is your prefix.
Everything before the artist folder in your media server file paths
Leave as /music unless you changed the right side of the volume mapping in docker-compose.yml.
Usually /music β only change if you edited the volume line in docker-compose.yml
Enter a path above to preview the translation.
π
YOU'RE READY!
ChartHound is ready to go.
Head to The Kennel to connect Plex, Emby, Jellyfin, Last.fm, Prowlarr, Radarr, Sonarr, your download client and YouTube.
Then run The Retriever to start tagging your music library with chart data.
CHARTHOUND
THE NEW WORLD Β· METADATA ENGINE
Developed by Colby R. Curtis Β· β Buy Me a Coffee Β· Claude.ai code support
PLEX
EMBY
JF
LFM
PWL
VAULT STATUS
Plex
NOT VERIFIED
Emby
NOT VERIFIED
Jellyfin
NOT VERIFIED
Last.fm
NOT VERIFIED
Prowlarr
NOT VERIFIED
Radarr
NOT VERIFIED
Sonarr
NOT VERIFIED
Download Client
NOT VERIFIED
YouTube
NOT VERIFIED
Discogs
NOT VERIFIED
File Writer
NOT VERIFIED
PATH TRANSLATOR
Open any track in Plex/Emby/Jellyfin file info. Copy everything up to (not including) the artist folder. Example: /media/colby/NAS1/MUSIC TAGGED
The path inside Docker where your music is mounted. Leave as /music unless you changed the volume in docker-compose.yml.
Enter a path above to preview.
SECURITY
π Fernet (AES-128-CBC) encryption before SQLite write.
π /register locked after first user.
π« Tokens never returned to the browser.
β³ Heartbeat re-checks connections every 60s.
π buymeacoffee.com/colbycurtis
API CONNECTIONS β THE VAULT
Save credentials first (encrypted immediately on save), then TEST to verify the live connection. On Linux Docker use your server's LAN IP β not localhost.
π§ PLEX MEDIA SERVER
NOT VERIFIED
Use your server's LAN IP β not localhost. On Linux Docker, localhost refers to the container itself. Example: http://192.168.1.100:32400
Use your server's LAN IP β e.g. http://192.168.50.42:32400 Β· Default port: 32400
Plex Settings β Troubleshooting β Show XML next to any item β copy X-Plex-Token from the browser URL bar.
Find yours: Plex Settings β Troubleshooting β Show XML β copy from URL bar
Use your server's LAN IP. Default Emby port is 8096. Example: http://192.168.1.100:8096
Default port: 8096 β use your server's LAN IP
Emby Dashboard β API Keys β click + to create a new key. Give it a name like ChartHound.
Find yours: Emby Dashboard β API Keys β create new
Emby Dashboard β Users β click your username β copy the User ID from the browser URL bar.
Find yours: Emby Dashboard β Users β click your name β copy ID from URL bar
π¦ JELLYFIN
NOT VERIFIED
Use your server's LAN IP and the port you access Jellyfin on in your browser. If you get a 503 error: Jellyfin Dashboard β Networking β LAN Networks β add 172.28.0.0/16 β save and restart Jellyfin.
Use the port you access Jellyfin on in your browser Β· If 503 error: add 172.28.0.0/16 to Jellyfin LAN Networks
Jellyfin Dashboard β API Keys β click + to create a new key for ChartHound.
Find yours: Jellyfin Dashboard β API Keys β create new
Jellyfin Dashboard β Users β click your username β copy the User ID from the page or URL bar.
Find yours: Jellyfin Dashboard β Users β click your name
π΄ LAST.FM
NOT VERIFIED
Last.fm API keys are completely free β no credit card needed. Visit last.fm/api/account/create, sign up, and your key appears immediately. No URL needed for Last.fm.
Tertiary waterfall source β mood tags and chart keyword detection. Strongly recommended for best metadata quality.
π£ PROWLARR
NOT VERIFIED
Use your server's LAN IP. Default Prowlarr port is 9696. Example: http://192.168.1.100:9696
Default port: 9696
Prowlarr β Settings β General β API Key shown at the top of the page.
Find yours: Prowlarr β Settings β General β API Key
π¬ RADARR
NOT VERIFIED
Use your server's LAN IP. Default Radarr port is 7878. Used by The Tracker for missing movies.
Default port: 7878 β used by The Tracker
Radarr β Settings β General β API Key at the top of the page.
Find yours: Radarr β Settings β General β API Key
πΊ SONARR
NOT VERIFIED
Use your server's LAN IP. Default Sonarr port is 8989. Used by The Tracker for missing TV episodes.
Default port: 8989 β used by The Tracker
Sonarr β Settings β General β API Key at the top of the page.
Find yours: Sonarr β Settings β General β API Key
β¬ DOWNLOAD CLIENT
NOT VERIFIED
Used by The Sniffer, Bloodhound and Tracker. Grabs are tagged with
ChartHound-Music /
ChartHound-Movies /
ChartHound-TV categories so your media server picks them up automatically.
qBittorrent default: :8080 Β· Deluge: :8112 Β· Transmission: :9091. Always use your server's LAN IP.
Excellent genre and style data β significantly improves metadata quality especially for classic rock, jazz, soul and artists where MusicBrainz tags are sparse.
Get your free token at discogs.com/settings/developers β click "Generate new token". No credit card needed. Rate limit: 60 requests/minute.
Required for reliable tag writing. The File Writer runs on your host server (outside Docker) and writes metadata directly to your music files. Without it, some files may not be written correctly.
Run file-sync-server.py on your host server, then enter its URL here. Default: http://YOUR-SERVER-IP:4321
Start with: python3 file-sync-server.py β then enter the URL above
β Last.fm not connected β mood tags limited. Connect in The Kennel for best results.
SCAN SCOPE
FULL LIBRARY
SUBFOLDER
Browse your /music mount to pick a subfolder. Great for testing on one artist or genre before scanning the full 33k library.
Click β³ to load folders from your /music mount
MODE
π PREVIEW
β‘ AUTO-PILOT
Preview mode shows proposed vs current metadata. You approve before anything is written to your files.
BATCH SIZE
20
5 (safer)50 (faster)
CONTROLS
MAINTENANCE
Clears SQLite cache. Next scan fetches fresh data from MusicBrainz, iTunes and Last.fm.
SCAN PROGRESS
β Run The Retriever first to pre-populate the metadata cache. The Sniffer and Groomer will be significantly faster once your library is tagged. Chart data is also written permanently to your files as a backup.
READY TO SCAN
Configure options and click Start Scan
0
TOTAL
0
PROCESSED
0
MATCHED
0
FAILED
0
CACHED
SCAN LOG
ChartHound Retriever ready. Configure options above and start a scan.
PREVIEW RESULTS
0 selected
ARTIST
TITLE
CURRENT GENRES
PROPOSED GENRES
YEAR
CONF
π‘
THE SNIFFER
CHART-HIT FINDER & GRABBER
Hot 100 Β· Adult Pop Β· UK Β· CCM Β· Gospel Β· Rock Β· R&B Β· 15+ charts. Finds what's missing from your library Β· Searches via Prowlarr. Pushes grabs with ChartHound-Music category. Builds and pushes playlists to Plex Β· Emby Β· Jellyfin.
MILESTONE 5
βοΈ
THE GROOMER
PLAYLIST BUILDER
Build playlists from tracks you already own. Filter by chart Β· genre Β· era Β· peak position Β· mood. Push directly to Plex Β· Emby Β· Jellyfin.
MILESTONE 6
π
THE BLOODHOUND
ARTIST & ALBUM HUNTER
Search any artist β get every album from MusicBrainz. Select what you want Β· Search via Prowlarr. Background monitoring for new releases via APScheduler.
MILESTONE 7
π―
THE TRACKER
RADARR / SONARR HUNTER
Hunts missing movies and TV episodes automatically. Reads Radarr and Sonarr want lists Β· Searches via Prowlarr. ChartHound-Movies and ChartHound-TV categories. Scheduled background hunting β runs while browser is closed.
MILESTONE 8
βΆ
THE SCOUT
YOUTUBE PLAYLIST CREATOR
Search YouTube by chart Β· genre Β· artist. Build YouTube playlists and push to your account. YouTube API credentials stored encrypted in The Kennel.
MILESTONE 9
π¬
THE LOOKOUT
LOCAL MUSIC VIDEO MANAGER
Scan your server's music video collection. Filter by quality Β· artist Β· genre Β· chart. Build MV playlists and push to Plex Β· Emby Β· Jellyfin.