📌 项目地址:MoonTechLab/LunaTV | ⭐ 9,658 颗星 | 🔧 TypeScript | 📜 未标注
项目是什么
LunaTV,原名 MoonTV,MoonTechLab 出品,TypeScript 写的,9658 个 star。技术栈是 Next.js 14(App Router)+ Tailwind CSS 3 + TypeScript 4,播放器用 ArtPlayer 和 HLS.js。
功能一句话说清:你自己部署一个服务,它聚合搜索多个第三方影视源,统一界面播放,收藏和观看进度存在服务端,多设备同步。支持 PWA 装到手机主屏,桌面端是侧边栏布局,移动端是底部导航。还有一个实验性的“智能去广告”,自动跳过视频里的切片广告。
先说最关键的一点,README 里原话加粗了:部署后是空壳项目,无内置播放源和直播源,需要自行收集。所以它不是装完就能看片的成品——容器和资源是两回事,资源自己去配。
部署:只有 Docker 一条路
项目明确写了仅支持 Docker 或基于 Docker 的平台,没有裸机安装方案。
路线一:Zeabur 一键部署。 官方模板自动拉起 LunaTV + Kvrocks 数据库,带 HTTPS、CDN、持久化存储,免费额度够个人用。有个容易踩的坑:部署完不会自动有访问入口,需要在 Zeabur 控制台给 LunaTV 服务手动设置 Domain,否则浏览器打不开。
路线二:Docker Compose 自建。 官方推荐 Kvrocks 存储,配置如下(照抄 README):
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:
几个变量:USERNAME/PASSWORD 是登录账号密码;NEXT_PUBLIC_STORAGE_TYPE 选存储后端,可选 Kvrocks、Redis、Upstash。官方对 Redis 方案的标注是“有一定的丢数据风险”,自用没理由不选 Kvrocks——数据落盘,收藏和进度不怕丢。服务跑在 3000 端口。
README 里还有订阅配置、自动更新和 AndroidTV 使用的章节,需要的自己去翻,这里不展开。
它解决了什么问题
第三方资源站的体验普遍很差:广告多、界面乱、换设备就丢记录。LunaTV 把这几件事收拢了——一次搜索全源返回、统一播放器、记录跟人走。手机上看一半,回家打开电视接着看,进度是同步的。PWA 装到主屏后,日常用起来和普通视频 App 差别不大。
项目还支持 AndroidTV,这一点对客厅场景比较实用。
几条硬性限制
宣传禁令。 作者明确要求:不要在 B站、小红书、微信公众号、抖音、今日头条或其他中国大陆社交平台发布视频或文章宣传本项目,也不授权任何“科技周刊/月刊”类项目或站点收录。我写这篇解读时特意留意了这条边界,读者转发或二次创作时也请自行注意。
许可证。 CC BY-NC-SA,禁止商业化,衍生项目必须保留原项目地址、以相同协议开源。改个名字拿去收费卖服务是明确禁止的。
内容风险。 项目本身不带资源,但你自行配置的第三方源,版权状况参差不齐。自用风险自负,商用想都别想。
谁该部署它
有一台能跑 Docker 的机器(NAS、VPS、小主机都行),愿意自己花时间找资源,想要一个干净的多端观影界面——满足这三条,这个项目值得试。连 Compose 都不想碰的,从 Zeabur 一键部署入手,门槛最低。只想开箱看片的,这个项目不适合你。