
sentriz/gonic!gonic
gonic 是一个免费开源的 Subsonic 服务器 API 实现,兼容 Subsonic 生态的多种客户端。它允许用户通过网络流式传输音乐库,支持按文件夹或标签浏览音乐、实时音频转码、多用户管理、播放记录同步等功能,适用于构建个人或家庭音乐服务器。
shelldocker run -d \ --name gonic \ -p 4747:4747 \ -v /path/to/music:/music \ # 挂载音乐库目录 -v /path/to/cache:/cache \ # 挂载转码缓存、封面等数据目录 -v /path/to/db:/db \ # 挂载数据库文件目录(可选) -e GONIC_MUSIC_PATH=/music \ # 音乐库路径(容器内路径,需与挂载对应) -e GONIC_CACHE_PATH=/cache \ # 缓存路径(容器内路径,需与挂载对应) -e GONIC_DB_PATH=/db/gonic.db \ # 数据库文件路径(可选) sentriz/gonic
yamlversion: '3' services: gonic: image: sentriz/gonic container_name: gonic ports: - "4747:4747" volumes: - /path/to/music:/music # 音乐库目录(宿主机路径:容器内路径) - /path/to/podcasts:/podcasts # 播客目录(可选) - /path/to/playlists:/playlists # 播放列表目录(可选) - /path/to/cache:/cache # 缓存目录 - /path/to/db:/db # 数据库目录(可选) environment: - GONIC_MUSIC_PATH=/music - GONIC_PODCAST_PATH=/podcasts # 启用播客支持(可选) - GONIC_PLAYLISTS_PATH=/playlists # 播放列表路径(可选) - GONIC_CACHE_PATH=/cache - GONIC_DB_PATH=/db/gonic.db - GONIC_SCAN_INTERVAL=60 # 自动扫描间隔(分钟,可选) - GONIC_SCAN_AT_START_ENABLED=true # 启动时执行初始扫描(可选) restart: unless-stopped
admin,密码 adminhttp://<服务器IP>:4747)修改管理员密码。gonic 支持通过环境变量或命令行参数配置,以下为主要参数说明:
| 环境变量 | 命令行参数 | 描述 | 默认值 |
|---|---|---|---|
GONIC_MUSIC_PATH | -music-path | 音乐库路径(支持多路径,用逗号分隔,如 /music1,/music2) | 无(必填) |
GONIC_PODCAST_PATH | -podcast-path | 播客存储目录 | 无(可选) |
GONIC_PLAYLISTS_PATH | -playlists-path | 播放列表目录,文件格式为 <userid>/<name>.m3u(如 1/my-playlist.m3u 对应 admin 用户) | 无(可选) |
GONIC_CACHE_PATH | -cache-path | 转码文件、封面等缓存目录 | 无(必填) |
GONIC_DB_PATH | -db-path | 数据库文件路径(SQLite) | gonic.db(当前目录) |
GONIC_LISTEN_ADDR | -listen-addr | 监听地址和端口(如 0.0.0.0:4747) | 0.0.0.0:4747 |
GONIC_TLS_CERT | -tls-cert | TLS 证书路径(启用 HTTPS 需同时配置 GONIC_TLS_KEY) | 无(可选) |
GONIC_TLS_KEY | -tls-key | TLS 私钥路径 | 无(可选) |
GONIC_PROXY_PREFIX | -proxy-prefix | 反向代理路径前缀(如 /gonic) | 无(可选) |
GONIC_SCAN_INTERVAL | -scan-interval | 自动扫描音乐库间隔(分钟,省略则禁用自动扫描) | 无(可选) |
GONIC_SCAN_AT_START_ENABLED | -scan-at-start-enabled | 启动时是否执行初始扫描 | false |
GONIC_SCAN_WATCHER_ENABLED | -scan-watcher-enabled | 是否监听文件系统变化并触发重新扫描 | false |
GONIC_JUKEBOX_ENABLED | -jukebox-enabled | 是否启用 Subsonic 点唱机模式(需安装 mpv) | false |
GONIC_JUKEBOX_MPV_EXTRA_ARGS | -jukebox-mpv-extra-args | 传递给 mpv 的额外命令行参数(如音频输出设备配置) | 无(可选) |
GONIC_PODCAST_PURGE_AGE | -podcast-purge-age | 播客剧集自动清理天数(未访问的剧集将被删除) | 无(可选) |
GONIC_EXCLUDE_PATTERN | -exclude-pattern | 排除导入的文件正则表达式(如 .*\.tmp) | 无(可选) |
GONIC_MULTI_VALUE_GENRE | -multi-value-genre | 多值流派标签处理模式(multi/delim <分隔符>/none,详见下方说明) | none |
GONIC_MULTI_VALUE_ARTIST | -multi-value-artist | 多值艺术家标签处理模式 | none |
GONIC_MULTI_VALUE_ALBUM_ARTIST | -multi-value-album-artist | 多值专辑艺术家标签处理模式 | none |
若需配置多个音乐库路径(如分离专辑、合辑、单曲),可通过以下方式实现:
GONIC_MUSIC_PATH=/music/albums,/music/compilations-music-path,如 gonic -music-path /music1 -music-path /music2gonic 支持处理多值标签(如同时标记为“摇滚”和“流行”的流派),通过以下模式配置:
| 模式值 | 描述 |
|---|---|
multi | 解析元数据中的多值字段(需音乐文件通过 MusicBrainz Picard 等工具设置多值标签) |
delim <分隔符> | 按指定分隔符拆分单值字段(如 delim ; 表示用分号拆分流派字段,如“摇滚;流行”拆分为两个流派) |
none(默认) | 不处理多值标签,按原始字段存储 |
示例:启用按分号分隔流派标签
shell-e GONIC_MULTI_VALUE_GENRE="delim ;"
按文件夹浏览时,需确保音乐文件组织符合以下规则:
示例目录结构:
music/ ├── drum and bass/ │ └── Photek/ │ └── (1997) Modus Operandi/ │ ├── 01.10 The Hidden Camera.flac │ ├── 02.10 Smoke Rings.flac │ └── folder.jpg └── experimental/ └── Alan Vega/ ├── (1980) Alan Vega/ │ ├── 01.08 Jukebox Babe.flac │ └── folder.jpg └── (1990) Deuce Avenue/ ├── 01.13 Body Bop Jive.flac └── folder.jpg
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务