MoonTechLab/LunaTV

▲ 855 stars today★ 10,444⑂ 9,087

本项目采用 CC BY-NC-SA 协议,禁止任何商业化行为,任何衍生项目必须保留本项目地址并以相同协议开源

10,444Star
9,087Fork
0Watch
0Issue
TypeScriptLanguage
-License
Created · last push · repository size 0 KB · default branch -

README

MoonTV

https://github.com/MoonTechLab/LunaTV/blob/HEAD/MoonTV Logo
🎬 MoonTV 是一个开箱即用的、跨平台的影视聚合播放器。它基于 Next.js 14 + Tailwind CSS + TypeScript 构建,支持多资源搜索、在线播放、收藏同步、播放记录、云端存储,让你可以随时随地畅享海量免费影视内容。
Next.js TailwindCSS TypeScript License Docker Ready

---

✨ 功能特性

注意:部署后项目为空壳项目,无内置播放源和直播源,需要自行收集

点击查看项目截图 https://github.com/MoonTechLab/LunaTV/blob/HEAD/项目截图 https://github.com/MoonTechLab/LunaTV/blob/HEAD/项目截图 https://github.com/MoonTechLab/LunaTV/blob/HEAD/项目截图

请不要在 B站、小红书、微信公众号、抖音、今日头条或其他中国大陆社交平台发布视频或文章宣传本项目,不授权任何“科技周刊/月刊”类项目或站点收录本项目。

🗺 目录

技术栈

| 分类 | 主要依赖 | | --------- | ----------------------------------------------------------------------------------------------------- | | 前端框架 | Next.js 14 · App Router | | UI & 样式 | Tailwind CSS 3 | | 语言 | TypeScript 4 | | 播放器 | ArtPlayer · HLS.js | | 代码质量 | ESLint · Prettier · Jest | | 部署 | Docker |

部署

本项目仅支持 Docker 或其他基于 Docker 的平台 部署。

zeabur 一键部署

点击下方按钮即可一键部署,自动配置 LunaTV + Kvrocks 数据库:

Deploy on Zeabur

优势

⚠️ 重要提示:部署完成后,需要在 Zeabur 中为 LunaTV 服务设置访问域名(Domain)才能在浏览器中访问。详见下方 设置访问域名 步骤。

Kvrocks 存储(推荐)

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:

Redis 存储(有一定的丢数据风险)

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

Upstash 存储

1. 在 upstash 注册账号并新建一个 Redis 实例,名称任意。 2. 复制新数据库的 HTTPS ENDPOINT 和 TOKEN 3. 使用如下 docker compose

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

☁️ Zeabur 部署(推荐)

Thanks to @SzeMeng76

Zeabur 是一站式云端部署平台,使用预构建的 Docker 镜像可以快速部署,无需等待构建。

部署步骤:

1. 添加 KVRocks 服务(先添加数据库)

> 💡 重要提示:持久化卷路径必须设置为 /var/lib/kvrocks/db(KVRocks 数据目录),这样配置文件保留在容器内,数据库文件持久化,重启后数据不会丢失!

2. 添加 LunaTV 服务

3. 配置环境变量

在 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

注意

4. 部署完成

5. 设置访问域名(必须)

6. 绑定自定义域名(可选)

🔄 更新 Docker 镜像

当 Docker 镜像有新版本发布时,Zeabur 不会自动更新。需要手动触发更新。

更新步骤:

1. 进入服务页面

2. 重启服务
💡 提示
- 使用 latest 标签时,Restart 会自动拉取最新镜像
- 生产环境推荐使用固定版本标签(如 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": "华语"
    }
  ]
}
custom_category 支持的自定义分类已知如下: 也可输入如 "哈利波特" 效果等同于豆瓣搜索

MoonTV 支持标准的苹果 CMS V10 API 格式。

订阅

将完整的配置文件 base58 编码后提供 http 服务即为订阅链接,可在 MoonTV 后台/Helios 中使用。

自动更新

可借助 watchtower 自动更新镜像容器

dockge/komodo 等 docker compose UI 也有自动更新功能

环境变量

| 变量 | 说明 | 可选值 | 默认值 | | ----------------------------------- | -------------------------------------------- | -------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | | USERNAME | 站长账号 | 任意字符串 | 无默认,必填字段 | | PASSWORD | 站长密码 | 任意字符串 | 无默认,必填字段 | | SITE_BASE | 站点 url | 形如 https://example.com | 空 | | NEXT_PUBLIC_SITE_NAME | 站点名称 | 任意字符串 | MoonTV | | ANNOUNCEMENT | 站点公告 | 任意字符串 | 本网站仅提供影视信息搜索服务,所有内容均来自第三方网站。本站不存储任何视频资源,不对任何内容的准确性、合法性、完整性负责。 | | NEXT_PUBLIC_STORAGE_TYPE | 播放记录/收藏的存储方式 | redis、kvrocks、upstash | 无默认,必填字段 | | KVROCKS_URL | kvrocks 连接 url | 连接 url | 空 | | REDIS_URL | redis 连接 url | 连接 url | 空 | | UPSTASH_URL | upstash redis 连接 url | 连接 url | 空 | | UPSTASH_TOKEN | upstash redis 连接 token | 连接 token | 空 | | NEXT_PUBLIC_SEARCH_MAX_PAGE | 搜索接口可拉取的最大页数 | 1-50 | 5 | | NEXT_PUBLIC_DOUBAN_PROXY_TYPE | 豆瓣数据源请求方式 | 见下方 | direct | | NEXT_PUBLIC_DOUBAN_PROXY | 自定义豆瓣数据代理 URL | url prefix | (空) | | NEXT_PUBLIC_DOUBAN_IMAGE_PROXY_TYPE | 豆瓣图片代理类型 | 见下方 | direct | | NEXT_PUBLIC_DOUBAN_IMAGE_PROXY | 自定义豆瓣图片代理 URL | url prefix | (空) | | NEXT_PUBLIC_DISABLE_YELLOW_FILTER | 关闭色情内容过滤 | true/false | false | | NEXT_PUBLIC_FLUID_SEARCH | 是否开启搜索接口流式输出 | true/ false | true |

NEXT_PUBLIC_DOUBAN_PROXY_TYPE 选项解释:

NEXT_PUBLIC_DOUBAN_IMAGE_PROXY_TYPE 选项解释:

客户端

v100.0.0 以上版本可配合 Selene 使用,移动端体验更加友好,数据完全同步

AndroidTV 使用

目前该项目可以配合 OrionTV 在 Android TV 上使用,可以直接作为 OrionTV 后端

已实现播放记录和网页端同步

安全与隐私提醒

请设置密码保护并关闭公网注册

为了您的安全和避免潜在的法律风险,我们要求在部署时强烈建议关闭公网注册

部署要求

1. 设置环境变量 PASSWORD:为您的实例设置一个强密码 2. 仅供个人使用:请勿将您的实例链接公开分享或传播 3. 遵守当地法律:请确保您的使用行为符合当地法律法规

重要声明

License

CC BY-NC-SA 4.0 © 2025 MoonTV & Contributors

本项目采用 知识共享 署名-非商业性使用-相同方式共享 4.0 国际许可协议:禁止任何商业化行为;任何衍生项目必须保留本项目地址与版权署名,并以相同协议开源。

致谢

Star History

Star History Chart

More Today's Trending projects

1

debpalash / VoiceStudio

Python★ 29,840⑂ 3,606▲ 2,776 stars
2

JustVugg / colibri

C★ 32,609⑂ 3,430▲ 2,173 stars
3

bilawalsidhu / gods-eye-view

JavaScript★ 33,945⑂ 6,772▲ 1,831 stars
4

alibaba / open-code-review

Go★ 26,516⑂ 1,906▲ 1,571 stars
5

ever-co / ever-gauzy

TypeScript★ 6,164⑂ 994▲ 1,130 stars
6

pacifio / atlas

Rust★ 4,440⑂ 274▲ 1,091 stars