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.

