Sign inSign up

pcject/iptv-proxy

By pcject

Updated about 1 month ago

Authenticated HLS reverse proxy with recursive playlist rewriting and AAC audio compatibility mode.

Image
0

440

pcject/iptv-proxy repository overview

IPTV HLS Proxy

轻量级、带鉴权的 IPTV HLS 反向代理。适合在能够访问运营商 IPTV 源的家庭网络中运行,再通过端口映射或 Nginx Proxy Manager 提供远程访问。

功能

  • 自动跟随 IPTV 入口的多次 HTTP 302 重定向
  • 递归改写并代理 HLS 主清单、子清单、密钥和 TS 分片
  • 根据实际请求的域名、端口和协议自动生成频道地址
  • Token 鉴权和 HMAC URL 签名,避免成为开放代理
  • /iptv:原始音视频直通模式
  • /iptv-aac:视频保持 H.264 原画质,MP2/AC3 音频实时转换为 AAC-LC
  • 支持 linux/amd64linux/arm64

Docker Compose

services:
  iptv-proxy:
    image: pcject/iptv-proxy:${IPTV_PROXY_TAG:-1.0.0}
    container_name: iptv-proxy
    restart: unless-stopped
    ports:
      - "${IPTV_PORT:-8080}:8080"
    environment:
      PLAYLIST_URL: "${PLAYLIST_URL:?请设置 PLAYLIST_URL}"
      IPTV_TOKEN: "${IPTV_TOKEN:?请设置 IPTV_TOKEN}"
      PROXY_SECRET: "${PROXY_SECRET:?请设置 PROXY_SECRET}"
      LISTEN_ADDR: ":8080"
      BASE_PATH: "${BASE_PATH:-/iptv}"
      COMPAT_BASE_PATH: "${COMPAT_BASE_PATH:-/iptv-aac}"
      MAX_TRANSCODES: "${MAX_TRANSCODES:-6}"
      PUBLIC_BASE_URL: "${PUBLIC_BASE_URL:-}"

将真实配置放在同目录的 .env 中,不要写入镜像:

PLAYLIST_URL=https://example.com/your-playlist.txt
IPTV_TOKEN=请替换为随机访问令牌
PROXY_SECRET=请替换为随机签名密钥
IPTV_PROXY_TAG=1.0.0
IPTV_PORT=8080

推荐生成密钥:

openssl rand -hex 24
openssl rand -hex 32

播放地址

原始直通订阅:

http://服务器地址:8080/iptv/playlist.m3u?token=你的IPTV_TOKEN

AAC 兼容订阅(适合飞牛影视等客户端):

http://服务器地址:8080/iptv-aac/playlist.m3u?token=你的IPTV_TOKEN

健康检查:

http://服务器地址:8080/iptv/healthz

Nginx Proxy Manager

添加 Custom Location /iptv,上游设置为本容器的 8080 端口。该规则可同时覆盖 /iptv//iptv-aac/。不要在 proxy_pass 后添加会剥离路径的 /

注意事项

  • 服务必须运行在能够直接访问 IPTV 上游源的网络中。
  • 1080p 频道通常会占用较高的上行带宽。
  • AAC 模式需要额外 CPU;视频不会重新编码。
  • 请遵守运营商协议和适用法律,仅转发你有权使用的内容。

Tag summary

Content type

Image

Digest

sha256:7044c7f86

Size

55.2 MB

Last updated

about 1 month ago

docker pull pcject/iptv-proxy