移除失效豆瓣图片来源
🎬 MoonTV 是一个开箱即用的、跨平台的影视聚合播放器。它基于 Next.js 14 + Tailwind CSS + TypeScript 构建,支持多资源搜索、在线播放、收藏同步、播放记录、云端存储,让你可以随时随地畅享海量免费影视内容。
本项目仅支持 Docker 或其他基于 Docker 的平台 部署。
点击下方按钮即可一键部署,自动配置 LunaTV + Kvrocks 数据库:
优势:
⚠️ 重要提示:部署完成后,需要在 Zeabur 中为 LunaTV 服务设置访问域名(Domain)才能在浏览器中访问。详见下方 设置访问域名 步骤。
services: moontv-core: image: ghcr.io/moontechlab/lunatv:latest container_name: moontv-core restart: on-failure ports: - '3000:3000' environment: - USERNAME=admin - PASSWORD=admin_password - NEXT_PUBLIC_STORAGE_TYPE=kvrocks - KVROCKS_URL=redis://moontv-kvrocks:6666 networks: - moontv-network depends_on: - moontv-kvrocks moontv-kvrocks: image: apache/kvrocks container_name: moontv-kvrocks restart: unless-stopped volumes: - kvrocks-data:/var/lib/kvrocks networks: - moontv-network networks: moontv-network: driver: bridge volumes: kvrocks-data:
services: moontv-core: image: ghcr.io/moontechlab/lunatv:latest container_name: moontv-core restart: on-failure ports: - '3000:3000' environment: - USERNAME=admin - PASSWORD=admin_password - NEXT_PUBLIC_STORAGE_TYPE=redis - REDIS_URL=redis://moontv-redis:6379 networks: - moontv-network depends_on: - moontv-redis moontv-redis: image: redis:alpine container_name: moontv-redis restart: unless-stopped networks: - moontv-network # 请开启持久化,否则升级/重启后数据丢失 volumes: - ./data:/data networks: moontv-network: driver: bridge
services: moontv-core: image: ghcr.io/moontechlab/lunatv:latest container_name: moontv-core restart: on-failure ports: - '3000:3000' environment: - USERNAME=admin - PASSWORD=admin_password - NEXT_PUBLIC_STORAGE_TYPE=upstash - UPSTASH_URL=上面 https 开头的 HTTPS ENDPOINT - UPSTASH_TOKEN=上面的 TOKEN
Thanks to @SzeMeng76
Zeabur 是一站式云端部署平台,使用预构建的 Docker 镜像可以快速部署,无需等待构建。
部署步骤:
添加 KVRocks 服务(先添加数据库)
apache/kvrocks
6666
apachekvrocks
kvrocks-data
/var/lib/kvrocks/db
💡 重要提示:持久化卷路径必须设置为 /var/lib/kvrocks/db(KVRocks 数据目录),这样配置文件保留在容器内,数据库文件持久化,重启后数据不会丢失!
添加 LunaTV 服务
ghcr.io/moontechlab/lunatv:latest
3000
配置环境变量
在 LunaTV 服务的环境变量中添加:
# 必填:管理员账号 USERNAME=admin PASSWORD=your_secure_password # 必填:存储配置 NEXT_PUBLIC_STORAGE_TYPE=kvrocks KVROCKS_URL=redis://apachekvrocks:6666 # 可选:站点配置 SITE_BASE=https://your-domain.zeabur.app NEXT_PUBLIC_SITE_NAME=LunaTV Enhanced ANNOUNCEMENT=欢迎使用 LunaTV Enhanced Edition # 可选:豆瓣代理配置(推荐) NEXT_PUBLIC_DOUBAN_PROXY_TYPE=cmliussss-cdn-tencent NEXT_PUBLIC_DOUBAN_IMAGE_PROXY_TYPE=cmliussss-cdn-tencent
注意:
redis://apachekvrocks:6666
部署完成
xxx.zeabur.app
当 Docker 镜像有新版本发布时,Zeabur 不会自动更新。需要手动触发更新。
更新步骤:
进入服务页面
重启服务
latest
💡 提示: 使用 latest 标签时,Restart 会自动拉取最新镜像 生产环境推荐使用固定版本标签(如 v5.5.6)避免意外更新
💡 提示:
v5.5.6
完成部署后为空壳应用,无播放源,需要站长在管理后台的配置文件设置中填写配置文件(后续会支持订阅)
配置文件示例如下:
{ "cache_time": 7200, "api_site": { "dyttzy": { "api": "http://xxx.com/api.php/provide/vod", "name": "示例资源", "detail": "http://xxx.com" } // ...更多站点 }, "custom_category": [ { "name": "华语", "type": "movie", "query": "华语" } ] }
cache_time
api_site
key
api
vod
name
detail
custom_category
type
movie
tv
query
custom_category 支持的自定义分类已知如下:
也可输入如 “哈利波特” 效果等同于豆瓣搜索
MoonTV 支持标准的苹果 CMS V10 API 格式。
将完整的配置文件 base58 编码后提供 http 服务即为订阅链接,可在 MoonTV 后台/Helios 中使用。
可借助 watchtower 自动更新镜像容器
dockge/komodo 等 docker compose UI 也有自动更新功能
NEXT_PUBLIC_DOUBAN_PROXY_TYPE 选项解释:
NEXT_PUBLIC_DOUBAN_IMAGE_PROXY_TYPE 选项解释:
v100.0.0 以上版本可配合 Selene 使用,移动端体验更加友好,数据完全同步
目前该项目可以配合 OrionTV 在 Android TV 上使用,可以直接作为 OrionTV 后端
已实现播放记录和网页端同步
为了您的安全和避免潜在的法律风险,我们要求在部署时强烈建议关闭公网注册:
PASSWORD
MIT © 2025 MoonTV & Contributors
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802032778号
MoonTV
✨ 功能特性
注意:部署后项目为空壳项目,无内置播放源和直播源,需要自行收集
点击查看项目截图
请不要在 B站、小红书、微信公众号、抖音、今日头条或其他中国大陆社交平台发布视频或文章宣传本项目,不授权任何“科技周刊/月刊”类项目或站点收录本项目。
🗺 目录
技术栈
部署
本项目仅支持 Docker 或其他基于 Docker 的平台 部署。
zeabur 一键部署
点击下方按钮即可一键部署,自动配置 LunaTV + Kvrocks 数据库:
优势:
⚠️ 重要提示:部署完成后,需要在 Zeabur 中为 LunaTV 服务设置访问域名(Domain)才能在浏览器中访问。详见下方 设置访问域名 步骤。
Kvrocks 存储(推荐)
Redis 存储(有一定的丢数据风险)
Upstash 存储
☁️ Zeabur 部署(推荐)
Thanks to @SzeMeng76
Zeabur 是一站式云端部署平台,使用预构建的 Docker 镜像可以快速部署,无需等待构建。
部署步骤:
添加 KVRocks 服务(先添加数据库)
apache/kvrocks6666(TCP)apachekvrocks)kvrocks-data(可自定义,仅支持字母、数字、连字符)/var/lib/kvrocks/db添加 LunaTV 服务
ghcr.io/moontechlab/lunatv:latest3000(HTTP)配置环境变量
在 LunaTV 服务的环境变量中添加:
注意:
redis://apachekvrocks:6666部署完成
5. 设置访问域名(必须)
xxx.zeabur.app)🔄 更新 Docker 镜像
当 Docker 镜像有新版本发布时,Zeabur 不会自动更新。需要手动触发更新。
更新步骤:
进入服务页面
重启服务
latest镜像并重新部署配置文件
完成部署后为空壳应用,无播放源,需要站长在管理后台的配置文件设置中填写配置文件(后续会支持订阅)
配置文件示例如下:
cache_time:接口缓存时间(秒)。api_site:你可以增删或替换任何资源站,字段说明:key:唯一标识,保持小写字母/数字。api:资源站提供的vodJSON API 根地址。name:在人机界面中展示的名称。detail:(可选)部分无法通过 API 获取剧集详情的站点,需要提供网页详情根 URL,用于爬取。custom_category:自定义分类配置,用于在导航中添加个性化的影视分类。以 type + query 作为唯一标识。支持以下字段:name:分类显示名称(可选,如不提供则使用 query 作为显示名)type:分类类型,支持movie(电影)或tv(电视剧)query:搜索关键词,用于在豆瓣 API 中搜索相关内容custom_category 支持的自定义分类已知如下:
也可输入如 “哈利波特” 效果等同于豆瓣搜索
MoonTV 支持标准的苹果 CMS V10 API 格式。
订阅
将完整的配置文件 base58 编码后提供 http 服务即为订阅链接,可在 MoonTV 后台/Helios 中使用。
自动更新
可借助 watchtower 自动更新镜像容器
dockge/komodo 等 docker compose UI 也有自动更新功能
环境变量
NEXT_PUBLIC_DOUBAN_PROXY_TYPE 选项解释:
NEXT_PUBLIC_DOUBAN_IMAGE_PROXY_TYPE 选项解释:
客户端
v100.0.0 以上版本可配合 Selene 使用,移动端体验更加友好,数据完全同步
AndroidTV 使用
目前该项目可以配合 OrionTV 在 Android TV 上使用,可以直接作为 OrionTV 后端
已实现播放记录和网页端同步
安全与隐私提醒
请设置密码保护并关闭公网注册
为了您的安全和避免潜在的法律风险,我们要求在部署时强烈建议关闭公网注册:
部署要求
PASSWORD**:为您的实例设置一个强密码重要声明
License
MIT © 2025 MoonTV & Contributors
致谢
Star History