Docker部署Airstation全攻略:手把手打造个人专属在线音乐电台
厌倦了主流流媒体平台千篇一律的歌单推荐?是否梦想拥有一个完全由你掌控、只播放心仪曲目并能与好友共享的个性化电台?那么,Airstation 绝对值得你关注——它是一款设计优雅、资源占用轻量、界面纯净的在线电台自托管方案。

本教程将细致地引导你完成从零开始的完整部署过程,涵盖这款支持HLS流媒体传输、FFmpeg实时转码并能通过Docker一键部署的开源工具。无论你是热衷折腾的NAS玩家、致力于构建家庭媒体中心的爱好者,还是喜欢探索“音乐黑科技”的极客,都能跟随指南轻松建立起属于自己的网络广播站。
项目核心:Airstation 简介
打造完全属于你个人的在线广播站。
Airstation 是一个能够自行部署的在线电台(即流媒体音频服务)项目。它非常适合多种应用场景,例如在家庭NAS上播放本地音乐库、发布私人播客节目、进行团队内部通知广播、为户外活动提供背景音乐播音,或者实现远程音乐分享等。该项目旨在帮助你迅速搭建起一个专属于自己或小圈子的音频广播平台。
核心功能特性包括:
- 支持通过Web浏览器直接上传音乐文件
- 提供了播放队列管理功能以及面向听众的极简播放界面
- 采用 HLS (HTTP Live Streaming) 协议来传输音频流,确保兼容性与流畅性
- 使用 SQLite 作为数据存储方案,轻便且无需复杂配置
- 后端音频处理依赖于强大的 FFmpeg 工具进行转码等操作
- 支持通过 Docker 容器实现快速的一键式部署
- 既可以部署为完全私密的广播站,也能作为小范围的在线音乐库使用
详细部署步骤与实践
本文将以威联通(QNAP)NAS作为操作演示环境,具体采用 Docker Compose 方式进行服务部署。
以下是为部署准备的 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
关于配置中的文件映射目录,冒号左侧的路径需要你根据自己NAS的实际存储结构进行相应替换。
对于环境变量 AIRSTATION_JWT_SIGN 的值,你可以使用之前介绍过的工具合集 IT-TOOLS 来生成一个随机密钥,或者直接在终端中执行命令 openssl rand -base64 32 来生成。

将上述配置文件代码根据你的实际情况修改完毕后,打开威联通NAS上的Docker管理工具 Container Station。创建一个新的应用程序项目,并将代码完整粘贴到配置框中,务必注意YAML格式的缩进对齐。检查无误后,即可点击创建按钮启动容器,过程可参考下图。

此外,也附上等效的 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服务了。需要特别留意的是,Airstation设计有两个不同的访问界面。
第一个是管理员专用的控制面板,在浏览器地址栏输入 你的NAS_IP:7331/studio/ 进行访问。请注意末尾的斜杠“/”不可或缺,这一点非常重要。下图展示了通过反向代理后访问控制面板的界面示例。

第二个界面则是面向普通听众的播放界面,直接输入 NAS_IP:7331 或者你设置的反向代理域名即可访问。

若想要管理播放内容,你需要登录到控制面板中进行操作。控制面板界面设计简洁直观,如下图所示。关键一点是,只有当顶部的播放进度条处于激活状态(即有歌曲正在播放)时,第二个用户界面中的听众才能选择并收听广播。

界面中的 🎧 图标显示的是当前在线听众数量,例如在测试时同时用Safari和Chrome浏览器打开播放界面,此处便会显示为两人。
右侧的“曲库”区域,你可以直接关联已映射到容器内的现有音乐目录,也可以后续点击“Add”按钮单独添加歌曲。实际上传的文件会存储在NAS的 /share/Container/airstation/static/track 目录下。“Delete”选项用于从曲库列表中移除条目。
在曲库列表中选中任意歌曲,然后点击“Queue”按钮,即可将其添加到左侧的播放队列中。
播放队列支持功能:点击🎲骰子图标可以随机打乱队列中歌曲的播放顺序;点击“Clear”则会清空当前播放列表,但这并不会删除存储在基础目录中的原始音乐文件。

使用过程中还需要了解以下几点:
听众播放界面目前不显示歌词和歌手信息。第二个用户界面(听众端)在初次加载时默认为暂停状态,需要手动点击播放按钮才能开始收听。该界面不支持随意拖动音频进度条,其播放逻辑类似于观看网络直播——如果中途暂停,再次播放时将从实时流的最新位置开始,而不会保留之前的播放进度。