简要说明

  • 适用人群:这里涉及到科学上网, DNS解析配置, Docker部署相关参数, Redis实例创建等操作, 需要具备一定的IT基础
  • 环境要求:使用免费clawcloud部署, 需要国内能访问的域名, 免费域名可以参考白嫖Digitalplat免费域名
  • 重点说明:我也是抄袭整理的, 而且这里的免费, 重点在于量少(Upstash)配置低(clawcloud), 个人用很OK, 商用可不太刑哦~

关于LunaTV

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

✨ 功能特性

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

部署准备

  • 后面提供了三种部署方式, ClawCloud和Vercel都是基于Upstash, docker本地部署可以选择redis或者Upstash

Upstash配置

  • upstash 注册账号并新建一个 Redis实例, 实例用于替代本地部署Redis

Upstash地址: https://upstash.com

注册后登录Upstash面板, 选择创建database, 名称随意起, 比如lunatv

image-20251030104257720

创建后, 进入Redis实力库, 保存URL和TOKEN

image-20251030104752165

ClawCloud部署方式

☁️ 关于 Clawcloud

Clawcloud 是一个现代化的、以开发者为中心的云原生应用托管平台。它专注于提供极简、高效、高性能的部署体验,让开发者可以轻松地将他们的应用(如前端、后端 API、数据库和边缘函数)在全球范围内进行扩展。它致力于简化复杂的云基础设施管理,让开发者可以把精力集中在编写代码上。

核心特性

  • 🌍 全球边缘网络 (CDN): 内置高性能内容分发网络,通过全球部署的节点加速应用内容和 API 响应,实现低延迟、高可用
  • 🛠️ 一体化工作流: 深度集成 Git 工作流,支持**自动构建、持续集成/持续部署 (CI/CD)**,每一次代码推送都会触发新的部署。
  • ⚙️ 强大的 PaaS 能力: 提供托管式数据库、Serverless Functions(无服务器函数)、密钥管理等平台服务,简化后端基础设施搭建。
  • 💰 弹性计费: 基于使用量(如请求次数、数据传输量)进行精确计费,灵活且成本可控,适合各种规模的项目。
  • 🛡️ 内建安全与监控: 自动配置 SSL 证书、DDoS 防护,并提供详细的实时日志和性能监控面板
  • 🔌 扩展和集成: 支持与各种第三方服务(如 GitHub、GitLab、主流数据库)进行无缝集成

使用GitHub登录(注册超过一周), 每月可以获得**$5免费额度**, 也就是说, 配置选择控制在每天$0.16, 就能实现免费。

此部署步骤围绕有自定义域名的方法, 如果没有自已域名, 可以适当省略部分步骤(部分网络配置和cloudflare相关配置)

注册账号

登录地址: https://ap-southeast-1.run.claw.cloud/signin

选择GitHub登录

image-20251030105309792

登录后点击头像–> Plan, 查看是否有每月$5的免费额度, 下图就代表有$5的赠送

image-20251030105612707

创建APP

进入创建APP配置页, 选择对应的配置, 一定控制在每天$0.16以下, 因为LunaTV就是个静态页, 不占资源

image-20251030105923893

基础配置

image-20251030111907094

1
2
名称: lunatv
镜像: ghcr.io/moontechlab/lunatv:latest

资源配置

  • 看好左侧的价格表, 要每天小于$0.16才免费

这里我选1核512内存

image-20251030113814554

变量配置

image-20251030112043038

添加后点击ADD保存

image-20251030112415994

1
2
3
4
5
USERNAME=admin
PASSWORD="设置一个管理员密码"
NEXT_PUBLIC_STORAGE_TYPE=upstash
UPSTASH_URL="<上面创建Redis复制的URL>"
UPSTASH_TOKEN="<上面创建Redis复制的TOKEN>"

网络配置

端口配置3000, 地址为clawcloud分配的随机地址, clawcloud分配的随机地址只能科学上网访问, 如果有可以学网保存默认即可使用

image-20251030112726563

如果需要国内访问, 可以参考白嫖Digitalplat免费域名先获得免费域名, 或者自己买一个域名, 然后填入自定义域名, 先别点确认, 需要先配置CNAME解析之后才能点确认, 否则报错

image-20251030112912250

这里以Cloudflare为例:

登录Cloudflare, 进入到域, 添加一个CNAME记录

image-20251030111623232

CNAME记录配置如下, 配置后点击保存.

image-20251030113452542

然后回到clawcloud参数配置页面, 在网络中配置自己刚创建的域名, 点击确认

image-20251030113645206

配置完成后如下

image-20251030131930507

重要操作:

  1. 配置CNAME记录时候先关闭代理, 等全部配置生效后再开启, 否则clawcloud查询域名失效导致网络配置确认报错
  2. 先配置CNAME记录并保存再去确认clawcloud的网络配置, 不然会查询不到自定义域名导致确认报错
  3. 如果配置了自定义域名, 保存之后之前配置的端口会重置, 需要重新改成3000端口, 切记切记~

资源部署

全部配置完毕, 点击右上角的部署并确认

image-20251030113901025

  1. 部署可能需要一些时间, 这是因为有时候pod池是满的, 需要等待或者调度空闲的pod资源
  2. 如果长时间(超过半小时)卡住可是尝试restart

开启代理

网络状态变为Available后, 回到cloudflare的CNAME配置页面, 启动代理

image-20251030134229581

将Cloudflare的代理开启, 之后即可使用自定义域名访问lunatv, 访问页不需要加端口了

image-20251030133552308

Vercel部署方式

🚀 关于 Vercel

Vercel 是一个为前端框架(尤其是 Next.js)量身定制的、专注于部署和协作的平台。它最初是 Next.js 的创建者,旨在提供一个零配置(Zero-Config) 的部署环境,让开发者能够快速构建、部署和扩展他们的 Web 应用。Vercel 的核心理念是“开发者的完美平台”,通过集成前沿的 Web 技术来提供极速的开发体验和最终用户体验。

核心特性

  • ⚡ Next.js 最佳拍档: 作为 Next.js 官方推荐的部署平台,提供对 Next.js 特性的深度优化和原生支持(如 Server Components、Middleware)。
  • 🌐 边缘函数 (Edge Functions): 允许你在全球网络边缘运行代码,以极低的延迟响应用户请求,非常适合个性化内容。
  • 🔄 零配置部署: 自动识别项目类型(React, Vue, Astro 等),实现一键部署,无需手动配置复杂的构建流程。
  • 🔒 自动 HTTPS/SSL: 所有部署的应用都自动配置免费的 SSL 证书,确保数据传输安全。

Vercel注册账号

进入Vercel登录地址, 直接使用GitHub授权登录

image-20251121164246034

GitHub复刻项目

LunaTV项目地址, 复刻到自己的仓库

image-20251121164332388

Vercel部署项目

登录Vercel后, 选择Add New–> Project

image-20251121164715374

如果你用GitHub登录, 这时候就弹出你的仓库列表, 选择刚刚复刻的LunaTV项目, 可以直接搜索luna, 然后点击后面的Import

image-20251121164935464

导入之后, 名称自定义, 但不能有大写, 可以直接默认, 然后展开环境变量, 填入下面的信息, 填入后, 点击部署(Deploy)即可。

1
2
3
4
5
USERNAME=admin
PASSWORD="设置一个管理员密码"
NEXT_PUBLIC_STORAGE_TYPE=upstash
UPSTASH_URL=<上面创建Redis复制的URL>
UPSTASH_TOKEN=<上面创建Redis复制的TOKEN>

image-20251121165411590

自定义域名配置

部署完毕后, 点击前往仪表盘, 跳转到控制面板

image-20251121165924571

到这里就可以使用Vercel分配的域名进行访问了, 但是Vercel分配的域名大多数会被污染, 导致国内无法访问, 这时候, 就需要我们配置自己都域名了

image-20251121170038652

点击setting–> Domains–> Add Domain

image-20251121170138200

这里, 直接输入你想使用的二级域名(这里和ClawCloud不一样, 先设定后解析), 然后Vercel会自动根据你的域名, 生成提示信息, 告诉你怎么去配置DNS解析

image-20251121170419343

登录Cloudflare, 进入到域, 添加一个CNAME记录, 严格按照Vercel的配置填写, 最后保存设置

image-20251121170654081

回到Vercel域名配置, 稍等片刻, 点击刷新按钮, 域名生效后会给生成一个SSL证书, 再稍等片刻, 证书生效后, 域名就可以访问了。

image-20251121170859966

本地Docker部署方式

直接参考官方部署方案即可, 使用docker-compose部署更方便

docker-compose.yml

基于Redis

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
services:
lunatv-core:
image: ghcr.io/moontechlab/lunatv:latest
container_name: lunatv-core
restart: on-failure
ports:
- '3000:3000'
environment:
- USERNAME=admin
- PASSWORD=xxxx
- NEXT_PUBLIC_STORAGE_TYPE=redis
- REDIS_URL=redis://lunatv-redis:6379
networks:
- lunatv-network
depends_on:
- lunatv-redis
lunatv-redis:
image: redis:alpine
container_name: lunatv-redis
restart: unless-stopped
networks:
- lunatv-network
# 请开启持久化,否则升级/重启后数据丢失
volumes:
- /opt/lunatv/data:/data
networks:
lunatv-network:
driver: bridge

基于Upstash

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
services:
lunatv-core:
image: ghcr.io/moontechlab/lunatv:latest
container_name: lunatv-core
restart: on-failure
ports:
- '3000:3000'
environment:
- USERNAME=admin
- PASSWORD=xxxx
- NEXT_PUBLIC_STORAGE_TYPE=upstash
- UPSTASH_URL="<上面创建Redis复制的URL>"
- UPSTASH_TOKEN="<上面创建Redis复制的TOKEN>"
networks:
- lunatv-network
networks:
lunatv-network:
driver: bridge

晋级篇

影视库配置

登录lunatv后, 点击头像–>控制面板, 展开配置, 可以进行影视库配置, json示例如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"cache_time": 7200,
"api_site": {
"wolongzy": {
"api": "https://collect.wolongzy.cc/api.php/provide/vod",
"name": "卧龙资源",
"detail": "资源主页: https://wolongzyw.com, 解析加速: wlcdn88.com, jx.wolongm3u8.com, pic.wlongimg.com"
},
"ffzy": {
"api": "https://api.ffzyapi.com/api.php/provide/vod",
"name": "非凡影视",
"detail": "资源主页: http://ffzy5.tv, 解析加速: svip.ffzyplay.com, img.ffzy888.com"
}
}
}

配置保存后, 可以进行验证测试

image-20251030141935834

查看资源是否稳定可用, 如果资源可用, 就说明配置生效, 可以回到首页搜索自己喜欢的影视资源进行观看了image-20251030142010057

常用影视库

查找资源站

可以自己Google, 去搜一些常用的影视库, 主要看里面片源多少,自己喜欢的类型多不多, 这里我列出几个常用的影视库官网

卧龙资源 红牛资源 非凡资源 电影天堂

提取采集资源

以卧龙资源为例, 进入官网后, 找到搭建教程, 有的也叫采集教程

image-20251030135143359

进入采集教程页面后, 会列出很多的资源采集方式, lunatv一般提取综合资源, 路径就到vod就行

image-20251030135303774

也就是https://collect.wolongzy.cc/api.php/provide/vod 就是我们要配置的采集路径, 可以放到浏览器中验证一下, 内容是否正常, 然后根据模板, 将采集路径配置到里影视库配置里面即可

image-20251030140006958

采集资源优化

有时候资源站示例地址用的人比较多, 会被封, 或者很慢, 这时候, 我们就要想别的办法, 一般资源站都有很多备用地址, 比如卧龙资源站, 首页上会有很多备用地址

image-20251030135707899

我们将备用地址替换到示例中的采集地址, 放到浏览器中访问一下, 如果采集正常, 速度还可以, 就可以配置在影视库配置中了

image-20251030135933744

客户端

因为LunaTV默认是WEB页面访问, 所以电脑端访问还行, 但对于手机端用户不太友好, 那手机端咋办呢, 别着急,它来了

Selene📱

GitHub下载地址: https://github.com/MoonTechLab/Selene/releases

🎬 Selene 是以 MoonTV v100 版本 / Helios 为后端的客户端,保证原汁原味的同时,优化了移动端和桌面端操作体验。它基于 Flutter 构建,目前支持 Android、iOS、macOS 和 Windows 平台。

🎯 核心功能

  • 多源聚合搜索 - 支持多个视频源的聚合搜索,快速找到想看的内容
  • 智能播放记录 - 自动记录播放进度,支持断点续播
  • 个人收藏夹 - 收藏喜欢的影视作品,方便随时观看
  • 多平台支持 - 支持电影、电视剧、动漫、综艺等多种内容类型
  • DLNA 投屏 - 大屏看片就是爽

🎨 用户体验

  • 现代化 UI - 基于 Material Design 3 的现代化界面设计
  • 深色模式 - 支持深色/浅色主题切换,护眼更舒适
  • 流畅动画 - 丰富的交互动画,提升使用体验

🔧 技术特性

  • 高性能播放 - 移动端使用 Awesome Video Player + FVP 后端,桌面端使用 Media Kit,支持多种视频格式
  • 智能缓存 - 图片缓存和数据缓存机制,提升加载速度
  • 网络优化 - 支持 WebSocket 实时通信,响应更迅速
  • 跨平台适配 - 针对不同平台优化的播放器和 UI 控件

📱 支持平台

  • Android - 最低支持 Android 5.0 (API 21)
  • iOS - 最低支持 iOS 13.0
  • macOS - 最低支持 macOS 11.0 (Big Sur)
  • Windows - 最低支持 Windows 10

~手机端都有了, 那么电视端怎么办呢, 别着急, 它也来了。。。

OrionTV 📺

GitHub下载地址: http://github.com/orion-lib/OrionTV/releases

OrionTV是一个基于 React Native TVOS 和 Expo 构建的播放器,旨在提供流畅的视频观看体验。

✨ 功能特性

  • 框架跨平台支持: 同时支持构建 Apple TV 和 Android TV。
  • 现代化前端: 使用 Expo、React Native TVOS 和 TypeScript 构建,性能卓越。
  • Expo Router: 基于文件系统的路由,使导航逻辑清晰简单。
  • TV 优化的 UI: 专为电视遥控器交互设计的用户界面。

同类资源

KatelyaTV

此项目自「MoonTV」演进而来,为其二创/继承版本,持续维护与改进功能与体验。重点是保留了多元化的部署方式, 如Pages部署, 不过可能二开难度较大, 目前已经二开到满目疮痍了, 作者已崩溃, 期待后续更新吧~

🚀 部署特性

  • 🐳 Docker 一键部署:提供完整的 Docker 镜像,开箱即用
  • ☁️ 多平台支持:Vercel、Docker、Cloudflare Pages 全兼容
  • 🔧 灵活配置:支持自定义资源站、代理设置、主题配置
  • 📱 PWA 支持:可安装为桌面/手机应用
  • 📺 TVBox 兼容:支持 TVBox 配置接口

**GitHub地址: ** https://github.com/katelya77

LibreTV

LibreTV 是一个轻量级、免费的在线视频搜索与观看平台,提供来自多个视频源的内容搜索与播放服务。无需注册,即开即用,支持多种设备访问。项目结合了前端技术和后端代理功能,可部署在支持服务端功能的各类网站托管服务上。

项目门户地址libretv.is-an.org

**GitHub地址: ** https://github.com/LibreSpark