一、前言

# LunaTV-Sync 本地采集源同步服务

定时从 GitHub 上游 [hafrey1/LunaTV-config](https://github.com/hafrey1/LunaTV-config)

拉取最新采集源配置,本地缓存并同时输出 MoonTV/LunaTVTVBox

两种格式的订阅接口。上游每小时自动测活并剔除失效源,本服务定时同步,

即可让 MoonTV、TVBox 等客户端始终使用可用的采集源。

感谢hafrey1大大

二、部署教程

下载地址:
https://github.com/yexuu/lunatv-local
https://git.yexu.fun/share/lunatv-local  (这个访问需要ipv6)


### 方式一:Docker(推荐)

```bash
cd lunatv_local
docker compose up -d --build
docker compose logs -f    # 应看到三个版本 "同步完成"
```

`data/` 目录通过卷映射持久化在宿主机,容器重建后自动沿用旧缓存。

### 方式二:离线打包部署(无外网/无源码机器)

在能构建镜像的机器上打包:

```bash
cd lunatv_local
bash package.sh    # 无 docker 权限时: sudo bash package.sh
# 产物: dist/lunatv-sync-deploy.tar.gz
```

拷贝到目标机器后一键导入并启动:

```bash
tar -xzf lunatv-sync-deploy.tar.gz
cd lunatv-sync-deploy
bash deploy.sh     # docker load 导入镜像 + 启动服务
```

目标机器只需安装 Docker,无需源码、无需访问 GitHub。

### 方式三:裸机 + systemd

```bash
# Python 3.9+
pip install -r requirements.txt
cp .env.example .env      # 可选,全部有默认值
python3 lunatv_sync.py    # 前台试运行

# 常驻运行
sudo tee /etc/systemd/system/lunatv-sync.service <<'EOF'
[Unit]
Description=LunaTV-config sync service
After=network-online.target

[Service]
WorkingDirectory=/opt/lunatv_local
ExecStart=/usr/bin/python3 /opt/lunatv_local/lunatv_sync.py
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl enable --now lunatv-sync
## 订阅接口

| 路径 | 说明 |
| --- | --- |
| `/config.json` | MoonTV 格式,默认版本(默认 jin18) |
| `/tvbox.json` | TVBox 格式,默认版本 |
| `/config/jin18.json` | MoonTV 格式,纯净版 |
| `/config/jingjian.json` | MoonTV 格式,含成人版 |
| `/config/full.json` | MoonTV 格式,完整版 |
| `/tvbox/jin18.json` | TVBox 格式,纯净版 |
| `/tvbox/jingjian.json` | TVBox 格式,含成人版 |
| `/tvbox/full.json` | TVBox 格式,完整版 |
| `/status` | 各版本最后同步时间与源数量 |

客户端填写示例(IP 替换为部署机地址):

- **MoonTV**:管理后台"配置订阅"填
  `http://192.168.x.x:8899/config.json`,
  或定时拉取该地址覆盖 `config.json`
- **TVBox**:配置地址填 `http://192.168.x.x:8899/tvbox.json`
## 配置项

全部通过环境变量配置(裸机可用 `.env` 文件,Docker 在
`docker-compose.yml` 的 `environment` 中修改):

| 变量 | 默认值 | 说明 |
| --- | --- | --- |
| `LUNATV_DEFAULT_SOURCE` | `jin18` | `/config.json`、`/tvbox.json` 返回的默认版本 |
| `LUNATV_PORT` | `8899` | HTTP 服务端口 |
| `LUNATV_REFRESH_MINUTES` | `360` | 自动同步间隔(分钟) |
| `LUNATV_MIRROR_PREFIX` | 内置列表 | GitHub 加速镜像前缀,逗号分隔多个;默认内置 `ghproxy.net`、`ghfast.top`、`gh-proxy.com`,官方地址失败/超时自动按序切换 |
| `LUNATV_DATA_DIR` | `data` | 缓存目录(Docker 内固定为 `/app/data`) |