🎬 MoonTV 是一个开箱即用的、跨平台的影视聚合播放器。它基于 Next.js 14 + Tailwind CSS + TypeScript 构建,支持多资源搜索、在线播放、收藏同步、播放记录、本地/云端存储,让你可以随时随地畅享海量免费影视内容。
没有自己域名和服务器也通过cloudflare的Pages打造自己的影视站
需要用到的资源:
- 一个github的账号。官网:https://github.com/
- 一个cloudflare的账号。官网:https://www.cloudflare.com/zh-cn/
两个网站都是可以通过邮箱免费注册的。
部署方案
一、用cloudflare的Pages功能部署。
1.打开MoonTv在github的项目地址:https://github.com/senshinya/MoonTV

2.登陆cloudflare找到Workers和Pages,点击创建

3.点击Pages选择导入现有GIT存储库。

4.选择Gitgub账号,选择刚复制的项目仓库。(如果是第一次进来会提示要连接github)按提示点击授权即可。

5.填写相关参数
构建命令:pnpm install –frozen-lockfile && pnpm run pages:build
目录:.vercel/output/static(注:前面有个小点)
环境变量:PASSWORD=你的密码

6.部署完成后来到项目设置

选择兼容性标志:nodejs_compat
7.点击重试部署,项目就可以正常运行了。

8.访问网站

二、docker和Compose部署
如果有自己的服务器也可以通过Docker部署
1. 直接运行(最简单)
# 拉取预构建镜像
docker pull ghcr.io/senshinya/moontv:latest
# 运行容器
# -d: 后台运行 -p: 映射端口 3000 -> 3000
docker run -d --name moontv -p 3000:3000 --env PASSWORD=your_password ghcr.io/senshinya/moontv:latest
2.Docker Compose部署
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
3.Docker Compose多用户Redis 版本(多账户数据隔离,跨设备同步)
services:
moontv-core:
image: ghcr.io/senshinya/moontv:latest
container_name: moontv
restart: unless-stopped
ports:
- '3000:3000'
environment:
- USERNAME=admin
- PASSWORD=admin_password
- NEXT_PUBLIC_STORAGE_TYPE=redis
- REDIS_URL=redis://moontv-redis:6379
- NEXT_PUBLIC_ENABLE_REGISTER=true
networks:
- moontv-network
depends_on:
- moontv-redis
# 如需自定义配置,可挂载文件
# volumes:
# - ./config.json:/app/config.json:ro
moontv-redis:
image: redis
container_name: moontv-redis
restart: unless-stopped
networks:
- moontv-network
# 如需持久化
# volumes:
# - ./data:/data
networks:
moontv-network:
driver: bridge
环境变量
变量 | 说明 | 可选值 | 默认值 |
---|---|---|---|
USERNAME | redis 部署时的管理员账号 | 任意字符串 | (空) |
PASSWORD | 默认部署时为唯一访问密码,redis 部署时为管理员密码 | 任意字符串 | (空) |
SITE_NAME | 站点名称 | 任意字符串 | MoonTV |
ANNOUNCEMENT | 站点公告 | 任意字符串 | 本网站仅提供影视信息搜索服务,所有内容均来自第三方网站。本站不存储任何视频资源,不对任何内容的准确性、合法性、完整性负责。 |
NEXT_PUBLIC_STORAGE_TYPE | 播放记录/收藏的存储方式 | localstorage、redis、d1、upstash | localstorage |
REDIS_URL | redis 连接 url,若 NEXT_PUBLIC_STORAGE_TYPE 为 redis 则必填 | 连接 url | 空 |
UPSTASH_URL | upstash redis 连接 url | 连接 url | 空 |
UPSTASH_TOKEN | upstash redis 连接 token | 连接 token | 空 |
NEXT_PUBLIC_ENABLE_REGISTER | 是否开放注册,仅在非 localstorage 部署时生效 | true / false | false |
NEXT_PUBLIC_SEARCH_MAX_PAGE | 搜索接口可拉取的最大页数 | 1-50 | 5 |
NEXT_PUBLIC_IMAGE_PROXY | 默认的浏览器端图片代理 | url prefix | (空) |
NEXT_PUBLIC_DOUBAN_PROXY | 默认的浏览器端豆瓣数据代理 | url prefix | (空) |
如果你自己有好的资源API可以自行添加,所有可自定义项集中在根目录的 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 格式。
修改后 无需重新构建,服务会在启动时读取一次。
三、MoonTV搭配OrionTV使用
MoonTV搭配OrionTV可以在电视里直接观看(注:有小孩老人的家庭不适合把MoonTV调用到电视里使用,里面有好多内容只适合适龄人观看)
下载OrionTV安卓客户端在电视端进行安装。
下载地址:https://github.com/zimplexing/OrionTV/releases/download/v1.2.10/orionTV.1.2.10.apk
然后在OrionTV设置里把你刚创建的moontv的访问地址粘贴就行

四、手机APP
虽然MoonTv没有独立的APP,但可以用手机浏览器把它安装到手机,功能跟独立差不多。
以手机的Edge浏览器为例
用Edge打开我们的MoonTv网址>>点击右下角三条杠,滑动到第二页>>添加至手机

总结:
MoonTV和LibreTV哪个好?
其实MoonTV也是基于LibreTV开发的,相当于LibreTV的优化版,内容基本一致,不同的是MoonTV多了以下功能 :
- 加入了资源测速,会自动选择速度最佳的资源播放。
- 添加了影片收藏功能。
- 多设备同步观看记录及收藏等信息。
- 增加电视端的支持。