mrkeyoor.com_
Sat 19 Sept 03:39 UTC
Self-Hostedevaluationupdated 19 Sept 2026

go-music-dl review

Go Music DL is a Chinese-language music search, playback, library, and download application for Web, terminal, desktop, Android, and iOS use. Its documentation is in Chinese, and we found no English guide. It brings Chinese services such as NetEase Cloud Music, QQ Music, Kugou, Kuwo, Migu, and Soda into one interface, alongside several other sources.

Verdict

Our Go Music DL run installed 153 packages and built successfully, but its test command finished with only 10 of 15 packages passing because 5 packages, including both desktop targets, failed. It is worth trying for a Chinese-speaking NAS user who accepts that third-party music interfaces can break without notice. Keep it private, treat saved cookies like account credentials, and choose a narrower tool if one service covers your needs.

We ran it

Lab card: what happened when we ran go-music-dlScreenshot of go-music-dl (music.zkkp.nyc.mn)
Install✓ · 32s153 packages
Build✓ · 51s
Tests✗ · 24s10 passed · 5 failed of 15 (go test)
Repo154 files~35,785 lines of source · 4.4 MB · 5 CI workflows · Dockerfile

Answers from our run

Does go-music-dl build from source?

Dependencies installed in 32 seconds (153 packages), and the build succeeded in 51 seconds. We cloned commit c1b188c into a clean Debian container with 3 CPUs and no project-specific setup.

Do go-music-dl's tests pass?

Not all of them: 10 of 15 passed and 5 failed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use go-music-dl?

English-only users: the 39 KB README and interface documentation are in Chinese, with no English setup guide.

What are the alternatives to go-music-dl?

spotDL, yt-dlp, go-musicfox. Our Go Music DL run installed 153 packages and built successfully, but its test command finished with only 10 of 15 packages passing because 5 packages, including both desktop targets, failed.

Setup3/5Install and build passed; 5 of 15 test packages failed
Docs4/5Detailed Chinese guide, but no English path and much repeated material
Community4/54,383 stars with issues and fixes active in September 2026
Maturity3/5v1.1.1 ships widely, while source and desktop failures remain

Who it’s for

Chinese-speaking users who want one local interface for several Chinese music services.
NAS owners who can keep the Web service and its saved platform cookies on a trusted network.
Go developers willing to repair source adapters when a music service changes its private interface.
People who want Web, TUI, desktop, and Android choices around the same local library.

Who it’s NOT for

English-only users: the 39 KB README and interface documentation are in Chinese, with no English setup guide.
Anyone who needs every source to stay dependable: the README says Soda QR login is not working, while open issues report QQ QR login and Migu VIP access failures.
Operators planning to expose the Web UI directly to the internet: search, playback, downloads, and library browsing require no login by default.
Linux desktop users who need distribution-neutral packaging: issue 209 reports a Debian-specific WebKit path that prevents the AppImage from opening on Arch Linux.
Teams that require a clean full test command before adoption: our run ended with 10 of 15 packages passing and both desktop packages failing to build.

Setup reality

Our sandbox installed 153 Go packages in 32 seconds and built the project in 51 seconds. The test command failed after 24 seconds: 10 packages passed and 5 failed out of 15. The log tail identifies build failures in desktop_app and desktop_go, but it does not show the compiler error, so we cannot assign a cause.

The simplest documented route is a release binary or Docker Compose. Web deployment needs a writable data directory, and richer access to personal playlists or higher quality tracks requires service cookies saved on the server. FFmpeg and ffprobe are optional for metadata, probing, and some media work outside the Android and Docker packages.

The Web service leaves ordinary search, playback, download, and library routes open by default. Admin setup uses a one-time terminal token, a password of at least 6 characters, and a 7-day session. Keep the service on a trusted network or put your own access control in front of it.

Eleven services fit behind one local interface

Go Music DL searches 11 documented sources, with especially deep coverage of NetEase Cloud Music, QQ Music, Kugou, Kuwo, Migu, and Soda. One binary can run a browser interface or terminal UI, while release assets cover desktop and mobile builds. The Web app also manages local files, custom playlists, lyrics, covers, albums, and service playlists. For someone whose listening is split across Chinese platforms, that consolidation is the reason to consider it.

The documentation is written in Chinese, with no English guide that we could find. That matters because the project has more policy and setup detail than a one-command downloader: its 39 KB README explains cookies, an administrator account, WebDAV, local indexing, filename templates, FFmpeg, several clients, and 11 source-specific capability tables. Machine translation can get you through Docker, but it is a weak substitute when you are handling login cookies or diagnosing a broken adapter.

Broad source support also creates eleven failure surfaces

Each service adapter depends on behavior controlled elsewhere. The README already marks Soda QR login as unavailable because its newer sign-in flow uses dynamic request signatures. Apple Music downloads are limited to previews unless another decryption tool is used, and Qianqian and Jamendo playlist search can return empty results. These are useful disclosures. They also explain why a green local build cannot promise that every download button will work next week.

Current reports make that tradeoff concrete. Issue 236 says QQ QR confirmation reaches the QQ home page without saving the required music cookie. Issue 237 says a paid Migu account still produced no matching VIP result, even though the same browser session could play it. The project was pushed on September 17, 2026, and v1.1.1 shipped that day, so this is not a stale repository. It is active software sitting on moving, unofficial service boundaries.

What happened when we ran it

Our sandbox installed 153 Go packages in 32 seconds. The checkout contained 154 files, about 35,785 lines of source, and occupied 4.4 MB before dependencies. The build completed successfully in 51 seconds inside an unprivileged Debian container with 3 CPUs and 8 GB of RAM. That gives the core Go project a credible first-run result.

The full test command then exited with code 1 after 24 seconds. Go reported 10 passed packages and 5 failed packages out of 15. The visible summary shows successful checks for the main command, core, application shell, CLI, and internal Web package. Both desktop_app and desktop_go are marked as build failures. The supplied log tail does not include their compiler messages, so saying more about the cause would be guesswork.

Five CI workflow files, a Dockerfile, and a Compose file are present. There is no top-level tests directory, though Go tests can live beside the code they cover. The practical conclusion is simple: installation and the stated build worked, but commit c1b188c did not pass the repository-wide test command in our environment. Desktop users should test the exact package for their operating system before moving a library into it.

Docker is the cleanest route, with an exposed Web surface

The documented Compose setup pulls a prepared image, maps port 8080, and persists /home/appuser/data. That directory holds downloads, settings, playlists, and service cookies. The container runs as UID 1000, but the README tells users to create the host data directory with mode 777. On a shared NAS, tighten ownership and permissions after confirming which account writes the mount.

Ordinary Web functions do not require a login. Search, playback, downloads, albums, and local playlists stay available before authentication, while settings and cookie management require the administrator session. Initial setup prints a one-time token in the terminal, accepts a password of at least 6 characters, and keeps the session for 7 days. Binding this UI to a public address without another access layer would expose far more than a status page.

FFmpeg has a smaller role than the feature list suggests. Without it, the program can still start and list local music, but metadata embedding and some probing degrade. Docker and Android packages include FFmpeg and ffprobe. CLI, desktop, iOS, deb, rpm, and AppImage users provide the tools themselves. Issue 232 reports that a macOS installation could run ffmpeg -version yet the app still said it could not execute FFmpeg, so verify the feature from inside the chosen client.

Local library features are useful, but deletion state needs care

The server can scan MP3, FLAC, M4A, OGG, WAV, WMA, and AAC files, then index them in SQLite. A 10-second snapshot cache avoids rescanning on every page load, and background refresh returns the prior view while a new scan runs. Filename templates can create artist and album directories, while path traversal components are ignored. Those details turn the Web interface into a plausible NAS library rather than a thin search form.

State can still drift when files change outside the application. Issue 239 describes deleting a downloaded track in a NAS file manager, then seeing a later download skipped because the history still treated it as present. Issue 241 reports song and lyric downloads landing under mismatched names or paths. If you already have a carefully organized collection, trial the naming template, external deletions, lyrics, and duplicate handling on a copied folder first.

GitHub listed 4,383 stars and 34 combined open issues and pull requests when we fetched it. Recent reports were receiving updates around the September 17 release, which is a healthier sign than the release number alone. Still, Go Music DL works best as a maintained personal utility, where an owner can update quickly and fall back to another source. A household appliance expected to run unattended for years needs steadier upstream contracts than these music services provide.

Alternatives

ProjectWhat it isPick it when
spotDLA Spotify-focused downloader that finds matching audio on YouTube and writes Spotify metadata.pick this instead when Spotify playlists are your input and a focused command-line workflow is enough.
yt-dlp gh↗A command-line downloader for a wide range of video and audio sites.pick this instead when direct URL extraction matters more than a music library, playlists, or a Web player.
go-musicfoxA Go terminal client centered on NetEase Cloud Music playback and account features.pick this instead when NetEase is the main service and you want a narrower terminal player.

What people are saying

  1. [github-trending] guohuiyuan/go-music-dl

Sources

  1. Go Music DL repository
  2. Go Music DL README at tested commit
  3. Go Music DL v1.1.1 release
  4. Issue 236: QQ Music QR login failure
  5. Issue 209: AppImage WebKit path on Arch Linux
  6. Issue 239: deleted download remains skipped

More self-hosted reviews

alertmanager · fleet · Memoh · audiobookshelf · jitsi-meet · celld · the whole board →