Skip to content
subsonic server API implementation
Go Other
  1. Go 99.3%
  2. Other 0.7%
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github delete workflows Nov 24, 2019
assets show version in cli and web Nov 27, 2019
cmd
db
mime
model add playlist support Nov 27, 2019
scanner reset tracking variables after start scan Nov 28, 2019
server
version bump to v0.4.3 Dec 5, 2019
.dockerignore
.gitignore add assets Nov 21, 2019
.golangci.yml update golangcl lint Nov 24, 2019
Dockerfile use alpine for docker Jul 31, 2019
LICENSE init commit Mar 29, 2019
README.md Update README.md Dec 5, 2019
_build_tags
_build_vars
_do_build_scanner
_do_build_server remove concept of prod and dev assets Jul 8, 2019
_do_bump_version show version in cli and web Nov 27, 2019
_do_gen_assets seperate routes, provide robust handler types, use mux Jul 31, 2019
_do_gen_handler_tests seperate routes, provide robust handler types, use mux Jul 31, 2019
_do_run_scanner simpilufy shell scripts Jul 1, 2019
_do_run_server remove concept of prod and dev assets Jul 8, 2019
_do_run_server_live add 404 handler for admin Aug 21, 2019
go.mod
go.sum

README.md

FLOSS alternative to subsonic, supporting its many clients

features

  • 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

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

# 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_SCAN_INTERVAL -scan-interval optional interval (in minutes) to check for new music (automatic scanning disabled if omitted)

screenshots

You can’t perform that action at this time.