FLOSS alternative to subsonic, supporting its many clients

## features - browsing by folder (keeping your full tree intact) - browsing by tags (using [taglib](https://taglib.org/) - 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](https://f-droid.org/en/packages/github.daneren2005.dsub/) and [jamstash](http://jamstash.com/) ## installation 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` ```yaml # 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` ## configuration options |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)| ## screenshots

## example nginx config with `GONIC_PROXY_PREFIX` ```nginx location /gonic/ { proxy_pass http://localhost:4747/; # set X-Forwarded-Host for last.fm connection callback proxy_set_header X-Forwarded-Host $host; } ```