
free-software subsonic server API implementation, supporting its many clients
features
- browsing by folder (keeping your full tree intact) see here
- browsing by tags (using taglib - supports mp3, opus, flac, ape, m4a, wav, etc.)
- on-the-fly audio transcoding and caching (requires ffmpeg) (thank you spijet)
- subsonic jukebox mode, for gapless server-side audio playback instead of streaming (thank you lxea)
- support for podcasts (thank you lxea)
- pretty fast scanning (with my library of ~50k tracks, initial scan takes about 10m, and about 6s after incrementally)
- multiple users, each with their own transcoding preferences, playlists, top tracks, top artists, etc.
- last.fm scrobbling
- listenbrainz scrobbling (thank you spezifisch, lxea)
- artist similarities and biographies from the last.fm api
- support for multi valued tags like albumartists and genres (see more)
- a web interface for configuration (set up last.fm, manage users, start scans, etc.)
- support for the album-artist tag, to not clutter your artist list with compilation album appearances
- written in go, so lightweight and suitable for a raspberry pi, etc. (see ARM images below)
- newer salt and token auth
- tested on airsonic-refix, amperfy, symfonium, dsub, jamstash, music-assistant, subsonic.el, sublime music, soundwaves, stmp, termsonic, tempus, strawberry, and ultrasonic
installation
the default login is admin/admin.
password can then be changed from the web interface
...from source
...with docker
...with systemd
...elsewhere
configuration options
| env var | command line arg | description |
|---|---|---|
GONIC_MUSIC_PATH |
-music-path |
path to your music collection (see also multi-folder support below) |
GONIC_PODCAST_PATH |
-podcast-path |
path to a podcasts directory |
GONIC_PLAYLISTS_PATH |
-playlists-path |
path to new or existing directory with m3u files for subsonic playlists. items in the directory should be in the format /.m3u. for example the admin user could have 1/my-playlist.m3u. gonic create and make changes to these playlists over the subsonic api. |
GONIC_CACHE_PATH |
-cache-path |
path to store audio transcodes, covers, etc |
GONIC_DB_PATH |
-db-path |
optional path to database file |
GONIC_HTTP_LOG |
-http-log |
optional http request logging, enabled by default |
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_TLS_CERT |
-tls-cert |
optional path to a TLS cert (enables HTTPS listening) |
GONIC_TLS_KEY |
-tls-key |
optional path to a TLS key (enables HTTPS listening) |
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) |
GONIC_SCAN_AT_START_ENABLED |
-scan-at-start-enabled |
optional whether to perform an initial scan at startup |
GONIC_SCAN_WATCHER_ENABLED |
-scan-watcher-enabled |
optional whether to watch file system for new music and rescan |
GONIC_SCAN_EMBEDDED_COVER_ENABLED |
-scan-embedded-cover-enabled |
optional whether to scan for embedded covers in audio fil |