MoonTechLab /LunaTV

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

★ 10,885⑂ 9,240👁 44▤ 29
TypeScriptCreated 2025-08-12
10,885
stars
+0+7+299
9,240
forks
44
watchers
–
prs
–
issues
29
releases
–
discussions

README

MoonTV


  


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



!Next.js
!TailwindCSS
!TypeScript
!License
!Docker Ready



---

 ✨ 功能特性

- 🔍 多源聚合搜索:一次搜索立刻返回全源结果。
- 📄 丰富详情页:支持剧集列表、演员、年份、简介等完整信息展示。
- ▶️ 流畅在线播放:集成 HLS.js & ArtPlayer。
- ❤️ 收藏 + 继续观看:支持 Kvrocks/Redis/Upstash 存储,多端同步进度。
- 📱 PWA:离线缓存、安装到桌面/主屏,移动端原生体验。
- 🌗 响应式布局:桌面侧边栏 + 移动底部导航,自适应各种屏幕尺寸。
- 👿 智能去广告:自动跳过视频中的切片广告(实验性)。

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


  点击查看项目截图
  
  
  


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

 🗺 目录

- 技术栈
- 部署
  - 一键部署
  - Docker 部署
- 配置文件
- 订阅
- 自动更新
- 环境变量
- 客户端
- AndroidTV 使用
- Roadmap
- 安全与隐私提醒
- License
- 致谢

 技术栈

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

 部署

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

 zeabur 一键部署

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



优势:
- ✅ 无需配置,一键启动(自动部署完整环境)
- ✅ 自动 HTTPS 和全球 CDN 加速
- ✅ 持久化存储,数据永不丢失
- ✅ 免费额度足够个人使用

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

 Kvrocks 存储(推荐)

yml
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 存储(有一定的丢数据风险)

yml
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
     请开启持久化,否则升级/

Snapshot: 2026-11-04T14:00:00Z · Data license Apache-2.0 · JSON