🎬 LunaTV Enhanced Edition 是基于 MoonTV 深度二次开发的全功能影视聚合播放平台。在原版基础上新增了 YouTube 集成、网盘搜索、AI 推荐、短剧功能、IPTV 直播、Bangumi 动漫、播放统计、弹幕系统等 60+ 重大功能增强,打造极致的在线观影体验。
本项目是在 MoonTV 基础上进行的深度二次开发版本,从 v4.3.1 版本开始,持续迭代至当前 v6.2.1,累计新增 60+ 重大功能模块,400+ 细节优化。所有新增功能详见 CHANGELOG。
本项目仅供学习交流使用,请勿用于商业用途。所有视频内容均来自第三方平台,本项目不存储任何视频文件。使用本项目产生的任何法律责任由使用者自行承担。
- Emby 私有库:完整的 Emby 媒体服务器集成,支持免密登录和认证模式切换 → 详细文档
- YouTube 集成:完整的 YouTube 搜索、播放、直播功能
- 网盘搜索:集成高级筛选和缓存管理的网盘资源搜索
- ACG 种子搜索:Mikan Project 双源系统,丰富的动漫资源
- 短剧完整功能:短剧搜索、播放、详情展示
- IPTV 直播:m3u/m3u8 订阅、FLV 直播流、EPG 节目单
- Bangumi 动漫:动漫信息智能检测、API 集成
- 繁体中文搜索:智能繁简转换、多策略搜索
- 搜索列表视图:支持列表/网格双视图模式切换,列表模式带图片预览和快捷播放
- 超宽显示器适配:视频显示模式控制,完美支持超宽显示器
- 片头片尾跳过预设:灵活的片头片尾模板系统,支持导入导出和验证
- 播放速率持久化:记住播放速率设置,跨会话保持
点击下方按钮即可一键部署,自动配置 LunaTV + Kvrocks 数据库:
优势:
- ✅ 无需配置,一键启动(自动部署完整环境)
- ✅ 自动 HTTPS 和全球 CDN 加速
- ✅ 持久化存储,数据永不丢失
- ✅ 免费额度足够个人使用
点击按钮后填写环境变量即可完成部署!详细说明见下方 Zeabur 部署指南。
本项目仅支持 Docker 或其他基于 Docker 的平台部署(如 Dockge、Portainer、Komodo 等)。
Kvrocks 是基于 RocksDB 的持久化 Redis 协议兼容存储,推荐用于生产环境。
services:
moontv-core:
image: ghcr.io/iwyang/lunatv:latest
container_name: moontv-core
restart: on-failure
ports:
- '3000:3000'
environment:
- USERNAME=admin
- PASSWORD=your_secure_password
- NEXT_PUBLIC_STORAGE_TYPE=kvrocks
- KVROCKS_URL=redis://moontv-kvrocks:6666
- VIDEO_CACHE_DIR=/app/video-cache # 视频缓存目录
# 可选:站点配置
- SITE_BASE=https://your-domain.com
- NEXT_PUBLIC_SITE_NAME=LunaTV Enhanced
volumes:
- video-cache:/app/video-cache # 视频缓存持久化
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:
video-cache: # 视频缓存 volumeRedis 默认配置可能导致数据丢失,需要开启持久化。
services:
moontv-core:
image: ghcr.io/iwyang/lunatv:latest
container_name: moontv-core
restart: on-failure
ports:
- '3000:3000'
environment:
- USERNAME=admin
- PASSWORD=your_secure_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
command: redis-server --save 60 1 --loglevel warning
volumes:
- ./data:/data
networks:
- moontv-network
networks:
moontv-network:
driver: bridge适合无法自托管数据库的场景,完全托管的 Redis 服务。
- 在 upstash.com 注册账号并新建 Redis 实例
- 复制 HTTPS ENDPOINT 和 TOKEN
- 使用以下配置:
services:
moontv-core:
image: ghcr.io/iwyang/lunatv:latest
container_name: moontv-core
restart: on-failure
ports:
- '3000:3000'
environment:
- USERNAME=admin
- PASSWORD=your_secure_password
- NEXT_PUBLIC_STORAGE_TYPE=upstash
- UPSTASH_URL=https://your-instance.upstash.io
- UPSTASH_TOKEN=your_upstash_token飞牛OS 是一款国产免费 NAS 系统,原生支持 Docker Compose,适合家庭 NAS 用户部署。
-
登录飞牛OS管理界面
- 访问飞牛OS的 Web 管理界面
- 进入 "Docker" 或 "容器管理" 页面
-
创建 Compose 项目
- 点击 "新建 Compose 项目" 或 "添加服务"
- 项目名称:
lunatv - 将上方的 Kvrocks 存储配置 粘贴到配置框中 =======
- AI 智能助手:支持 GPT-5/o 系列模型,流式传输 → 详细文档
- Tavily 搜索模式:无需 AI API 的搜索模式
- TMDB 演员搜索:完整的演员搜索、过滤和缓存
- 发布日历:即将上映内容预览和跟踪
- 第三方弹幕 API:集成腾讯、爱奇艺、优酷、B站等主流平台
- 智能性能优化:分级渲染、Web Worker 加速
- 手动弹幕匹配:精准获取对应弹幕
- 综合设置面板:完整的弹幕配置
- 性能监控仪表板:完整的 API 性能监控系统
- 流量监控系统:真实流量监控、域名分解
- Kvrocks 持久化:高性能缓存系统
# 克隆项目
git clone https://github.com/SzeMeng76/LunaTV.git
cd LunaTV
# 复制环境变量配置
cp .env.example .env
# 编辑 .env 文件,配置必要的环境变量
nano .env
# 启动服务
docker-compose up -d
#### 📝 飞牛OS 部署注意事项
- **镜像加速**:建议在飞牛OS中配置 Docker 镜像加速(设置 → Docker → 镜像仓库),推荐使用轩辕镜像
- **端口冲突**:确保 3000 端口未被占用,如有冲突可修改为其他端口(如 `3001:3000`)
- **数据持久化**:Volume `kvrocks-data` 会自动创建在飞牛OS的 Docker 数据目录
- **反向代理**:可配合飞牛OS的反向代理功能,实现域名访问和 HTTPS
- **更新镜像**:在 Docker 管理界面选择容器 → 更新镜像 → 重启
#### ✨ 飞牛OS 部署优势
- ✅ **图形化管理**:Web 界面操作简单直观
- ✅ **一键更新**:内置容器镜像更新功能
- ✅ **数据安全**:NAS 级别的数据保护和备份
- ✅ **网络加速**:支持配置镜像加速源
- ✅ **资源监控**:实时查看容器资源占用
---
### ☁️ Zeabur 部署(推荐)
Zeabur 是一站式云端部署平台,使用预构建的 Docker 镜像可以快速部署,无需等待构建。
**部署步骤:**
1. **添加 KVRocks 服务**(先添加数据库)
- 点击 "Add Service" > "Docker Images"
- 输入镜像名称:`apache/kvrocks`
- 配置端口:`6666` (TCP)
- **记住服务名称**(通常是 `apachekvrocks`)
- **配置持久化卷(重要)**:
* 在服务设置中找到 "Volumes" 部分
* 点击 "Add Volume" 添加新卷
* Volume ID: `kvrocks-data`(可自定义,仅支持字母、数字、连字符)
* Path: `/var/lib/kvrocks/db`
* 保存配置
> 💡 **重要提示**:持久化卷路径必须设置为 `/var/lib/kvrocks/db`(KVRocks 数据目录),这样配置文件保留在容器内,数据库文件持久化,重启后数据不会丢失!
2. **添加 LunaTV 服务**
- 点击 "Add Service" > "Docker Images"
- 输入镜像名称:`ghcr.io/iwyang/lunatv:latest`
- 配置端口:`3000` (HTTP)
3. **配置环境变量**
在 LunaTV 服务的环境变量中添加:
```env
# 必填:管理员账号
USERNAME=admin
PASSWORD=your_secure_password
# 必填:存储配置
NEXT_PUBLIC_STORAGE_TYPE=kvrocks
KVROCKS_URL=redis://apachekvrocks:6666
VIDEO_CACHE_DIR=/app/video-cache
# 可选:站点配置
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 - 如果服务名称不同,请替换为实际名称
- 两个服务必须在同一个 Project 中
- 部署完成
- Zeabur 会自动拉取镜像并启动服务
- 等待服务就绪后,需要手动设置访问域名(见下一步)
- 在 LunaTV 服务页面,点击 "Networking" 或 "网络" 标签
- 点击 "Generate Domain" 生成 Zeabur 提供的免费域名(如
xxx.zeabur.app) - 或者绑定自定义域名:
- 点击 "Add Domain" 添加你的域名
- 按照提示配置 DNS CNAME 记录指向 Zeabur 提供的目标地址
- 设置完域名后即可通过域名访问 LunaTV
- 绑定自定义域名(可选)
- 在服务设置中点击 "Domains"
- 添加你的自定义域名
- 配置 DNS CNAME 记录指向 Zeabur 提供的域名
当 Docker 镜像有新版本发布时,Zeabur 不会自动更新。需要手动触发更新。
更新步骤:
-
进入服务页面
- 点击需要更新的服务(LunaTV 或 KVRocks)
-
重启服务
- 点击 "服务状态" 页面,再点击 "重启当前版本" 按钮
- Zeabur 会自动拉取最新的
latest镜像并重新部署
💡 提示:
- 使用
latest标签时,Restart 会自动拉取最新镜像- 生产环境推荐使用固定版本标签(如
v5.5.6)避免意外更新
- ✅ 自动 HTTPS:免费 SSL 证书自动配置
- ✅ 全球 CDN:自带全球加速
- ✅ 零配置部署:自动检测 Dockerfile
- ✅ 服务发现:容器间通过服务名称自动互联
- ✅ 持久化存储:支持数据卷挂载
- ✅ CI/CD 集成:Git 推送自动部署
- ✅ 实时日志:Web 界面查看运行日志
- 计费模式:按实际使用的资源计费,免费额度足够小型项目使用
- 区域选择:建议选择离用户最近的区域部署
- 服务网络:同一 Project 中的服务通过服务名称互相访问(如
apachekvrocks:6666) - 持久化存储:KVRocks 必须配置持久化卷到
/var/lib/kvrocks/db目录,否则重启后数据丢失
Hugging Face Spaces 提供免费的 Docker 容器托管服务,配置为 2 核 CPU、16GB 内存、50GB 存储,非常适合个人使用。
-
创建 Hugging Face 账号
- 访问 huggingface.co 注册账号
-
创建新 Space
- 访问 huggingface.co/new-space
- 填写 Space 名称(如
lunatv) - Space SDK 选择
Docker - Space hardware 选择
CPU basic(免费) - 点击
Create Space
-
配置 README.md
在 Space 仓库根目录创建或编辑
README.md,添加以下 YAML 元数据:--- title: LunaTV emoji: 🎬 colorFrom: green colorTo: blue sdk: docker app_port: 3000 pinned: false ---
💡 关键配置:
app_port: 3000告诉 HF 应用运行在 3000 端口 -
创建 Dockerfile
在 Space 仓库根目录创建
Dockerfile,仅需一行:FROM ghcr.io/szemeng76/lunatv:latest💡 这会直接使用 LunaTV 官方 Docker 镜像,无需构建
-
配置环境变量(Secrets)
在 Space 页面点击
Settings>Variables and secrets,添加以下 Secrets:变量名 说明 示例值 USERNAME管理员账号 adminPASSWORD管理员密码 your_secure_passwordNEXT_PUBLIC_STORAGE_TYPE存储类型 upstashUPSTASH_URLUpstash REST URL https://xxx.upstash.ioUPSTASH_TOKENUpstash Token AxxxQ==DISABLE_HERO_TRAILER禁用首页预告片 true⚠️ 注意:HF Space 无持久化存储,必须使用 Upstash 等外部数据库💡 建议:设置
DISABLE_HERO_TRAILER=true禁用首页预告片,因为预告片 URL 带时间戳会定时过期,无持久化存储的平台无法缓存视频,每次刷新都要重新下载 -
等待部署完成
- 提交文件后,HF 会自动拉取镜像并启动容器
- 部署完成后,访问
https://huggingface.co/spaces/你的用户名/lunatv
访问 `http://localhost:3000` 即可使用。
### 本地开发
```bash
# 安装依赖
pnpm install
# 启动开发服务器
pnpm dev
详细部署指南:查看完整部署文档
- 📖 完整文档中心 - 所有文档的导航页
- 🚀 部署指南 - Docker、Vercel 等部署方式
- ⚙️ 配置说明 - 环境变量和功能配置
- 📱 移动端使用 - 移动端 APP 和 AndroidTV 使用
- 🔐 OIDC 认证
- 💬 Telegram 认证
- 🌐 可信网络
- 前端框架:Next.js 16.1.0 + React 19.0.0
- 开发语言:TypeScript 5.8.3
- 样式方案:TailwindCSS 4.1.18
- 视频播放:ArtPlayer 5.4.0 + HLS.js 1.6.15
- 状态管理:TanStack Query 5.91.0
- 数据库:Upstash Redis + Kvrocks
- 部署方案:Docker / Vercel / Render
查看 CHANGELOG 了解所有版本更新内容。
详细的安全配置和隐私保护说明请查看 安全文档。
本项目采用 CC BY-NC-SA 4.0 协议 开源。
这意味着:
- ✅ 您可以自由地分享、复制和修改本项目
- ✅ 您必须给予适当的署名,提供指向本许可协议的链接
- ❌ 您不得将本项目用于商业目的
⚠️ 若您修改、转换或以本项目为基础进行创作,您必须以相同的许可协议分发您的作品
© 2025-2026 LunaTV Enhanced Edition & Contributors
基于 MoonTV 进行二次开发。
- Next.js — React 框架
- ArtPlayer — 强大的网页视频播放器
- HLS.js — HLS 流媒体支持
- TanStack Virtual — 虚拟滚动组件
- Tailwind CSS — CSS 框架
本项目在开发过程中参考了以下优秀开源项目的设计思路和实现方案:
- MoonTVPlus — 观影室同步播放、移动端优化等功能实现参考
- DecoTV — TVBox 安全策略、性能优化、UI 设计等实现参考
感谢这些项目及其作者的开源贡献和优秀实现!
- 所有提供免费影视接口的站点
- 开源社区的贡献者们
- 使用并反馈问题的用户们
如果这个项目对你有帮助,请给个 ⭐ Star 支持一下!
Made with ❤️ by LunaTV Enhanced Edition Team
