使用 Cloudflare Pages 免费部署 MoonTV 影视聚合站教程

本教程将指导如何利用 GitHub 和 Cloudflare 提供的免费服务,快速部署一个属于自己的 MoonTV 影视聚合播放站。该项目支持多种部署方式,本教程重点介绍 Cloudflare Pages 的部署方法,包括基础部署和启用 D1 数据库以支持跨设备数据同步。

准备工作

在开始之前,请确保已经拥有以下账号:

小技巧:在 Windows 系统中,可以按住一个浏览器标签页并将其拖动到屏幕边缘,即可实现分屏浏览,方便对照教程进行操作。
Windows分屏技巧

第一步:Fork MoonTV 仓库到自己的 GitHub

首先,需要将 MoonTV 项目的源代码复制一份到自己的 GitHub 账号下,这个过程称为 “Fork”。

  1. 登录 GitHub 后,在搜索框中搜索 moontv

  2. 在搜索结果中,找到 senshinya/MoonTV 这个仓库,这是项目的主仓库。

    在GitHub搜索MoonTV

  3. 进入该仓库页面,点击右上角的 Fork 按钮。

  4. 在创建 Fork 的页面上,保持默认设置,然后点击 Create fork

    Fork MoonTV 仓库

  5. 等待几秒钟,项目就会被完整复制到个人仓库下。页面左上角会显示自己的用户名,表示 Fork 成功。

    Fork成功

第二步:在 Cloudflare Pages 上部署项目

接下来,使用 Cloudflare Pages 来部署刚刚 Fork 的项目。

普通部署 (localStorage 模式)

此模式使用浏览器本地存储,简单快捷,但不支持跨设备同步数据。

  1. 登录 Cloudflare,在左侧菜单栏选择 Workers 和 Pages,然后进入 Pages 选项卡。

  2. 选择 导入现有的 Git 存储库,然后点击 开始使用

  3. 在“从您的帐户部署站点”页面,选择连接 GitHub

  4. 在弹出的授权窗口中,选择 Only select repositories,然后从下拉列表中找到并选中 Fork 的 MoonTV 仓库,最后点击 Install & Authorize

    授权Cloudflare访问GitHub仓库

  5. 在“设置构建和部署”页面,需要填写以下信息(这些信息可以在项目 GitHub 页面的 README 文件中找到):

    • 构建命令: pnpm install --frozen-lockfile && pnpm run pages:build
    • 构建输出目录: ./.vercel/output/static

    配置构建和部署

  6. 向下滚动,进入“环境变量”部分,点击 添加变量,设置一个密码用于登录:

    • 变量名称: PASSWORD
    • : 输入自定义的密码 (例如 123456)
  7. 最后,点击 保存并部署。Cloudflare 会开始自动构建和部署站点。

  8. 部署成功后,可以通过 Cloudflare 提供的 *.pages.dev 域名访问 MoonTV 站点。使用刚刚设置的密码即可登录。

    部署成功并访问

D1 支持 (开启跨设备同步)

如果希望在不同设备间同步观看历史和收藏夹,需要启用 D1 数据库支持。

  1. 创建 D1 数据库

    • 在 Cloudflare 仪表盘,进入 存储 -> D1 SQL 数据库,点击 创建数据库

    • 为数据库命名 (例如 moontv),然后点击 创建

    • 进入新创建的数据库,点击右上角的 Explore Data

    • 在左侧的 GitHub 页面中,找到 D1初始化.md 文件,复制其中的所有 SQL 命令。注意:请使用代码块右上角的第二个复制按钮,避免格式错误。

      复制D1初始化代码

    • 将复制的代码粘贴到 D1 数据库的查询框中,然后点击 Run 按钮旁边的下拉箭头,选择 Run all statements 来执行所有命令。

      执行SQL命令

  2. 绑定数据库和配置环境变量

    • 回到 Pages 项目,进入 设置 -> 函数 -> D1 数据库绑定
    • 点击 添加绑定,变量名称填写 DB,并选择刚才创建的 moontv 数据库。
    • 接着,进入 设置 -> 环境变量,添加以下两个变量:
      • NEXT_PUBLIC_STORAGE_TYPE,值为 d1
      • USERNAME,值为自定义的站长用户名(登录时需要)
    • 保存后,Cloudflare 会自动重新部署。
  3. 最终测试

    • 等待重新部署完成后,再次访问站点。现在登录时会要求输入用户名和密码。
    • 登录成功后,所有观看数据都将保存在 D1 数据库中,实现了跨设备同步。

第三步:保持项目更新

为了能及时获取原作者对 MoonTV 的更新,需要启用 GitHub Actions 来自动同步 Fork 的仓库。

  1. 回到 Fork 的 MoonTV GitHub 仓库页面。

  2. 点击上方的 Actions 标签页。

  3. 点击绿色的 I understand my workflows, go ahead and enable them 按钮。

  4. 在左侧找到 Upstream Sync,点击它,然后在右侧点击 Enable workflow

    启用Upstream Sync

这样设置后,Fork 的仓库就会定期与上游主仓库保持同步,Cloudflare Pages 也会自动拉取最新代码进行部署。

第四步:(可选) 绑定自定义域名和安装为桌面应用

  • 自定义域名:在 Pages 项目的 自定义域 选项卡中,可以添加并绑定自己的域名。

  • 安装为桌面应用 (PWA):使用 Chrome 或 Edge 浏览器访问站点时,地址栏右侧会出现一个安装图标。点击即可将 MoonTV 安装为桌面应用,获得更接近原生应用的体验。

    安装为桌面应用

至此,整个部署流程全部完成。