🎬 MoonTV 是一个开箱即用的、跨平台的影视聚合播放器。它基于 Next.js 14 + Tailwind CSS + TypeScript 构建,支持多资源搜索、在线播放、收藏同步、播放记录、本地/云端存储,让你可以随时随地畅享海量免费影视内容。
| 分类 | 主要依赖 |
|---|---|
| 前端框架 | Next.js 14 · App Router |
| UI & 样式 | Tailwind CSS 3 |
| 语言 | TypeScript 4 |
| 播放器 | VidStack · HLS.js |
| 代码质量 | ESLint · Prettier · Jest |
| 部署 | Docker · Vercel · EdgeOne.ai |
本项目支持 Vercel、Docker、Cloudflare 和 EdgeOne.ai 部署。
推荐使用,零运维成本,免费额度足够个人使用。
config.json,请直接修改 Fork 后仓库中该文件。main 分支将自动触发重新构建。部署完成后即可通过分配的域名访问,也可以绑定自定义域名。
config.json,请直接修改 Fork 后仓库中该文件。main 分支将自动触发重新构建。腾讯云 EdgeOne Pages 服务,支持静态站点 + 无服务器函数,适合国内用户。
Other./outpnpm gen:runtime && cp next.config.edgeone.js next.config.js && pnpm next buildpnpm install --frozen-lockfileconfig.json,请直接修改 Fork 后仓库中该文件。main 分支将自动触发重新构建。适用于自建服务器 / NAS / 群晖等场景。
# 拉取预构建镜像
docker pull ghcr.io/senshinya/moontv:latest
# 运行容器
# -d: 后台运行 -p: 映射端口 3000 -> 3000
docker run -d --name moontv -p 3000:3000 ghcr.io/senshinya/moontv:latest
访问 http://服务器 IP:3000 即可。
version: '3.9'
services:
moontv:
image: ghcr.io/senshinya/moontv:latest
container_name: moontv
restart: unless-stopped
ports:
- '3000:3000'
environment:
- PASSWORD=your_password
# 如需自定义配置,可挂载文件
# volumes:
# - ./config.json:/app/config.json:ro
执行:
docker compose up -d
随后同样访问 http://服务器 IP:3000。
Pull Bot 会反复触发无效的 PR 和垃圾邮件,严重干扰项目维护。作者可能会直接拉黑所有 Pull Bot 自动发起的同步请求的仓库所有者。
推荐做法:
建议在 fork 的仓库中启用本仓库自带的 GitHub Actions 自动同步功能(见 .github/workflows/sync.yml)。
如需手动同步主仓库更新,也可以使用 GitHub 官方的 Sync fork 功能。
| 变量 | 说明 | 可选值 | 默认值 |
|---|---|---|---|
| PASSWORD | 实例访问密码,留空则不启用密码保护 | 任意字符串 | (空) |
| NEXT_PUBLIC_STORAGE_TYPE | 播放记录/收藏的存储方式 | localstorage(本地浏览器存储)、database(后端数据库,暂不支持) | localstorage |
| NEXT_PUBLIC_ENABLE_BLOCKAD | 开启智能去广告功能(实验性) | true / false | false |
| NEXT_PUBLIC_SEARCH_MAX_PAGE | 搜索接口可拉取的最大页数 | 1-50 | 5 |
| NEXT_PUBLIC_AGGREGATE_SEARCH_RESULT | 搜索结果默认是否按标题和年份聚合 | true / false | true |
所有可自定义项集中在根目录的 config.json 中:
{
"cache_time": 7200,
"api_site": {
"dyttzy": {
"api": "http://caiji.dyttzyapi.com/api.php/provide/vod",
"name": "电影天堂资源",
"detail": "http://caiji.dyttzyapi.com"
}
// ...更多站点
}
}
cache_time:接口缓存时间(秒)。api_site:你可以增删或替换任何资源站,字段说明:
key:唯一标识,保持小写字母/数字。api:资源站提供的 vod JSON API 根地址。name:在人机界面中展示的名称。detail:(可选)部分无法通过 API 获取剧集详情的站点,需要提供网页详情根 URL,用于爬取。MoonTV 支持标准的苹果 CMS V10 API 格式。
修改后 无需重新构建,服务会在启动时读取一次。
为了您的安全和避免潜在的法律风险,我们强烈建议在部署时设置密码保护:
PASSWORD:为您的实例设置一个强密码MIT © 2025 MoonTV & Contributors