简介
MoonTV 是一个开箱即用的、跨平台的开源影视聚合播放器。它基于现代 Web 技术栈构建,支持多资源搜索、在线播放、收藏同步、播放记录和云端存储,让用户可以随时随地畅享海量免费影视内容。
GitHub 地址:https://github.com/MoonTechLab/LunaTV
技术亮点:
- :现代 React 框架
MoonTV 是一款基于 Next.js 和 TypeScript 构建的开源跨平台影视聚合播放器。支持多源搜索、在线播放、数据同步及 PWA 部署。提供 Docker 快速安装方案,适用于个人影视库、家庭媒体中心及开发者学习场景。采用 MIT 协议开源,强调多端体验与个性化配置。
MoonTV 是一个开箱即用的、跨平台的开源影视聚合播放器。它基于现代 Web 技术栈构建,支持多资源搜索、在线播放、收藏同步、播放记录和云端存储,让用户可以随时随地畅享海量免费影视内容。
GitHub 地址:https://github.com/MoonTechLab/LunaTV
技术亮点:
MoonTV 提供了一套完整的影视播放解决方案,涵盖内容搜索、视频播放、内容管理、用户服务、多端同步、系统管理等多个方面。
内容搜索功能:
视频播放功能:
内容管理功能:
用户服务功能:
系统管理功能:
系统要求:
Docker 部署:
# 使用 Docker Compose 部署
git clone https://github.com/MoonTechLab/LunaTV.git
cd LunaTV
# 配置环境变量
cp .env.example .env
nano .env
# 启动服务
docker-compose up -d
# 访问应用
http://localhost:3000
Kvrocks 存储部署:
version: '3.8'
services:
moontv-core:
image: ghcr.io/moontechlab/lunatv:latest
container_name: moontv-core
restart: unless-stopped
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 存储部署:
version: '3.8'
services:
moontv-core:
image: ghcr.io/moontechlab/lunatv:latest
container_name: moontv-core
restart: unless-stopped
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
volumes:
- redis-data:/data
networks:
- moontv-network
networks:
moontv-network:
driver: bridge
volumes:
redis-data:
手动安装:
# 手动安装部署
git clone https://github.com/MoonTechLab/LunaTV.git
cd LunaTV
# 安装依赖
npm install
# 环境配置
cp .env.example .env
nano .env
# 构建应用
npm run build
# 启动服务
npm start
# 访问应用
http://localhost:3000
环境变量配置:
# 基础配置
USERNAME=admin
PASSWORD=your_strong_password
SITE_BASE=https://your-domain.com
NEXT_PUBLIC_SITE_NAME=My MoonTV
# 存储配置
NEXT_PUBLIC_STORAGE_TYPE=kvrocks
KVROCKS_URL=redis://localhost:6666
# 或
NEXT_PUBLIC_STORAGE_TYPE=redis
REDIS_URL=redis://localhost:6379
# 或
NEXT_PUBLIC_STORAGE_TYPE=upstash
UPSTASH_URL=your-upstash-url
UPSTASH_TOKEN=your-upstash-token
# 功能配置
NEXT_PUBLIC_SEARCH_MAX_PAGE=5
NEXT_PUBLIC_DOUBAN_PROXY_TYPE=direct
NEXT_PUBLIC_FLUID_SEARCH=true
NEXT_PUBLIC_DISABLE_YELLOW_FILTER=false
资源站配置:
{
"cache_time": 7200,
"api_site": {
"site1": {
"api": "https://api.example1.com/vod",
"name": "示例资源站 1",
"detail": "https://www.example1.com"
},
"site2": {
"api": "https://api.example2.com/vod",
"name": "示例资源站 2",
"detail": "https://www.example2.com"
}
},
"custom_category": [
{
"name": "热门电影",
"type": "movie",
"query": "热门"
},
{
"name": "美剧精选",
"type": "tv",
"query": "美剧"
}
]
}
主题配置:
{
"theme": {
"primary_color": "#3b82f6",
"secondary_color": "#64748b",
"accent_color": "#f59e0b",
"dark_mode": true,
"font_family": "system-ui",
"rounded_corners": true
},
"layout": {
"sidebar_width": "280px",
"header_height": "64px",
"footer_visible": false,
"compact_mode": false
},
"player": {
"default_quality": "1080p",
"auto_play": true,
"subtitle_language": "zh",
"volume_level": 80
}
}
使用 MoonTV 的基本流程包括:安装部署 → 资源配置 → 内容搜索 → 视频播放 → 内容管理 → 多端同步。整个过程设计为简单高效。
内容搜索与播放:
个性化设置:
多端使用:
资源站管理:
数据管理:
系统优化:
MoonTV 作为一个功能强大的开源影视聚合播放器,通过其多源搜索、流畅播放、数据同步、跨平台支持和开源特性,为影视内容管理提供了完整的解决方案。采用 MIT 许可证开源,免费用于学术和商业用途。适用于个人影视库管理、家庭媒体中心、开发者学习平台、小型团队协作及教育机构媒体库等场景。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online