NAS + MoonTV,打造专属影视站(包含Cloudflare部署)

NAS + MoonTV,打造专属影视站(包含Cloudflare部署)

 次点击
31 分钟阅读

前言

作为影视爱好者,本期给大家带来一款好玩的软件MoonTV ,它是一款部署即用的跨平台影视聚合播放器,通过 Docker 快速部署,实现多源搜索、在线播放、播放记录同步等功能。

MoonTV 是跨平台的影视聚合播放器。它支持多资源搜索、在线播放、收藏同步、播放记录、本地/云端存储,让你可以随时随地畅享海量免费影视内容。

功能特性:

img 🔍 多源聚合搜索:内置数十个免费资源站点,一次搜索立刻返回全源结果。

📄 丰富详情页:支持剧集列表、演员、年份、简介等完整信息展示。

▶️ 流畅在线播放:集成 HLS.js & VidStack。

❤️ 收藏 + 继续观看:LocalStorage 存储,后续扩展 DB 存储。

📱 PWA:离线缓存、安装到桌面/主屏,移动端原生体验。

🌗 响应式布局:桌面侧边栏 + 移动底部导航,自适应各种屏幕尺寸。

🚀 极简部署:一条 Docker 命令即可将完整服务跑起来,或免费部署到 Vercel。

👿 智能去广告:自动跳过视频中的切片广告(实验性)

部署容器

Vercel 部署

普通部署(localstorage)

  1. Fork 本仓库到你的 GitHub 账户。 img
  2. 登陆 Vercel,点击 Add New → Project,选择 Fork 后的仓库。 img img
  3. 设置 PASSWORD 环境变量。
  4. 保持默认设置完成首次部署。 img img
  5. 如需自定义 config.json,请直接修改 Fork 后仓库中该文件。
  6. 每次 Push 到 main 分支将自动触发重新构建。

部署完成后即可通过分配的域名访问,也可以绑定自定义域名。

Upstash Redis 支持

  1. 完成普通部署并成功访问。
  2. upstash 注册账号并新建一个 Redis 实例,名称任意。
  3. 复制新数据库的 HTTPS ENDPOINT 和 TOKEN
  4. 返回你的 Vercel 项目,新增环境变量 UPSTASH_URL 和 UPSTASH_TOKEN,值为第二步复制的 endpoint 和 token
  5. 设置环境变量 NEXT_PUBLIC_STORAGE_TYPE,值为 upstash;设置 USERNAME 和 PASSWORD 作为站长账号
  6. 重试部署

Cloudflare 部署

Cloudflare Pages 的环境变量尽量设置为密钥而非文本

普通部署(localstorage)

  1. Fork 本仓库到你的 GitHub 账户。 img
  2. 登陆 Cloudflare,点击 计算(Workers)-> Workers 和 Pages,点击创建 img
  3. 选择 Pages,导入现有的 Git 存储库,选择 Fork 后的仓库 img
  4. 构建命令填写 pnpm install --frozen-lockfile && pnpm run pages:build,预设框架为无,构建输出目录为 .vercel/output/static img
  5. 保持默认设置完成首次部署。进入设置,将兼容性标志设置为 nodejs_compat img
  6. 首次部署完成后进入设置,新增 PASSWORD 密钥(变量和机密下),而后重试部署。
  7. 如需自定义 config.json,请直接修改 Fork 后仓库中该文件。
  8. 每次 Push 到 main 分支将自动触发重新构建。

Docker Compose 配置文件

local storage 版本

services:
  moontv:
    image: ghcr.io/senshinya/moontv:latest
    container_name: moontv
    restart: unless-stopped
    ports:
      - '3000:3000'
    environment:
      - PASSWORD=your_password
    # 如需自定义配置,可挂载文件
    # volumes:
    #   - ./config.json:/app/config.json:ro

Redis 版本(推荐,多账户数据隔离,跨设备同步)

services:
  moontv-core:
    image: ghcr.io/senshinya/moontv:latest
    container_name: moontv
    restart: unless-stopped
    ports:
      - '3000:3000'
    environment:
      - USERNAME=admin
      - PASSWORD=admin_password
      - NEXT_PUBLIC_STORAGE_TYPE=redis
      - REDIS_URL=redis://moontv-redis:6379
      - NEXT_PUBLIC_ENABLE_REGISTER=true
    networks:
      - moontv-network
    depends_on:
      - moontv-redis
    # 如需自定义配置,可挂载文件
    # volumes:
    #   - ./config.json:/app/config.json:ro
  moontv-redis:
    image: redis
    container_name: moontv-redis
    restart: unless-stopped
    networks:
      - moontv-network
    # 如需持久化
    # volumes:
    #   - ./data:/data
networks:
  moontv-network:
    driver: bridge

环境变量

变量 说明 可选值 默认值
USERNAME redis 部署时的管理员账号 任意字符串 (空)
PASSWORD 默认部署时为唯一访问密码,redis 部署时为管理员密码 任意字符串 (空)
SITE_NAME 站点名称 任意字符串 MoonTV
ANNOUNCEMENT 站点公告 任意字符串 本网站仅提供影视信息搜索服务,所有内容均来自第三方网站。本站不存储任何视频资源,不对任何内容的准确性、合法性、完整性负责。
NEXT_PUBLIC_STORAGE_TYPE 播放记录/收藏的存储方式 localstorage、redis、d1、upstash localstorage
REDIS_URL redis 连接 url,若 NEXT_PUBLIC_STORAGE_TYPE 为 redis 则必填 连接 url
UPSTASH_URL upstash redis 连接 url 连接 url
UPSTASH_TOKEN upstash redis 连接 token 连接 token
NEXT_PUBLIC_ENABLE_REGISTER 是否开放注册,仅在非 localstorage 部署时生效 true / false false
NEXT_PUBLIC_SEARCH_MAX_PAGE 搜索接口可拉取的最大页数 1-50 5
NEXT_PUBLIC_IMAGE_PROXY 默认的浏览器端图片代理 url prefix (空)
NEXT_PUBLIC_DOUBAN_PROXY 默认的浏览器端豆瓣数据代理 url prefix (空)

配置说明

所有可自定义项集中在根目录的 config.json 中:

{
  "cache_time": 7200,
  "api_site": {
    "dyttzy": {
      "api": "http://caiji.dyttzyapi.com/api.php/provide/vod",
      "name": "电影天堂资源",
      "detail": "http://caiji.dyttzyapi.com"
    }
    // ...更多站点
  }
}
  • cache_time:接口缓存时间(秒)。
  • api_site:你可以增删或替换任何资源站,字段说明:
    • key:唯一标识,保持小写字母/数字。
    • api:资源站提供的 vod JSON API 根地址。
    • name:在人机界面中展示的名称。
    • detail:(可选)部分无法通过 API 获取剧集详情的站点,需要提供网页详情根 URL,用于爬取。

MoonTV 支持标准的苹果 CMS V10 API 格式。

修改后 无需重新构建,服务会在启动时读取一次。

管理员配置

该特性目前仅支持通过非 localstorage 存储的部署方式使用

支持在运行时动态变更服务配置

设置环境变量 USERNAME 和 PASSWORD 即为站长用户,站长可设置用户为管理员

站长或管理员访问 /admin 即可进行管理员配置 MoonTV搭配OrionTV使用 MoonTV搭配OrionTV可以在电视里直接观看(注:有小孩老人的家庭不适合把MoonTV调用到电视里使用,里面有好多内容只适合适龄人观看) 下载OrionTV安卓客户端在电视端进行安装。下载地址:https://github.com/zimplexing/OrionTV/releases/download/v1.2.10/orionTV.1.2.10.apk 然后在OrionTV设置里把你刚创建的moontv的访问地址粘贴就行 img

部署建议

  1. 设置环境变量 PASSWORD:为您的实例设置一个强密码
  2. 仅供个人使用:请勿将您的实例链接公开分享或传播
  3. 遵守当地法律:请确保您的使用行为符合当地法律法规

© 本文著作权归作者所有,未经许可不得转载使用。