FLOSS alternative to subsonic, supporting its many clients
- browsing by folder (keeping your full tree intact)
- browsing by tags (using taglib - supports mp3, opus, flac, ape, m4a, wav, etc.)
- pretty fast scanning (with my library of ~27k tracks, initial scan takes about 10m, and about 5s after incrementally)
- last.fm scrobbling
- multiple users
- a web interface for configuration (set up last.fm, manage users, start scans, etc.)
- newer salt and token auth
- tested on dsub and jamstash
the default login is admin/admin.
password can then be changed from the web interface
$ apt install build-essential git sqlite libtag1-dev # for debian like
$ pacman -S base-devel git sqlite taglib # for arch like
$ go get senan.xyz/g/gonic/cmd/gonic
$ export PATH=$PATH:$HOME/go/bin
$ gonic -h # or see "configuration options below"
note: unfortunately if you do this above, you'll be compiling gonic locally on your machine (if someone knows how I can statically link sqlite3 and taglib, please let me know so I can distribute static binaries)
or else you can run in docker, available on dockerhub as sentriz/gonic
# example docker-compose.yml
version: '3'
services:
gonic:
image: sentriz/gonic:latest
environment:
- TZ
# optionally, see env vars below
expose:
- 80
volumes:
- ./data:/data
- /path/to/music:/music:ro
then start with docker-compose up -d
env var | command line arg | description |
---|---|---|
GONIC_MUSIC_PATH |
-music-path |
path to your music collection |
GONIC_DB_PATH |
-db-path |
optional path to database file |
GONIC_LISTEN_ADDR |
-listen-addr |
optional host and port to listen on (eg. 0.0.0.0:4747 , 127.0.0.1:4747 ) (default 0.0.0.0:4747 ) |
GONIC_PROXY_PREFIX |
-proxy-prefix |
optional url path prefix to use if behind reverse proxy. eg /gonic (see example configs below) |
GONIC_SCAN_INTERVAL |
-scan-interval |
optional interval (in minutes) to check for new music (automatic scanning disabled if omitted) |
location /gonic/ {
proxy_pass http://localhost:4747/;
# set X-Forwarded-Host for last.fm connection callback
proxy_set_header X-Forwarded-Host $host;
}