网络电台管理套件AzuraCast

昨天杨浦又出现了疫情

所以本周筛查调整为了三次


本文完成于 4 月,等 8 月份想起准备发布时才发现,由于版本的变更,原来的截图基本上都已不可用,相当于又重写了一遍,😂,至于为什么这么拖拉?老苏在文末会有交代。

什么是 AzuraCast ?

AzuraCast 是一个自托管的一体化网络广播管理套件。使用其简单的安装程序和强大而直观的网络界面,您可以在几分钟内启动一个完全正常工作的网络广播电台。AzuraCast 适用于所有类型和规模的网络广播电台,甚至可以在最实惠的 VPS 网络主机上运行。AzuraCast 目前是测试版软件,支持 Web 广播的两个黄金标准:IceCast(v2.4)ShoutCast(v2)

老苏个人觉得,AzuraCast 作为音频直播,可以搭一个,用来给家里的小朋友讲讲故事,或者播放背景音乐都是很不错的,当然这点功能用 Audiobookshelf 做点播也是可以的。

官网提供了演示:https://demo.azuracast.com/

  • Username: demo@azuracast.com
  • Password: demo

命令行安装

在群晖上以 Docker 方式安装。

如果你是以 root 或者具有 root 权限的用户登录,可以不需要加前面的 sudo

下载镜像

考虑到镜像比较大,而且镜像库不是我们常用的 dockerhub ,而是 ghcr.io,所以老苏强烈建议你先下载好镜像,而不是通过脚本下载。

老苏用过多合一的镜像 ghcr.io/azuracast/azuracast:stable,也用过单独的版本

需要注意的是,老苏下载的是稳定版(stable),这个多合一容器中包含整个应用程序、数据库、缓存以及广播控件;

SSH 登录带群晖,通过命令行方式下载

1
2
# 下载镜像
docker pull ghcr.io/azuracast/azuracast:stable

ghcr.io 的镜像如何下载,可以参考『 下一代协作型知识库AFFiNE 』的相关章节

最好是镜像下载成功了才开始执行下面的操作,当然这不是必须的,只是老苏的个人建议

下载脚本

SSH 客户端命令行中依次执行下面的命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 新建文件夹 azuracast 和 子目录
mkdir -p /volume2/docker/azuracast/stations

# 进入 azuracast 目录
cd /volume2/docker/azuracast

# 修改 stations 目录权限
chmod 777 stations

# 下载 docker.sh 文件
curl -fsSL https://raw.githubusercontent.com/AzuraCast/AzuraCast/main/docker.sh > docker.sh

# 如果下不动可以试试加载代理的
curl -fsSL https://ghproxy.com/raw.githubusercontent.com/AzuraCast/AzuraCast/main/docker.sh > docker.sh

# 修改 docker.sh 权限
chmod a+x docker.sh

如果不修改 stations 目录权限,在创建电台时,有可能会显示没有创建目录的权限

配置端口

接下来开始配置端口,我们打算用 2080(http)2443(https)2022(sftp)端口,如果你的这几个端口已使用,可以试试其他的端口

1
2
3
4
5
# 查看端口占用
netstat -tunlp | grep 端口号

# 配置相关的环境变量
sudo ./docker.sh setup-ports

这一步会在当前目录生成 .env 文件,现在查看到的文件内容

指定目录

新建 docker-compose.override.yml 文件,内容如下:

1
2
3
4
services:
web:
volumes:
- /volume2/docker/azuracast/stations:/var/azuracast/stations

将其上传到 azuracast 目录

服务配置

1
2
# 设置镜像的版本
sudo ./docker.sh install
  • 需要选择版本,Roling Release 或者 Stable,老苏输入了小写 y,选择了 Stable 版本;
  • 选择了不更新脚本,输入了小写的 n

如果直接退出说明下载脚本遇到了问题,一般都是 curl 错误,例如:

  • curl: (35) Unknown SSL protocol error in connection to raw.githubusercontent.com:443
  • curl: (28) Operation timed out after 300361 milliseconds with 0 out of 0 bytes received

如果你的网络支持科学上网,下面的内容可能会有帮助

1
2
3
4
# 加入白名单
github.com
githubusercontent.com
ghcr.io

如果安装失败继续执行 sudo ./docker.sh install

但是需要注意版本的选择,这次 y 是选择 Stable 版本,下一次则是 N 才是 Stable 版本,一定要看仔细

中间也会有 .FileNotFoundError 报错,但是程序如果可以继续执行的话,就可以不用管

选择语言 zh_CN

AzuraCast 安装都选择 no

有可能会遇到 AzuraCast.ERROR

但只要看到 Creating azuracast ... done 就成功了

除了下载了所需的镜像外,还生成了一些设置文件

如果环境稳定,也会帮你完成镜像的安装,如果一切正常,你可以跳到 运行 章节,否则的话,请继续往下看

编辑环境

vi 编辑 .env 文件,启用下面的内容

需要注意,现在的 .env 文件和开始的 .env 文件不同,增加了大量中文的注释

1
2
AZURACAST_PUID=1000
AZURACAST_PGID=1000

如果你不习惯 vi 编辑器,可以在 File Station 中,将 .env 重命名为 .env.txt 然后再编辑,记得完成后重命名为 .env

一键启动

需要先停止然后再启动,以便后面修改的内容生效

1
2
3
4
5
6
7
8
# 一键停止
sudo docker-compose down

# 如果要删除所有卷,包括数据库,末尾加 -v 标志
sudo docker-compose down -v

# 一键启动
sudo docker-compose up -d

如果反复启动都存在问题,建议用 sudo docker-compose down -v 清除干净再启动

运行

在浏览器中输入 http://群晖IP:2080 就能看到注册管理员用户界面

软件会自动显示中文,不需要另外设置

只有都符合要求时,才会出现 创建账号 按钮

登录后进入设置向导,带星号的是必填的,【个人资料】中,老苏就改了下面两项,其他的都是用的默认值,请根据自己的需要设置

  • 名称:例如 laosu radio
  • 时区:选 Asia/Shanghai(UTC+8)

【自动DJ】中,老苏勾选了 允许歌曲请求

最后是一些系统设置

  • 网站基础网址:例如: http://群晖IP:2080
  • 保留的播放历史记录天数:选了 最近 14 天
  • 如果你使用了反代,一定要勾选 使用网络代理进行广播

设置完成

上传 音乐文件

勾选所有上传的文件

保存为播放列表

只有将音乐添加到播放列表中才能流式传输

开始电台,来启动广播服务和 AutoDJ 服务

开始电台 按钮

公开页面 中就能看到了并进行收听了

当然,AzuraCast 的功能远不止这些,有兴趣可以深入研究。

遗留问题

老苏在 PC 浏览器中没有声音(试过 chromesafariEdge),浏览器中显示有声音,但是听不到,也尝试过启用 Enable HTTP Live Streaming (HLS),结果时一样的

但是在手机浏览器中则正常(试过小米浏览器和 Edge,不过音量偏小),实在有些不解,这也是为什么从 4 月份拖到现在的主要原因。

次要原因了么是 AzuraCast 的安装过程中对网络有较高的要求,如果没有稳定的科学上网环境,会让原本简单的安装变得繁琐且易出错。

参考文档

AzuraCast/AzuraCast: A self-hosted web radio management suite, including turnkey installer tools for the full radio software stack and a modern, easy-to-use web app to manage your stations.
地址:https://github.com/AzuraCast/AzuraCast

Installing AzuraCast on a Synology NAS | AzuraCast Docs
地址:https://docs.azuracast.com/en/getting-started/installation/synology

Help with installing Azuracast on Synology Docker · Issue #3407 · AzuraCast/AzuraCast
地址:https://github.com/AzuraCast/AzuraCast/issues/3407

配置 HTTPS 的公共站点上没有声音 · 问题 #1786 · AzuraCast/AzuraCast
地址:https://github.com/AzuraCast/AzuraCast/issues/1786