前言
Airsonic 是一个免费的基于web的媒体流媒体程序,可以让你在任何地方聆听你的音乐。你可以随时随地地听音乐并分享给你的朋友。也可以同时流式传输给多个音乐播放器,比如一个在厨房,一个在客厅。
一、拉取镜像
docker pull linuxserver/airsonic:latest
参考连接:https://hub.docker.com/r/linuxserver/airsonic/tags
二、建立数据文件夹
首先建立四个文件夹,分别为 music,podcasts,playlists,data ,分别对应为音乐目录,播客目录,列表参数,docker 数据,可根据自己需要在不同的位置建立好文件目录。
三、使用方法
1、docker-compose(推荐)
兼容docker-compose v2
---
version: "2.1"
services:
airsonic:
image: linuxserver/airsonic
container_name: airsonic
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
- CONTEXT_PATH=<URL_BASE> #optional
- JAVA_OPTS=<options> #optional
volumes:
- </path/to/config>:/config
- </path/to/music>:/music
- </path/to/playlists>:/playlists
- </path/to/podcasts>:/podcasts
- </path/to/other media>:/media #optional
ports:
- 4040:4040
devices:
- /dev/snd:/dev/snd #optional
restart: unless-stopped
2、docker cli
docker run -d \
--name=airsonic \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Europe/London \
-e CONTEXT_PATH=<URL_BASE> `#optional` \
-e JAVA_OPTS=<options> `#optional` \
-p 4040:4040 \
-v </path/to/config>:/config \
-v </path/to/music>:/music \
-v </path/to/playlists>:/playlists \
-v </path/to/podcasts>:/podcasts \
-v </path/to/other media>:/media `#optional` \
--device /dev/snd:/dev/snd `#optional` \
--restart unless-stopped \
linuxserver/airsonic
3、使用portainer
新建一个容器,输入名称,已经经下载好的镜像
新建一个端口映射,host设置为 4040,container设置为 4040
找到Volumes,分别按照以下格式吧新建好的五个文件夹地址填入,其中host按照固定格式填写,container填写新建的文件夹地址
找到Restart policy,重启策略选择Always
最后一步,找到Actions,点击Deplay the container,至此新建容器完成
四、相关参数解释
1、端口(-p)
port | 说明 |
---|---|
4040 | Web界面 |
2、环境变量(-e)
env | 说明 |
---|---|
PUID=1000 | 用户的 UID,详见下面的说明 |
PGID=1000 | 用户的 GID,详见下面的说明 |
TZ=Europe/London | 设置时区,在国内的话可以使用 Asia/Shanghai |
CONTEXT_PATH=<URL_BASE> | 用于在设置反向代理时候的重定向url |
JAVA_OPTS=<options> | 传递其他的Java配置 |
3、卷映射(-v)
volume | 说明 |
---|---|
/config | 配置文件的位置 |
/music | 音乐文件夹 |
/playlists | 播放列表保存的位置 |
/podcasts | 播客的目录 |
/media | 其他媒体文件的位置 |
4、设备映射(--device)
设备 | 说明 |
---|---|
/dev/snd | 映射 Airsonic 的 Java jukebox 播放器。 |
5、从文件加载环境变量
可以使用前缀名为 FILE__
的文件来加载环境变量。
例:
-e FILE__PASSWORD=/run/secrets/mysecretpassword
将把 /run/secrets/mysecretpassword
文件中的内容作为 PASSWORD
变量的值。
5、运行程序的umask(文件掩码)
我们所有的镜像都可以使用 -e UMASK=022 来设置覆盖容器内服务的umask。
6、UID和GID
当使用 -v
映射卷的时候,宿主机和容器内会出现关于权限的问题,我们的镜像可以通过指定 PUID
和 GUID
来避免此类问题。
可以使用你目前正在使用的用户的UID和GID进行设置,这样就不会存在权限问题。
可以通过如下的方式查看当前用户的UID和GID:
$ id $user
uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
Note
如果没特殊需求,可以将后续所有容器的id都设置为当前非root用户的id,这样会省去解决很多关于文件权限的问题(可以查看 什么是PUID和PGID 这篇文章了解更多)。当然,如果有特殊需要可以给不同的容器设置不同的id,即分配给不同的用户。使用 useradd
命令即可添加用户。通常来说,除root账户外,第一个建立的用户的UID和GID都是1000,然后递增生成。
五、登陆
Web管理界面: :4040
默认用户名和密码都是:admin
可以通过 JAVA_OPTS
传递额外的Java配置参数,如-e JAVA_OPTS="-Xmx256m -Xms256m"
。
对于反向代理,可能需要传递 JAVA_OPTS=-Dserver.use-forward-headers=true
来让airsonic正常使用。
注意:如果你希望使用 Airsonic 的 Java jukebox 播放器,需要让 PGID 和硬件声音设备相匹配(如,/dev/snd)
六、相关操作
- 进入容器:
docker exec -it airsonic /bin/bash
- 查看容器日志:
docker logs -f airsonic
- 查看容器版本号:
docker inspect -f '{{ index .Config.Labels "build_version" }}' airsonic
- 查看镜像版本号:
docker inspect -f '{{ index .Config.Labels "build_version" }}' ghcr.io/linuxserver/airsonic
七、更改界面语言
点击 Setting-General-default language- 更改为中文
八、其他玩法
可以添加播客订阅 RSS 地址然后实现在网页端播放,类似于网易云的播客电台。不过有的需要转换订阅链接,有的还要自己搭建部署 RSSHUB,挺麻烦的,还是建议作为一款本地网页端播放器比较合适。
九、小结
总的来说部署还是相对简单的,除了下载镜像用了30分钟,安装基本上5分钟完成,Airsonic 界面清晰操作简单,不过现在在线音乐服务商(例如:qq音乐、网易云音乐、酷狗音乐等)已经很多,普通用户基本上用不到本地播放器了,除非你有大量本地音乐储存。
使用了一段时间发现问题也很多,歌曲专辑图片不显示,播放列表偶尔会显示乱码,自动搜索歌词功能不支持中文歌曲。
参考来源:
https://linuxserver.watercalmx.com/images/docker-airsonic.html
http://app.myzaker.com/news/article.php?pk=61bcb6748e9f0920d51ee833