# IPTV Web Docker 版

基于 Node.js + Express 的 IPTV Web 服务端，提供：

- 📺 频道列表 API
- 🔀 M3U8/HLS 流代理（解决跨域）
- 📦 Docker 一键部署
- 🚀 可选 Nginx 反向代理

## 快速开始

### 1. 构建并启动

```bash
# 基础版本
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`，更新方式：

```bash
# 方法1：重新构建
docker-compose up -d --build

# 方法2：挂载数据卷（已配置）
# 修改 ui/dist-web/api/result.txt 后自动生效
```

## 环境变量

| 变量 | 默认值 | 说明 |
|------|--------|------|
| `PORT` | 3000 | 服务端口号 |
| `NODE_ENV` | production | 运行环境 |

## 单独运行（不依赖 Docker）

```bash
cd web
npm install
npm start
```

## 注意事项

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