Core 与 Full 可以直接提供 HTTPS。你可以让全部接口共用一个 TLS 监听器,也可以保留一个 HTTP 播放端口,并把控制台和管理接口放到单独的 HTTPS 端口。Lite 不支持 TLS。
选择监听方式
| 模式 | 配置 | 适合场景 |
|---|---|---|
| 全部 HTTPS | tls_enabled = true,不填 tls_listen |
证书已被播放器信任,或前后端都应只走 TLS |
| 控制台 HTTPS,播放 HTTP | tls_enabled = true,另填 tls_listen |
控制台需要安全上下文,但播放器不能接受自签名证书 |
全部接口使用 HTTPS
[server]
listen = "0.0.0.0:8080"
public_base_url = "https://kiln.example.com:8080"
tls_enabled = true重启后,listen 只接受 HTTPS。public_base_url 必须使用播放器实际可达的 HTTPS 地址,否则生成的播放列表会带错协议或端口。
分离控制台与播放
[server]
listen = "0.0.0.0:8080"
tls_listen = "0.0.0.0:8443"
public_base_url = "http://kiln.lan:8080"
tls_enabled = true重启后,打开 https://kiln.lan:8443/admin。TLS 端口提供全部接口;HTTP 端口只保留下列兼容面:
/healthz、/readyz、/metrics/v1/epg.xml、/v1/epg.xml.gz、/v1/logo/{id}/p/{token}/playlist.m3u与/p/{token}/play/...- 仅当
security.play_require_auth = false时,公开的/v1/playlist.m3u与/v1/play/...
HTTP 上访问其它 GET 或 HEAD 路径时,Kiln 会重定向到 TLS 端口。写请求、带 Authorization 的请求和带 ?token= 的请求不会重放到 HTTPS,而是返回 403 与 tls_required。
tls_listen 不会自动修改 public_base_url。分离模式下,想让播放器走 HTTP,就把公开地址设为 http://<播放主机>:<listen 端口>;设为 TLS 地址时,生成的播放链接仍然使用 HTTPS。
证书
同时设置 tls_cert_file 与 tls_key_file 即可使用自己的 PEM 证书:
[server]
tls_enabled = true
tls_cert_file = "/etc/kiln/tls/fullchain.pem"
tls_key_file = "/etc/kiln/tls/privkey.pem"两项都留空时,Kiln 会在 {data_dir}/tls/kiln.crt 与 kiln.key 生成并复用自签名证书。证书覆盖 localhost、当前网络接口、public_base_url 主机、tls_listen 的具体主机,以及 security.public_hosts。出现证书未覆盖的必要主机或距离到期不足 30 天时会重新签发;删除主机不会替换仍然有效的证书。旧版本自动生成的 CA 证书会在升级后首次加载自动证书时一次性替换为 leaf 证书。
浏览器通常会把自动生成的证书标为不受信任。它只适合客户端已接受该证书的受控环境;普通客户端需要信任服务时,请配置为部署主机签发的证书。始终妥善保管 kiln.key。
Docker
分离监听需要同时发布两个端口:
services:
kiln:
image: ghcr.io/babywbx/kiln:core
ports:
- "8080:8080"
- "8443:8443"镜像自带的 Core 与 Full 健康检查会先探测 HTTPS,再回退到 HTTP。手动使用 kiln -healthcheck 时会校验证书;分离模式下可直接探测 http://127.0.0.1:8080/healthz,不依赖 TLS 证书。
排查
server.tls_listen must differ from server.listen:两个监听地址重叠。通配地址与同端口的具体地址也算重叠,例如0.0.0.0:8080与127.0.0.1:8080;给 TLS 分配另一个端口。tls_cert_file and tls_key_file must be set together:只配置了证书或私钥其中之一。403 tls_required:请求把凭据发到了 HTTP 端口,改用 TLS 端口;播放器要走 HTTP 时改用路径式播放密钥。- 播放列表里的协议或端口不对:修改设置页中的公开访问地址。配置文件与
KILN_PUBLIC_BASE_URL在 Core 与 Full 中只负责数据库尚未建立该设置时的初始值。 - 浏览器提示证书不受信任:改用该浏览器接受的证书,并确认访问主机包含在证书覆盖列表中。