SkillAgentSearch skills...

Gonic

music streaming server / free-software subsonic server API implementation

Install / Use

/learn @sentriz/Gonic

README

<p align="center"><img width="500" src="https://github.com/sentriz/gonic/blob/master/.github/logo.png?raw=true"></p> <h4 align="center">free-software <a href="http://www.subsonic.org/">subsonic</a> server API implementation, supporting its <a href="https://github.com/sentriz/gonic?tab=readme-ov-file#features">many clients</a></h4> <p align="center"> <a href="http://hub.docker.com/r/sentriz/gonic"><img src="https://img.shields.io/docker/pulls/sentriz/gonic.svg"></a> <a href="https://repology.org/project/gonic/"><img src="https://repology.org/badge/tiny-repos/gonic.svg"></a> <a href="https://github.com/sentriz/gonic/releases"><img src="https://img.shields.io/github/v/release/sentriz/gonic.svg"></a> <a href="https://web.libera.chat/#gonic"><img src="https://img.shields.io/badge/libera.chat-%23gonic-blue.svg"></a> </p>

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, 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

https://github.com/sentriz/gonic/wiki/installation#from-source

...with docker

https://github.com/sentriz/gonic/wiki/installation#with-docker

...with systemd

https://github.com/sentriz/gonic/wiki/installation#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 <userid>/<name>.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 files (default true) | | GONIC_JUKEBOX_ENABLED | -jukebox-enabled | optional whether the subsonic jukebox api should be enabled | | GONIC_JUKEBOX_MPV_EXTRA_ARGS | -jukebox-mpv-extra-args | optional extra command line arguments to pass to the jukebox mpv daemon | | GONIC_PODCAST_PURGE_AGE | -podcast-purge-age | optional age (in days) to purge podcast episodes if not access

View on GitHub
GitHub Stars2.3k
CategoryDevelopment
Updated7h ago
Forks143

Languages

Go

Security Score

100/100

Audited on Mar 20, 2026

No findings