- 添加 Express 服务端,提供频道 API - 添加 M3U8/TS 流代理,解决跨域问题 - 添加 Dockerfile 和 docker-compose.yml - 添加 Nginx 反向代理配置 - 支持多阶段构建,自动打包前端
1.9 KiB
1.9 KiB
IPTV Web Docker 版
基于 Node.js + Express 的 IPTV Web 服务端,提供:
- 📺 频道列表 API
- 🔀 M3U8/HLS 流代理(解决跨域)
- 📦 Docker 一键部署
- 🚀 可选 Nginx 反向代理
快速开始
1. 构建并启动
# 基础版本
docker-compose up -d
# 带 Nginx 的版本
docker-compose --profile nginx up -d
2. 访问
http://localhost:3000 # 直接访问 Node 服务
http://localhost # 通过 Nginx(如果启用)
API 接口
| 接口 | 说明 |
|---|---|
GET /health |
健康检查 |
GET /api/channels |
获取频道列表 |
GET /proxy/m3u8?url=xxx |
代理 M3U8 播放列表 |
GET /proxy/ts?url=xxx |
代理 TS 视频片段 |
GET /proxy/stream?url=xxx |
通用流代理 |
目录结构
web/
├── src/
│ └── index.js # Express 服务端
├── nginx/
│ └── nginx.conf # Nginx 配置
├── public/ # 前端静态文件(构建时复制)
├── Dockerfile # Docker 构建
├── docker-compose.yml # 编排配置
└── README.md
更新频道数据
频道数据来自 ui/dist-web/api/result.txt,更新方式:
# 方法1:重新构建
docker-compose up -d --build
# 方法2:挂载数据卷(已配置)
# 修改 ui/dist-web/api/result.txt 后自动生效
环境变量
| 变量 | 默认值 | 说明 |
|---|---|---|
PORT |
3000 | 服务端口号 |
NODE_ENV |
production | 运行环境 |
单独运行(不依赖 Docker)
cd web
npm install
npm start
注意事项
- 跨域问题 - 所有流媒体通过
/proxy/*接口代理,解决浏览器 CORS 限制 - 性能优化 - 静态资源使用 Nginx 缓存,API 请求直连 Node
- HTTPS - 生产环境建议启用 HTTPS(配置
nginx/ssl/目录)