抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

音乐管理方案

使用Navidrome管理音乐

部署

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
version: "3"
services:
navidrome:
image: deluan/navidrome:latest
ports:
- "4533:4533"
environment:
ND_SCANSCHEDULE: 1m
ND_SPOTIFY_ID: 4cd036bsq**
ND_SPOTIFY_SECRET: 249ca01a**
ND_LOGLEVEL: info
ND_SESSIONTIMEOUT: 24h
ND_BASEURL: ""
volumes:
- "./data:/data"
- "./music:/music:ro" # 冒号左边修改成自己本地的音乐文件夹路径

Spotify同步

在 Spotify 中创建一个免费帐户,然后按照以下步骤操作

https://developer.spotify.com/dashboard/applications注册地址,然后单击 Spotify 的开发者仪表板中的CREATE AN APP

1
2
ND_SPOTIFY_ID	        Spotify 客户端 ID
ND_SPOTIFY_SECRET Spotify 客户端 Secret

转码设置

1
2
3
4
转码设置之所以要转码,是因为无损的文件比较大,一般都有几百M,所以需要进行转码成,便于客户端进行播放
但 Navidrome 出于安全原因,禁用了从 Web 界面更改参数,所以需要先修改 Docker 的环境变量
ND_ENABLETRANSCODINGCONFIG 设置为 true 才能支持转码功能
ND_TRANSCODINGCACHESIZE 转码缓存的大小。设置 0 为禁用缓存,默认为 100MB

miniserve

Navidrome无法直接上传音乐文件,需要文件服务器来管理。

看到中文博客上用miniserve,搭了一个,但是非常不好用

1
2
3
4
5
6
7
8
9
10
11
12
version: "3"
services:
miniserve:
image: svenstaro/miniserve:latest
depends_on:
- navidrome
ports:
- "4534:8080"
volumes:
- "./music:/downloads" # 冒号左边修改成自己本地的音乐文件夹路径
command: "-r -z -u -q -p 8080 -a username:passwd /downloads" #
restart: unless-stopped

Nextcloud

在考虑nextcloud、owncloud、seafile,seafile的文件不是直接保存的,而是分块加密保存的,虽然性能强大,但是不太符合我的需求。(有时间考虑搭一个seafile)

nextcloud是非常热门的文件服务方案,功能非常多。

尝试搭建,但是功能多过,过于臃肿,不太好用,而且php太慢了,1核2G的服务器想用点轻量的东西。

部署

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
version: '3'

services:
db:
image: mysql
restart: always
volumes:
- ./cloud/db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=FtLpb2Mwx3Qc4BTJ7bmh
- MYSQL_PASSWORD=Ks1acs2R2KU5axpbQ7AU
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=ryaoknw
networks:
- nextcloud

app:
image: nextcloud
restart: always
ports:
- 4534:80
links:
- db
volumes:
- ./cloud/config:/var/www/html/config
- /root/nextcloud:/var/www/html/data # 这里是映射到外置硬盘,也自行修改
- ./cloud/apps:/var/www/html/apps
networks:
- nextcloud
environment:
- MYSQL_PASSWORD=Ks1acs2R2KU5axpbQ7AU
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=ryaoknw
- MYSQL_HOST=db

networks:
nextcloud:

cloudreve

找到了cloudreve和alist, alist的侧重不太一样,决定用cloudreve,cloudreve支持webdav,也可以当个网盘用,但是不是文件原始目录结构,操,又不能用。

部署

先创建空文件conf.inicloudreve.db

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
version: "3"
services:
cloudreve:
container_name: cloudreve
image: cloudreve/cloudreve:latest
restart: unless-stopped
ports:
- "5212:5212"
volumes:
- ./temp_data:/data
- ./cloudreve/uploads:/cloudreve/uploads
- ./cloudreve/conf.ini:/cloudreve/conf.ini
- ./cloudreve/cloudreve.db:/cloudreve/cloudreve.db
- ./cloudreve/avatar:/cloudreve/avatar
depends_on:
- aria2
aria2:
container_name: aria2
image: p3terx/aria2-pro
restart: unless-stopped
environment:
- RPC_SECRET=DGDj6tUgiBMacKZad4zW
- RPC_PORT=6800
volumes:
- ./aria2/config:/config
- ./temp_data:/data

FileBrowser

文件原始目录结构的文件服务,直接对应服务器文件目录。

部署

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
version: '3'
services:
filebrowser:
image: filebrowser/filebrowser:latest
container_name: filebrowser
restart: always
ports:
- "8089:80"
networks:
- filebrowser
volumes:
- /home/root:/srv
- ./filebrowser.db:/database.db
- ./.filebrowser.json:/.filebrowser.json
- /etc/localtime:/etc/localtime:ro
logging:
driver: 'json-file'
options:
max-size: '1m'
networks:
filebrowser:
1
2
touch filebrowser.db
touch .filebrowser.json

编辑.filebrowser.json

1
2
3
4
5
6
7
8
9
{
"address": "0.0.0.0",
"port": 80,
"locale": "zh-cn",
"baseURL": "",
"log": "stdout",
"database": "/database.db",
"root": "/srv"
}

评论