Self-hosted web interface and downloader for Qobuz.
music qobuz downloader self-hosted
Go 89%
CSS 6%
HTML 5%
JavaScript <1%
Makefile <1%
Dockerfile <1%
<1%

README.md

gobuz #

A self-hosted web interface and downloader for Qobuz.

Requires Go 1.26+ and a Qobuz account with an active subscription.

Building #

git clone https://tangled.org/sullen.net/gobuz
cd gobuz
make build

This compiles the gobuz binary to the project root.

Setup and login #

Run the OAuth flow to authenticate with Qobuz and generate config.ini:

./gobuz oauth

This starts a local redirect server and prints an authorization URL. Open the URL in your browser and complete login.

If running on a remote server or if redirect capture fails, copy the redirected URL from your browser address bar and pass it directly:

./gobuz oauth "https://www.qobuz.com/..."

To configure user ID and token directly without browser interaction:

./gobuz --reset

User management #

Manage web portal user accounts using the user subcommand. Passwords require a minimum of 12 characters.

Before using the web interface, create an initial administrator account:

./gobuz user add --admin <username>

Additional user management commands:

# Add a regular user (prompts for password)
./gobuz user add <username>

# Change roles
./gobuz user promote <username>
./gobuz user demote <username>

# List users
./gobuz user list

Running the web interface #

Start the server:

./gobuz

By default, the server binds to 127.0.0.1:8080.

Options:

  • --host: Bind address (default: 127.0.0.1)
  • --port: Port number (default: 8080)
  • --dev: Reload templates and static assets from disk on change

Example:

./gobuz web --host 0.0.0.0 --port 8080

Configuration #

Configuration is stored in config.ini:

  • macOS: ~/Library/Application Support/gobuz/config.ini
  • Linux: ~/.config/gobuz/config.ini
  • Windows: %APPDATA%\gobuz\config.ini

If $XDG_CONFIG_HOME is set to an absolute path, it takes precedence on all platforms (e.g. $XDG_CONFIG_HOME/gobuz/config.ini).

Options #

Setting          Default                                                          Description
-----------------------------------------------------------------------------------------------------------------------
download_dir     ./qobuz-downloader                                               Target directory for downloads
default_quality  6                                                                Audio format / quality level
workers          3                                                                Concurrent track download workers
embed_art        false                                                            Embed cover art directly into audio files
og_cover         false                                                            Save original uncompressed cover art image
folder_format    {artist} - {album} ({year}) [{bit_depth}B-{sampling_rate}kHz]    Folder naming template
track_format     {tracknumber}. {tracktitle}                                      Track file naming template

Quality levels #

Value   Format
------------------------------------------
5       MP3 320 kbps
6       Lossless FLAC (16-bit / 44.1 kHz)
7       Hi-Res FLAC (up to 24-bit / 96 kHz)
27      Hi-Res FLAC (up to 24-bit / 192 kHz)

Format placeholders #

  • Folder format (folder_format): {artist}, {album}, {year}, {bit_depth}, {sampling_rate}, {format}
  • Track format (track_format): {tracknumber}, {tracktitle}, {artist}, {albumartist}, {bit_depth}, {sampling_rate}, {version}

Command-line options #

Usage: gobuz [options] <command> [args]

Commands:
  web                Start the web portal (default)
  user               Manage user accounts (add, promote, demote, list)
  oauth [code|url]   Log in via Qobuz OAuth

Options:
  -r, --reset        Reconfigure credentials manually
  -s, --show-config  Print configuration path and contents
  -p, --purge        Delete download history database (gobuz.db)
  -v, --version      Print version and exit

Development #

make build    # Compile binary
make test     # Run tests
make vet      # Run go vet
make webdev   # Run server with live asset reloading
make clean    # Remove build artifacts

Credits #

Based on vitiko98/qobuz-dl and Aeneaj/qobuz-dl-go.