Kiln 将上游 HLS 与 DASH 频道汇集到一个入口,对外提供带鉴权的 M3U 播放列表和按需生成的 HLS。整个服务只有一个二进制,DASH 解密与重封装由 Go 原生实现,默认无需 FFmpeg。
三条部署路径
安装脚本
Linux 与 macOS 一条命令装好,重复运行即升级,可直接注册为 systemd 服务。
Docker
core、full、lite 三个镜像变体,附 Compose 模板、健康检查与容器资源自适应。
手动二进制
从 Releases 下载压缩包,校验 SHA256SUMS 后自行摆放;Windows 用内置服务命令挂到后台。
三条路径跑的是同一个二进制,配置模型完全一致,同一份 kiln.toml 换个部署方式不需要改写。
先从源码跑一遍
想在装任何东西之前先看效果,用仓库自带的示例配置直接跑。需要 Go 1.26 或更高版本,原生 DASH 不需要 ffmpeg,只有兼容回退才需要。
git clone https://github.com/babywbx/Kiln.git
cd Kiln
go run ./apps/server -config configs/examples/kiln.toml-config 是必填参数,缺省时进程会直接退出。示例配置在 configs/examples/kiln.toml,同目录下还有一份等价的 kiln.jsonc,两种格式可以任选。
服务默认监听 0.0.0.0:8080,示例账号是 admin / admin,管理界面在 /admin。
三条命令验证
登录拿到 token 之后,播放列表和播放地址都从它派生:
TOKEN=$(curl -s http://127.0.0.1:8080/v1/auth/login \
-H 'content-type: application/json' \
-d '{"username":"admin","password":"admin"}' | jq -r .token)
curl -s http://127.0.0.1:8080/v1/channels -H "authorization: Bearer $TOKEN" | jq
curl -s http://127.0.0.1:8080/v1/playlist.m3u -H "authorization: Bearer $TOKEN"
curl -s "http://127.0.0.1:8080/v1/play/hls-demo/index.m3u8?token=$TOKEN"hls-demo 是示例配置里的频道 id,换成自己的频道 id 即可。/v1/playlist.m3u 只认登录会话,/v1/play/ 下的地址既接受 ?token= 查询参数,也接受 Authorization 请求头。凭据的完整划分见 接口参考。
生产前必改
只有两件事必须在对外之前改掉:登录口令的 bcrypt 哈希,以及会话 JWT 的签名密钥。
go run scripts/hash-password.go 'your-password'
go run scripts/gen-jwt-keys.go ./secrets # 写出 ed25519.pem / ed25519.pub.pem把哈希填进 [[auth.users]] 的 password_hash,把密钥路径填进 [auth] 的 token_private_key_file 与 token_public_key_file,也可以用 KILN_TOKEN_PRIVATE_KEY_FILE 等环境变量注入。完整的鉴权模型见 鉴权与凭据,环境变量清单见 环境变量。