李岩岩 2cab50db31 feat(build): 配置多平台打包输出
- 添加 .env.web/.desktop/.android/.tv 环境变量文件
- 修改 vite.config.js 支持多平台输出到 dist/{platform}/
- 添加 npm run build:web/desktop/android/tv 命令
- 更新 desktop/android/android-tv/web 各端的资源引用路径
- 更新 build-mac.sh 使用 build:desktop 命令
2026-02-05 14:19:28 +08:00
..

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

注意事项

  1. 跨域问题 - 所有流媒体通过 /proxy/* 接口代理,解决浏览器 CORS 限制
  2. 性能优化 - 静态资源使用 Nginx 缓存API 请求直连 Node
  3. HTTPS - 生产环境建议启用 HTTPS配置 nginx/ssl/ 目录)