厌倦了千篇一律的流媒体服务?想要一个只播放你喜欢的音乐、只属于你和朋友的小众电台?那么你一定不能错过 Airstation —— 一个优雅、轻量、纯净的在线电台自托管方案。
本文将带你从 0 到 1,完整部署这个支持 HLS 流媒体、FFmpeg 转码、Docker 一键部署的开源神器。无论你是 NAS 玩家、家庭媒体中心爱好者,还是想玩点“音乐黑科技”的工程宅——你都能轻松拥有属于自己的网络广播站。
关于Airstation
Your own online radio station.
Airstation 是一个自托管的在线电台(流媒体音频服务) 项目,适合家庭NAS音乐播放、私人播客发布、团队内部广播、户外活动播音或远程音乐分享等多种场景,帮助你快速搭建属于自己的专属音频广播站。
支持通过 Web 上传音乐
提供播放队列管理和极简的听众播放界面
使用 HLS (HTTP Live Streaming) 协议进行音频流传输
数据存储使用 SQLite
后端音频处理使用 FFmpeg
支持 Docker 一键部署(提供 docker-compose.yml)
可部署为私人的广播站 / 在线音乐库
部署流程
本文以威联通NAS为部署演示平台,通过Docker Compose进行部署。
部署代码如下:
version: '3' # 最新版Docker Compose删除该行
services:
airstation:
image: cheatsnake/airstation:latest
container_name: airstation
ports:
- "7331:7331" # 冒号左侧端口可自定义
volumes:
- /share/Container/airstation/database:/app/storage # 数据库相关
- /share/Container/airstation/static:/app/static # 音乐文件等的存储位置
environment:
- AIRSTATION_SECRET_KEY=ydxian666 # 控制面板登陆密码,别设置太短否则启动不成功
- AIRSTATION_JWT_SIGN=pMH51SoPKtJE6K0DQluq # 签发 JWT 会话令牌的密钥,这个自己去生成
restart: always
# docker容器健康检查,我一般会选择删除该部分
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:7331/"]
interval: 10s
timeout: 5s
retries: 3
start_period: 10s
关于文件映射目录,冒号左侧大家根据实际情况进行替换。
关于环境变量- AIRSTATION_JWT_SIGN
,可以用以前介绍的工具合集 IT-TOOLS 生成,也可通过openssl rand -base64 32
命令来生成。
将代码修改完毕后,打开威联通的Docker管理工具Container Station,创建新的应用程序。将代码复制粘贴进框内,一定注意格式对齐!检查无误后进行创建,如下图所示。
这里也附带上 docker run 命令吧:
docker run -d \
--name airstation \
-p 7331:7331 \
-v /share/Container/airstation/database:/app/storage \
-v /share/Container/airstation/static:/app/static \
-e AIRSTATION_SECRET_KEY=ydxian666 \
-e AIRSTATION_JWT_SIGN=pMH51SoPKtJE6K0DQluq \
--restart=always \
cheatsnake/airstation:latest
使用介绍
若按上文代码部署完毕,即可浏览器打开项目。
要注意的是Airstation具备两个访问界面。
第一个是管理员专属的控制面板,浏览器输入 NAS_IP:7331/studio/,注意最后这个斜杠一定不要省略,这非常重要!!!下图可以看到我反代之后访问控制面板也是如此。
第二个界面就是普通的用户界面,输入NAS_IP:7331或者反代后的域名即可。
要想放歌,需要进入控制面板中。
面板很简单,很纯粹,截图如下。并且要注意的的是,顶部进度条有播放进度时才会生效,在第二用户界面用户才可选择播放。
🎧 图标表示当前在线人数,因为我要做测试,Safari和Chrome各打开一个网址,因此显示俩人。
右侧的曲库我们可以直接关联已有的曲库,也可后期点击Add添加,实际上传目录是位于/share/Container/airstation/static/track
下。Delete为删除。
选中列表中的歌曲,并点击Queue
即可添加到左侧的播放列表。
播放列表可以点击🎲骰子随机打乱播放顺序,点击Clera会清空播放列表,但对基础文件并无影响。
还有一些注意事项:
播放界面不显示歌词、歌手。第二界面默认是暂停,需要手动点击才会播放;。不支持进度条拖动,播放进度同咱们在直播平台看直播一样(暂停不能保存进度)。
最后
新项目,大家可以去提提建议等参与下。
差不多就这些,感兴趣的可以自建个用用看~
感谢观看,本文完。
评论区