gonic is a free, open source media & streaming project written in Go and released under GPL-3.0. It has 2,544 GitHub stars, 156 forks and 72 open issues, and was last pushed 10 hours ago. On this registry it ranks #16 of 27 tracked projects in Media & Streaming, with 5 head-to-head comparisons available. It gained 1 stars over the last 3 tracked days.

What is gonic?

What it is

Gonic is a music streaming server and a free-software implementation of the Subsonic server API. It lives in the self-hosted media streaming ecosystem, where users want to keep a personal music library on their own hardware while using Subsonic-compatible clients.

The problem it solves is turning local audio files into a networked music service without a proprietary backend. It indexes files, exposes them through the Subsonic API, and adds transcoding, caching, playlists, podcasts, scrobbling, and user management.

Key capabilities

  • It browses by folder while keeping the directory tree intact, and by tags using TagLib for MP3, Opus, FLAC, APE, M4A, and WAV.
  • It performs on-the-fly transcoding and caching with FFmpeg, letting clients request formats suited to their bandwidth or device.
  • It supports Subsonic jukebox mode for gapless server-side playback and can serve podcasts from a configured directory.
  • It scans libraries quickly, with the README reporting about ten minutes for an initial scan of roughly fifty thousand tracks and about six seconds incrementally.
  • It supports multiple users, each with their own transcoding preferences, playlists, top tracks, top artists, and library views.
  • It can scrobble to Last.fm and ListenBrainz, fetch artist similarities and biographies from the Last.fm API, and configure settings through a web interface.
  • It supports album-artist and multi-valued tags, newer salt and token authentication, and lightweight deployment suitable for devices such as a Raspberry Pi.

Who uses it and how

  • Self-hosters use it as the backend for Subsonic clients such as Airsonic Refix, Amperfy, Symfonium, DSub, Jamstash, Music Assistant, Sublime Music, Soundwaves, Stmp, Termsonic, Tempus, Strawberry, and Ultrasonic.
  • Users with large local collections expose folders and tagged metadata over the network while keeping the original file structure visible to clients that browse by folder.
  • Listeners use jukebox mode for gapless playback, and podcast users add a podcast path so episodes are served alongside music.
  • Operators run it on lightweight hardware, configure paths through environment variables or command-line arguments, and enable TLS with certificate and key paths.

Getting started

The README lists installation from source, Docker, systemd, and other packages listed through Repology, and it says the default login is admin/admin until changed from the web interface.

When to use it — and when not to

Gonic is useful when someone wants a free-software Subsonic API server for a personal library and is willing to operate the server, storage paths, FFmpeg, and optional TLS. It serves as a self-hosted backend for Subsonic clients rather than providing a hosted music service. The README excerpt does not show a required database beyond an optional path, so operators must manage persistence, backups, and client compatibility.

project readme (upstream, from github) — read inline

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

readme truncated — read the full docs on github

Frequently asked questions

Is gonic free to use?

gonic is open source under the GPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does gonic do?

music streaming server / free-software subsonic server API implementation

What is gonic written in?

gonic is primarily written in Go. Its source is publicly available at https://github.com/sentriz/gonic, and it has 2,544 GitHub stars.