自托管互联网广播电台Airstation
Airstation是一个自托管的Web应用程序,用于通过Internet流式传输音乐。它具有一个简单的界面,用于上传曲目和管理播放队列,以及一个供听众使用的简约播放器。在后台,它使用HLS通过HTTP流式传输音乐,将数据存储在SQLite中,并利用FFmpeg进行音频处理 — 所有这些都打包在一个紧凑的Docker容器中,以便于部署。

简介
什么是 Airstation ?
Airstation是一个自托管的Web应用程序,用于通过Internet流式传输音乐。它具有一个简单的界面,用于上传曲目和管理播放队列,以及一个供听众使用的简约播放器。在后台,它使用HLS通过HTTP流式传输音乐,将数据存储在SQLite中,并利用FFmpeg进行音频处理 — 所有这些都打包在一个紧凑的Docker容器中,以便于部署。
主要特点
- 自托管:用户可以自行部署,完全控制音频流媒体。
- 简洁界面:易于使用的界面,方便上传和管理音乐。
- HTTP 流媒体:通过
HLS(HTTP Live Streaming)技术进行音乐流媒体传输。 - 数据存储:使用
SQLite存储数据,确保轻量级和高效。 - 音频处理:利用
FFmpeg进行音频处理,提供高质量的音频流。
应用场景
- 个人在线电台:用户可以创建自己的在线电台,分享音乐。
- 活动直播:用于活动或聚会中的音乐播放。
- 社区广播:帮助社区组织共享音乐或播客内容。

Airstation 为音乐爱好者提供了一个灵活且易于使用的平台,满足个人和小型组织的音乐流媒体需求。
安装
在群晖上以 Docker 方式安装。
在注册表中搜索 airstation ,选择第一个 cheatsnake/airstation,版本选择 latest。
本文写作时,
latest版本对应为1.0.0-beta.4;

卷
在 docker 文件夹中,创建一个新文件夹 airstation,并在其中建两个子文件夹 data 和 static
| 文件夹 | 装载路径 | 说明 |
|---|---|---|
docker/airstation/data |
/app/storage |
存放数据库 |
docker/airstation/static |
/app/static |
存放上传的音乐文件和 HLS 切片文件等 |

端口
本地端口不冲突就行,不确定的话可以用命令查一下
# 查看端口占用
netstat -tunlp | grep 端口号
| 本地端口 | 容器端口 |
|---|---|
7331 |
7331 |

环境
| 可变 | 值 |
|---|---|
AIRSTATION_SECRET_KEY |
用来登录电台控制面板的密钥 |
AIRSTATION_JWT_SIGN |
用于签名 JWT 会话的密钥 |
使用长度至少为 10 个字符的随机字符串生成器来为这些变量生成值!可以使用 openssl rand -base64 32 或者 Bitwarden来生成

命令行安装
如果你熟悉命令行,可能用 docker cli 更快捷
# 新建文件夹 airstation 和 子目录
mkdir -p /volume1/docker/airstation/{data,static}
# 进入 airstation 目录
cd /volume1/docker/airstation
# 运行容器
docker run -d \
--restart unless-stopped \
--name airstation \
-p 7331:7331 \
-v $(pwd)/data:/app/storage \
-v $(pwd)/static:/app/static \
-e AIRSTATION_SECRET_KEY=FSbLEAEyfNyYNLOWuijtTFK1J/t022uyHkjIp0s4laM= \
-e AIRSTATION_JWT_SIGN=CG/Lnxl/TRx9KDzC/XI0IU6IaHAplJgn0YQvrLvEgL4= \
cheatsnake/airstation:latest
也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件
services:
airstation:
image: cheatsnake/airstation:latest
container_name: airstation
restart: unless-stopped
ports:
- "7331:7331"
volumes:
- ./data:/app/storage
- ./static:/app/static
environment:
AIRSTATION_SECRET_KEY: FSbLEAEyfNyYNLOWuijtTFK1J/t022uyHkjIp0s4laM=
AIRSTATION_JWT_SIGN: CG/Lnxl/TRx9KDzC/XI0IU6IaHAplJgn0YQvrLvEgL4=
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:7331/"]
interval: 10s
timeout: 5s
retries: 3
start_period: 10s
然后执行下面的命令
# 新建文件夹 airstation 和 子目录
mkdir -p /volume1/docker/airstation/{data,static}
# 进入 airstation 目录
cd /volume1/docker/airstation
# 将 docker-compose.yml 放入当前目录
# 一键启动
docker-compose up -d

运行
后台
在浏览器中输入 http://群晖IP:7331/studio ,输入环境变量 AIRSTATION_SECRET_KEY 的值

登录成功后的主界面

点 Add 添加 mp3 音乐文件

处理完成后,会显示在 Library 中

勾选后,点 Queue

等添加到 Live queue 后,点播放按钮

播放
打开 http://192.168.0.197:7331。如果后台没有点播放按钮,你只会在下面看到 Stream offline

而后台点了播放按钮,会看到当前播放的曲名

进后台可以看到播放的进度

点中间的播放键,就可以听到音乐了

如果没声,开关扬声器试试

参考文档
cheatsnake/airstation: 🎵 Your own online radio station
地址:https://github.com/cheatsnake/airstation
Airstation: self-hosted Internet radio station : r/selfhosted
地址:https://www.reddit.com/r/selfhosted/comments/1kjyo2d/airstation_selfhosted_internet_radio_station/
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)