🎬 从零到一:在 Cloudflare Workers 上部署 MoonTVPlus 影视聚合站
📦 一、准备工作
你需要准备好以下三样东西:
| 项目 | 说明 |
|---|---|
| GitHub 账号 | 用来 Fork 代码仓库 |
| Cloudflare 账号 | 用来部署 Worker(免费) |
| Upstash 账号 | 用来创建免费的 Redis 数据库(支持 GitHub 一键登录) |
🚀 二、Fork 项目仓库
-
打开 MoonTVPlus 仓库地址:
https://github.com/mtvpls/MoonTVPlus -
点击页面右上角的 「Fork」 按钮。
-
在弹出窗口中,Owner 选择你自己的 GitHub 账号,然后点击 「Create fork」。
-
等待页面跳转到你 Fork 后的仓库:
https://github.com/你的用户名/MoonTVPlus
MoonTVPlus 的仓库。
🔑 三、获取 Cloudflare Account ID
-
打开浏览器,访问 Cloudflare 控制台,登录你的账号。
-
关键路径: 在左侧菜单栏中,找到 「计算」(Compute)分类 → 点击 「Workers & Pages」。
📍 位置提示: 左侧菜单从上到下依次是:账户主页 → 域名 → Observe → Investigate → 数据分析 → 构建 → 「计算」(Workers & Pages 在这里) → AI → 存储和数据库 → …… -
进入 Workers & Pages 页面后,不要创建任何东西,直接看页面右侧或顶部信息栏。
-
找到 「账户 ID」(Account ID),它是一串由字母和数字组成的字符串。
-
复制并保存这个 Account ID,下一步要用。
358829b2d79a593ba1efa5ff7de3993a
🔑 四、创建 Cloudflare API Token
-
在 Cloudflare 控制台,点击右上角的 头像图标(你的账户头像)。
-
在下拉菜单中,选择 「我的个人资料」(My Profile)。
-
在个人资料页面,切换到顶部的 「API 令牌」(API Tokens)选项卡。
-
点击 「创建令牌」(Create token)。
-
在令牌模板列表中,找到 「编辑 Cloudflare Workers」,点击右侧的 「使用模板」(Use template)。
-
在“账户资源”处,确保选择的是你的账户(不是具体某个域名)。
-
点击页面底部的 「继续以显示摘要」 → 再点击 「创建令牌」。
-
⚠️ 立即复制并保存 生成的令牌字符串(它只显示这一次!)。
🔐 格式类似:cfut_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
🗄️ 五、创建 Upstash Redis 数据库
-
打开 Upstash Console。
-
点击 「Sign Up」 注册,推荐使用 「Sign in with GitHub」 一键登录。
-
登录成功后,点击 「Create Database」(创建数据库)。
-
填写以下信息:
- Name: 随便起一个,例如
moontv - Region: 选择
us-east-1(美东)或eu-west-1(欧洲) - 其他选项保持默认
- Name: 随便起一个,例如
-
点击底部的 「Create」 按钮。
-
创建完成后,点击数据库名称 进入详情页。
-
在详情页的 REST API 区域,找到两个关键信息:
- UPSTASH_URL: 类似
https://xxx.upstash.io - UPSTASH_TOKEN: 被星号
**********隐藏,点击右侧的眼睛图标 👁️ 显示完整内容,然后复制。
- UPSTASH_URL: 类似
UPSTASH_REDIS_REST_URL 和 UPSTASH_REDIS_REST_TOKEN,配置 GitHub Secrets 时要去掉 _REDIS_REST 部分,只保留 UPSTASH_URL 和 UPSTASH_TOKEN。
🔐 六、在 GitHub 仓库中配置 Secrets
-
打开你 Fork 后的仓库:
https://github.com/你的用户名/MoonTVPlus -
点击顶部的 「Settings」(设置)选项卡。
-
在左侧菜单中,找到 「Secrets and variables」 → 点击展开 → 选择 「Actions」。
-
点击绿色的 「New repository secret」 按钮。
-
依次添加以下 7 个 Secret(名称必须 完全一致,区分大小写):
Secret 名称 值(从哪里获取) CLOUDFLARE_API_TOKEN第四步获取的 API Token CLOUDFLARE_ACCOUNT_ID第三步获取的 Account ID UPSTASH_URL第五步获取的 UPSTASH_URL UPSTASH_TOKEN第五步获取的 UPSTASH_TOKEN USERNAME你自己设置的管理员用户名(如 admin)PASSWORD你自己设置的管理员密码(务必使用强密码) NEXT_PUBLIC_STORAGE_TYPE固定填写 upstash -
每添加一个,点击 「Add secret」 保存。全部添加完成后,列表应该显示 7 个 Secret。
🚀 七、触发自动部署
-
在 GitHub 仓库页面,点击顶部的 「Actions」(操作)选项卡。
-
左侧 Workflows 列表中,点击 「Deploy to Cloudflare」。
-
如果左侧没有
Deploy to Cloudflare,而是显示 “Workflows aren’t being run on this forked repository”:点击蓝色的 「I understand my workflows, go ahead and enable them」 按钮启用 Actions,然后再重复这一步。 -
点击右侧的 「Run workflow」 按钮。
-
在弹出的下拉框中,直接点击绿色的 「Run workflow」 按钮。
-
页面会刷新,出现一个新的运行任务(黄色圆点表示进行中)。
-
点击这个任务,可以查看实时部署日志。
-
等待约 2~3 分钟,状态变为绿色 ✅ 即表示部署成功。
🌐 八、访问你的站点
-
打开 Cloudflare 控制台。
-
关键路径: 左侧菜单 → 「计算」(Compute)→ 「Workers & Pages」。
-
在 Worker 列表中,你会看到一个新创建的 Worker(名称类似
moontvplus或montv-plus)。 -
点击这个 Worker 名称 进入详情页。
-
在 「概述」(Overview)页面,找到 「Worker URL」 区域。
-
复制 生产环境 的地址:
https://xxxxxx.workers.dev -
在浏览器中打开这个地址,使用你在第六步设置的
USERNAME和PASSWORD登录。
⚙️ 九、配置影视源(最关键的一步)
登录成功后,页面会进入 MoonTVPlus 的管理后台。
添加视频源:
-
在左侧菜单或页面中找到 「视频源配置」。
-
点击 「添加」 按钮。
-
填写以下信息:
- 名称: 随便填,如
LunaTV订阅 - Key: 填一个英文标识符,如
lunatv(不能是openlist、xiaoya或以emby开头的词) - 接口地址: 填入以下订阅 URL:
https://raw.githubusercontent.com/hafrey1/LunaTV-config/refs/heads/main/LunaTV-config.txt - 名称: 随便填,如
-
点击 「添加」 保存。
-
系统会自动测试接口是否可用,加载完成后即可在首页看到影片列表。
https://raw.githubusercontent.com/hafrey1/LunaTV-config/refs/heads/main/jingjian.txt
🔗 十、绑定自定义域名(可选)
如果你有自己的域名,并已托管在 Cloudflare:
-
进入 Worker 详情页 → 点击顶部 「设置」(Settings)。
-
左侧菜单 → 「触发器」(Triggers)。
-
在 「自定义域」(Custom Domains)部分,点击 「添加域」(Add Domain)。
-
输入你的域名(如
tv.yourdomain.com),点击继续。 -
Cloudflare 会自动检测域名,按提示添加 CNAME 记录。
-
等待 DNS 解析生效(通常几分钟),即可通过自己的域名访问。
⚠️ 十一、常见问题与避坑指南
| 问题现象 | 原因与解决方法 |
|---|---|
| 找不到 Workers & Pages | 路径是:左侧菜单 → 「计算」(Compute)→ Workers & Pages,不是顶部导航。 |
| Fork 后 Actions 没有 Deploy to Cloudflare | GitHub 默认禁用了 Fork 仓库的 Actions,点击蓝色按钮 「I understand…」 启用。 |
| 部署失败,报错 Authentication error | API Token 权限不足或已失效。删除旧 Token,重新创建 「编辑 Cloudflare Workers」 模板的 Token,并更新 GitHub Secret。 |
| 部署成功但访问页面空白 | 检查 UPSTASH 数据库是否配置正确,NEXT_PUBLIC_STORAGE_TYPE 是否为 upstash。 |
| 登录后没有影片 | 需要先配置视频源(第九步),MoonTVPlus 是空壳,不内置任何影视资源。 |
| 视频源接口失效 | 第三方接口随时可能失效。LunaTV-config 项目每日自动检测 API 有效性,推荐使用。 |
| Upstash Token 被星号隐藏 | 点击数据库详情页 REST API 区域的眼睛图标 👁️ 显示完整 Token。 |
| 自定义域名无法访问 | 检查 DNS 解析是否已添加 CNAME 记录,以及是否已生效。 |
📦 十二、总结
技术链路:
费用: 全程免费(Cloudflare 免费计划每日 10 万次请求,个人使用完全足够)。
维护: 部署完成后,只需偶尔关注影视源是否有效(LunaTV-config 每日自动更新,基本无需人工干预)。
本文为个人折腾经验总结,所有影视源由第三方提供,仅供学习交流使用。
评论(0)
暂无评论