NAS 上的文件已经有足够多的管理系统12,而电影也有 Kodi, Emby, Plex 等等工具,图片同样 Chevereto,Lychee,电子书有 Calibre-web,但就是音乐管理工具没有找到一个比较合适的。

构想

我想的应该这个管理系统可以直接通过 Docker 安装,提供一个比较美观的 Web 页面。

  • Docker
  • 映射本地音乐文件夹
  • Web 管理界面
  • 可以根据文件的 metadata 自动归类,如果可以手工进行编辑就更好了
  • 能在线播放

于是乎我带着这样的目的在 awesome-selfhosted Audio streaming 专区寻找,从编程语言,到 Demo,一个个看,然后就发现了 Funkwhale 点开项目主页介绍,界面非常漂亮,Demo 这各个功能也都非常贴心,立即看安装说明,Docker 搞起。并且 Funkwhale 还自带 pot,新建立的站点可以和网络上的站点连接起来相互分享,像极了之前的 SNS Mastodon.

Funkwhale 用 Python,Django 编写,遇到 bug 倒时候也能看懂代码了。

Install

export FUNKWHALE_VERSION="0.20.1"
touch .env
chmod 600 .env  # reduce permissions on the .env file since it contains sensitive data
cat > .env <<EOD
# Replace 'your.funkwhale.example' with your actual domain
FUNKWHALE_HOSTNAME=your.funkwhale.example
# Protocol may also be: http
FUNKWHALE_PROTOCOL=https
# This limits the upload size
NGINX_MAX_BODY_SIZE=100M
# Bind to localhost
FUNKWHALE_API_IP=127.0.0.1
# Container port you want to expose on the host
FUNKWHALE_API_PORT=5000
# Generate and store a secure secret key for your instance
DJANGO_SECRET_KEY=$(openssl rand -hex 45)
# Remove this if you expose the container directly on ports 80/443
NESTED_PROXY=1
EOD

运行:

docker run \
	--name=funkwhale \
	--restart=unless-stopped \
	--env-file=/share/Container/funkwhale/.env \
	-v /share/Container/funkwhale/data:/data \
	-v /share/Music:/music:ro \
	-e PUID=1000 \
	-e PGID=1000 \
	-p 6000:80 \
	-d \
	funkwhale/all-in-one:latest

或者使用 docker-compose:

version: "3"

services:
  funkwhale:
	container_name: funkwhale
	restart: unless-stopped
	# add the version number in your .env file, or hardcode it
	image: funkwhale/all-in-one:0.20.1
	env_file: /share/Container/funkwhale/.env
	environment:
	  # adapt to the pid/gid that own /srv/funkwhale/data
	  - PUID=1000
	  - PGID=1000
	volumes:
	  - /share/Container/funkwhale/data:/data
	  - /share/Music/:/music:ro
	ports:
	  - "6000:80"

koel

Koozic

airsonic

reference