telly 安全配置实用指南:四道防线把 IPTV 代理暴露面降到最低

发布时间:2026/8/19 20:08:33
telly 安全配置实用指南:四道防线把 IPTV 代理暴露面降到最低 telly 安全配置实用指南四道防线把 IPTV 代理暴露面降到最低【免费下载链接】tellyAn IPTV proxy项目地址: https://gitcode.com/gh_mirrors/te/tellytelly 是一个用 Go 编写的 IPTV 代理它把 M3U 播放列表和 XMLTV 节目单翻译成 Plex 可以直接发现的虚拟 DVR 设备。配置得当它安静地待在局域网一角配置不当它可能把带凭据的流地址、完整频道清单甚至设备认证口令一并交给访客。这篇文章不罗列十大最佳实践而是先建立一个三维度的认知框架再给出基础、进阶、高级三档配置方案最后用一张避坑表和一串验证命令帮你收尾。先看一个真实的风险场景假设你在 NAS 上部署了 telly图省事没改任何默认值。Plex 顺利发现了这台虚拟 DVR一切看起来岁月静好。直到有一天你随手打开/lineup.json发现返回的不只是频道号还有上游 M3U 里usernamexxxpasswordxxx形式的完整流地址再翻一下配置Device-Auth还是默认的telly123。默认口令如同没上锁的房门而带凭据的流地址意味着任何能访问到 telly 端口的人都能绕过你的 IPTV 账号体系直接拿你的订阅去拉流。这正是本指南要解决的问题在不改变使用习惯的前提下把 telly 的暴露面系统性地收小。⚠️ 需要先说明telly 本身不提供用户认证它的安全模型建立在部署在可信网络 靠外部手段封口之上所以下面的每一档配置都是在帮你把边界补齐。从三个维度看懂 telly 的安全边界与其背配置项不如先建立整体认知。telly 的安全问题可以收敛到三个维度维度关键配置一句话理解身份Device-Auth、Device-ID、Device-UUID向 Plex 自报家门的门禁卡网络Base-Address、Listen-Address、SSDP告诉别人我在哪、我在哪听文件配置权限、日志级别、调试端点凭据藏在哪、从哪泄露身份维度。telly 在 Plex 眼里是一台 HDHomeRun 虚拟 DVRDevice-Auth就是这个设备的认证口令。默认值telly123在源码里写得明明白白局域网内任何懂行的人都可以按 HDHomeRun 协议尝试接管它。另外要注意Device-ID、Device-UUID和端口三者共同构成一台虚拟 DVR 的唯一键——如果你跑多个 telly 实例却共用这套组合Plex 会分不清谁是谁。网络维度。Base-Address是告诉 Plex 我在哪的地址Listen-Address是进程实际监听的地址。这两个概念容易混也是踩坑重灾区Base-Address写成0.0.0.0时 telly 会直接拒绝启动写成localhost时 Plex 会去连它自己而不是你的机器。文件维度。M3U 和 EPG 的 URL 常常内嵌账号密码这些凭据会出现在配置文件、部分调试端点返回体里也可能被写进日志。telly 在日志中会把username、password、token替换为REDACTED但有两个例外值得警惕日志级别设为debug时启动阶段会把整份配置以 JSON 形式 dump 出来/debug.json端点会原样返回频道数据结构。按需选档三套配置方案下面按部署场景分三档从够用到硬核你可以对号入座不必一次配满。基础档局域网单实例先改口令、把地址配对适用场景Plex 与 telly 在同一局域网仅内网使用。这一档的目标是把默认值全部清掉让服务跑得对、不漏风。# 基础档局域网单实例 [Discovery] Device-Auth k7#Qp2!vZ9m # 12 位以上混合口令别再用 telly123 Device-ID 8f3aC9d1 # 8 位字母数字避开 12345678 Device-UUID # 留空即可会自动由 Device-ID 派生 [Web] Base-Address 192.168.1.100:6077 # 必须是本机实际内网 IP Listen-Address 0.0.0.0:6077 # 保持监听所有接口 [Log] Level info # 生产环境别开 debug Requests false # 排查问题时再临时打开这里容易踩坑的是Base-Address它是 Plex 用来回连 telly 的地址必须填写 telly 所在机器的真实 IP。项目源码中的validateConfig()会在这里把关——地址解析失败直接 panic0.0.0.0同样被拒。另外提醒一句新版 telly 已把大部分命令行参数标记为弃用建议把配置统一收敛到配置文件里别在启动命令上散落一地。进阶档Docker 部署配置只读、凭据走环境变量适用场景跑在 NAS 或服务器上用 Docker 管理。这一档的目标是凭据不进镜像、配置不可篡改、端口不裸奔。services: telly: image: tellytv/telly:dev-ffmpeg ports: - 127.0.0.1:6077:6077 # 只绑回环地址把 6077 藏起来 environment: - TELLY_DISCOVERY_DEVICE_AUTHk7#Qp2!vZ9m # 敏感项交给环境变量 - TELLY_WEB_BASE_ADDRESS192.168.1.100:6077 volumes: - ./telly.config.toml:/etc/telly/telly.config.toml:ro # 只读挂载 restart: unless-stopped三个要点其一telly 支持TELLY_*前缀的环境变量覆盖如上面的TELLY_DISCOVERY_DEVICE_AUTH把口令这类敏感项从配置文件里挪出来配置文件本身就能安全地备份或纳入版本管理其二挂载加:ro只读即使容器被攻破也无法篡改配置其三端口只映射到127.0.0.1让外部请求必须先经过你控制的入口比如反向代理而不是直接撞上 telly。高级档公网访问或多实例把 6077 藏进反向代理适用场景需要在外网看直播或一台主机跑多套 telly。这一档的目标是彻底收紧暴露面并加上传输层保护。先用反向代理以 Nginx 为例接管对外流量telly 只监听回环server { listen 443 ssl; location / { proxy_pass http://127.0.0.1:6077; # 此处可叠加 basic auth 或 IP 白名单作为前置访问控制 } }再配合防火墙把端口封闭起来比如只允许内网网段访问 6077公网只开放 443。这样/lineup.json、/debug.json这些会吐出真实流地址的端点就不会被公网随手拉到。如果是多实例记住三件套原则——每个实例都要更换Device-ID、Device-UUID或至少换端口否则 Plex 会把这些实例识别成同一台设备频道列表互相打架。一张表避开最常见的坑常见错误后果正确做法Base-Address 写成 0.0.0.0启动即 panic服务直接起不来填 telly 所在机器的实际 IP保留默认 Device-Authtelly123局域网内设备可按协议接管虚拟 DVR换成 12 位以上混合口令日志级别设为 debug整份配置 JSON 打进日志URL 凭据可能泄露生产用 info排查完降回Requests 长期开启每条请求的 IP、UA、路径全部落盘需要排查时再打开配置目录其他用户可读M3U/EPG 里的账号密码随文件泄露对配置文件执行 chmod 600Docker 配置以可写方式挂载容器被攻破后可篡改配置挂载时加 :ro 只读6077 端口直接暴露公网任何人可拉取 /lineup.json 拿到全频道流地址反代 防火墙双层收口四条命令验证配置是否生效配置改完别急着宣布完工用下面几步做一次体检启动验证telly -c /etc/telly/telly.config.toml启动日志出现telly is live and on the air!且无 panic 即通过若出现 base URL 相关报错回头检查Base-Address。监听验证执行ss -tlnp | grep 6077确认 telly 实际监听的地址与你的预期一致回环还是全网卡。端点验证在浏览器打开/discover.json与/lineup.json确认返回内容里没有多余的凭据再从未授权的主机尝试访问/debug.json应被防火墙或反代拒之门外。日志验证翻看运行日志确认 URL 中的username、password、token已被替换为REDACTED没有明文凭据落盘。最后说句实在话安全不是一次配置而是一个持续过程。上游 IPTV 的账号密码要定期轮换telly 的新版本要跟进测试配置文件要备份每次改动顺手在注释里记一笔。把上面三档方案当成起点而不是终点你的 IPTV 代理才能长期安稳地跑下去。✅作为延伸项目的README.md里有完整示例配置main.go的validateConfig()展示了地址校验与启动保护逻辑lineup.go中的日志脱敏实现也值得翻一翻——理解这些源码级细节能帮你把配置调得更贴合自己的环境。【免费下载链接】tellyAn IPTV proxy项目地址: https://gitcode.com/gh_mirrors/te/telly创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考