MoonTechLab/LunaTVPublic

本项目采用 CC BY-NC-SA 协议,禁止任何商业化行为,任何衍生项目必须保留本项目地址并以相同协议开源

AI summary: A cross-platform media aggregator and player built with Next.js and Tailwind CSS.

Stars
10.4K
+22 today
Forks
9.1K
Watchers
47
Open issues
3
Open PRs
3
Contributors
~3
Commits
138
Branches
1

TypeScriptOtherCreated Aug 12, 2025Last push todayLatest release v100.1.3+698 stars this week+698 this month

Star history

since Sep 21, 2025
05K10KSep 2025Jan 2026May 2026Sep 2026
10.4K stars as of Sep 10, 2026, tracked back to Sep 21, 2025. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Contribution activity

commits per day, last 52 weeks
SepOctNovDecJanFebMarAprMayJunJulAugSepMonWedFri2025-09-14: 0 commits2025-09-15: 0 commits2025-09-16: 0 commits2025-09-17: 0 commits2025-09-18: 0 commits2025-09-19: 0 commits2025-09-20: 0 commits2025-09-21: 0 commits2025-09-22: 0 commits2025-09-23: 0 commits2025-09-24: 0 commits2025-09-25: 1 commit2025-09-26: 0 commits2025-09-27: 0 commits2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 1 commit2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 1 commit2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 2 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 1 commit2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 1 commit2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 1 commit2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-08: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 9 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 0 commits2026-03-12: 0 commits2026-03-13: 0 commits2026-03-14: 0 commits2026-03-15: 1 commit2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 0 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 0 commits2026-04-09: 0 commits2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 0 commits2026-04-14: 0 commits2026-04-15: 0 commits2026-04-16: 0 commits2026-04-17: 0 commits2026-04-18: 0 commits2026-04-19: 0 commits2026-04-20: 0 commits2026-04-21: 0 commits2026-04-22: 0 commits2026-04-23: 0 commits2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 0 commits2026-04-30: 0 commits2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 0 commits2026-05-07: 0 commits2026-05-08: 0 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 0 commits2026-05-20: 0 commits2026-05-21: 0 commits2026-05-22: 0 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 0 commits2026-05-26: 0 commits2026-05-27: 0 commits2026-05-28: 1 commit2026-05-29: 0 commits2026-05-30: 0 commits2026-05-31: 0 commits2026-06-01: 0 commits2026-06-02: 0 commits2026-06-03: 0 commits2026-06-04: 0 commits2026-06-05: 0 commits2026-06-06: 0 commits2026-06-07: 0 commits2026-06-08: 0 commits2026-06-09: 0 commits2026-06-10: 0 commits2026-06-11: 0 commits2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 0 commits2026-06-16: 0 commits2026-06-17: 0 commits2026-06-18: 0 commits2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 0 commits2026-06-23: 0 commits2026-06-24: 0 commits2026-06-25: 0 commits2026-06-26: 0 commits2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 0 commits2026-06-30: 0 commits2026-07-01: 0 commits2026-07-02: 0 commits2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 0 commits2026-07-07: 0 commits2026-07-08: 0 commits2026-07-09: 0 commits2026-07-10: 0 commits2026-07-11: 0 commits2026-07-12: 0 commits2026-07-13: 0 commits2026-07-14: 0 commits2026-07-15: 0 commits2026-07-16: 0 commits2026-07-17: 0 commits2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 0 commits2026-07-21: 0 commits2026-07-22: 0 commits2026-07-23: 0 commits2026-07-24: 0 commits2026-07-25: 0 commits2026-07-26: 0 commits2026-07-27: 0 commits2026-07-28: 0 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits2026-08-02: 0 commits2026-08-03: 0 commits2026-08-04: 0 commits2026-08-05: 0 commits2026-08-06: 0 commits2026-08-07: 0 commits2026-08-08: 0 commits2026-08-09: 0 commits2026-08-10: 0 commits2026-08-11: 0 commits2026-08-12: 0 commits2026-08-13: 0 commits2026-08-14: 0 commits2026-08-15: 0 commits2026-08-16: 0 commits2026-08-17: 0 commits2026-08-18: 0 commits2026-08-19: 0 commits2026-08-20: 0 commits2026-08-21: 0 commits2026-08-22: 0 commits2026-08-23: 0 commits2026-08-24: 0 commits2026-08-25: 0 commits2026-08-26: 0 commits2026-08-27: 0 commits2026-08-28: 0 commits2026-08-29: 0 commits2026-08-30: 0 commits2026-08-31: 0 commits2026-09-01: 0 commits2026-09-02: 0 commits2026-09-03: 0 commits2026-09-04: 0 commits2026-09-05: 0 commits2026-09-06: 0 commits2026-09-07: 0 commits2026-09-08: 0 commits2026-09-09: 0 commits2026-09-10: 0 commits2026-09-11: 0 commits2026-09-12: 0 commits
19 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Widely adopted

    10,396 stars

  • Rising fast

    +698 stars this week

  • Actively maintained

    Pushed within 48 hours

  • Repeat trending

    3 trending appearances

What LunaTV does

Operates as a comprehensive, out-of-the-box media aggregation platform and player. Built using Next.js 14 and Tailwind CSS, providing a responsive and modern user interface across devices. Supports multi-source searching, smooth online playback via HLS.js, and synchronization of watch history across platforms. Deployed as an empty shell requiring users to configure their own media sources, ensuring compliance and flexibility.

Media enthusiasts looking to build a personal, aggregated streaming platform. Developers interested in modern Next.js applications featuring complex video playback and state synchronization.

  • Multi-source search: Aggregates results from multiple media sources into a single search interface.
  • Responsive design: Adapts seamlessly to desktop and mobile screens with Tailwind CSS.
  • Progress synchronization: Syncs watch history and favorites across devices using Redis or Kvrocks.
  • Progressive Web App: Supports offline caching and installation to desktop or mobile home screens.
  • Integrated player: Utilizes ArtPlayer and HLS.js for smooth streaming video playback.

Where teams use it

Aggregating media sources

Combine multiple video streams into a unified, searchable interface.

Building custom media centers

Deploy a personal streaming platform with synchronized watch history across devices.

Mobile streaming

Install the PWA on a mobile device for a native-like video watching experience.

Managing media favorites

Keep track of favorite shows and movies with persistent cloud storage.

Getting started: https://github.com/MoonTechLab/LunaTV

README

main branch

MoonTV

MoonTV Logo

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

Next.js TailwindCSS TypeScript License Docker Ready


✨ 功能特性

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

注意:部署后项目为空壳项目,无内置播放源和直播源,需要自行收集

点击查看项目截图 项目截图 项目截图 项目截图

请不要在 B站、小红书、微信公众号、抖音、今日头条或其他中国大陆社交平台发布视频或文章宣传本项目,不授权任何“科技周刊/月刊”类项目或站点收录本项目。

🗺 目录

技术栈

分类 主要依赖
前端框架 Next.js 14 · App Router
UI & 样式 Tailwind CSS 3
语言 TypeScript 4
播放器 ArtPlayer · HLS.js
代码质量 ESLint · Prettier · Jest
部署 Docker

部署

本项目仅支持 Docker 或其他基于 Docker 的平台 部署。

zeabur 一键部署

点击下方按钮即可一键部署,自动配置 LunaTV + Kvrocks 数据库:

Deploy on Zeabur

优势

  • ✅ 无需配置,一键启动(自动部署完整环境)
  • ✅ 自动 HTTPS 和全球 CDN 加速
  • ✅ 持久化存储,数据永不丢失
  • ✅ 免费额度足够个人使用

⚠️ 重要提示:部署完成后,需要在 Zeabur 中为 LunaTV 服务设置访问域名(Domain)才能在浏览器中访问。详见下方 设置访问域名 步骤。

Kvrocks 存储(推荐)

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:

Redis 存储(有一定的丢数据风险)

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=redis
      - REDIS_URL=redis://moontv-redis:6379
    networks:
      - moontv-network
    depends_on:
      - moontv-redis
  moontv-redis:
    image: redis:alpine
    container_name: moontv-redis
    restart: unless-stopped
    networks:
      - moontv-network
    # 请开启持久化,否则升级/重启后数据丢失
    volumes:
      - ./data:/data
networks:
  moontv-network:
    driver: bridge

Upstash 存储

  1. upstash 注册账号并新建一个 Redis 实例,名称任意。
  2. 复制新数据库的 HTTPS ENDPOINT 和 TOKEN
  3. 使用如下 docker compose
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=upstash
      - UPSTASH_URL=上面 https 开头的 HTTPS ENDPOINT
      - UPSTASH_TOKEN=上面的 TOKEN

☁️ Zeabur 部署(推荐)

Thanks to @SzeMeng76

Zeabur 是一站式云端部署平台,使用预构建的 Docker 镜像可以快速部署,无需等待构建。

部署步骤:

  1. 添加 KVRocks 服务(先添加数据库)

    • 点击 "Add Service" > "Docker Images"
    • 输入镜像名称:apache/kvrocks
    • 配置端口:6666 (TCP)
    • 记住服务名称(通常是 apachekvrocks
    • 配置持久化卷(重要)
      • 在服务设置中找到 "Volumes" 部分
      • 点击 "Add Volume" 添加新卷
      • Volume ID: kvrocks-data(可自定义,仅支持字母、数字、连字符)
      • Path: /var/lib/kvrocks/db
      • 保存配置

    💡 重要提示:持久化卷路径必须设置为 /var/lib/kvrocks/db(KVRocks 数据目录),这样配置文件保留在容器内,数据库文件持久化,重启后数据不会丢失!

  2. 添加 LunaTV 服务

    • 点击 "Add Service" > "Docker Images"
    • 输入镜像名称:ghcr.io/moontechlab/lunatv:latest
    • 配置端口:3000 (HTTP)
  3. 配置环境变量

    在 LunaTV 服务的环境变量中添加:

    # 必填:管理员账号
    USERNAME=admin
    PASSWORD=your_secure_password
    
    # 必填:存储配置
    NEXT_PUBLIC_STORAGE_TYPE=kvrocks
    KVROCKS_URL=redis://apachekvrocks:6666
    
    # 可选:站点配置
    SITE_BASE=https://your-domain.zeabur.app
    NEXT_PUBLIC_SITE_NAME=LunaTV Enhanced
    ANNOUNCEMENT=欢迎使用 LunaTV Enhanced Edition
    
    # 可选:豆瓣代理配置(推荐)
    NEXT_PUBLIC_DOUBAN_PROXY_TYPE=cmliussss-cdn-tencent
    NEXT_PUBLIC_DOUBAN_IMAGE_PROXY_TYPE=cmliussss-cdn-tencent

    注意

    • 使用服务名称作为主机名:redis://apachekvrocks:6666
    • 如果服务名称不同,请替换为实际名称
    • 两个服务必须在同一个 Project 中
  4. 部署完成

    • Zeabur 会自动拉取镜像并启动服务
    • 等待服务就绪后,需要手动设置访问域名(见下一步)

5. 设置访问域名(必须)

  • 在 LunaTV 服务页面,点击 "Networking" 或 "网络" 标签
  • 点击 "Generate Domain" 生成 Zeabur 提供的免费域名(如 xxx.zeabur.app
  • 或者绑定自定义域名:
    • 点击 "Add Domain" 添加你的域名
    • 按照提示配置 DNS CNAME 记录指向 Zeabur 提供的目标地址
  • 设置完域名后即可通过域名访问 LunaTV
  1. 绑定自定义域名(可选)
    • 在服务设置中点击 "Domains"
    • 添加你的自定义域名
    • 配置 DNS CNAME 记录指向 Zeabur 提供的域名

🔄 更新 Docker 镜像

当 Docker 镜像有新版本发布时,Zeabur 不会自动更新。需要手动触发更新。

更新步骤:

  1. 进入服务页面

    • 点击需要更新的服务(LunaTV 或 KVRocks)
  2. 重启服务

    • 点击 "服务状态" 页面,再点击 "重启当前版本" 按钮
    • Zeabur 会自动拉取最新的 latest 镜像并重新部署

💡 提示

  • 使用 latest 标签时,Restart 会自动拉取最新镜像
  • 生产环境推荐使用固定版本标签(如 v5.5.6)避免意外更新

配置文件

完成部署后为空壳应用,无播放源,需要站长在管理后台的配置文件设置中填写配置文件(后续会支持订阅)

配置文件示例如下:

{
  "cache_time": 7200,
  "api_site": {
    "dyttzy": {
      "api": "http://xxx.com/api.php/provide/vod",
      "name": "示例资源",
      "detail": "http://xxx.com"
    }
    // ...更多站点
  },
  "custom_category": [
    {
      "name": "华语",
      "type": "movie",
      "query": "华语"
    }
  ]
}
  • cache_time:接口缓存时间(秒)。
  • api_site:你可以增删或替换任何资源站,字段说明:
    • key:唯一标识,保持小写字母/数字。
    • api:资源站提供的 vod JSON API 根地址。
    • name:在人机界面中展示的名称。
    • detail:(可选)部分无法通过 API 获取剧集详情的站点,需要提供网页详情根 URL,用于爬取。
  • custom_category:自定义分类配置,用于在导航中添加个性化的影视分类。以 type + query 作为唯一标识。支持以下字段:
    • name:分类显示名称(可选,如不提供则使用 query 作为显示名)
    • type:分类类型,支持 movie(电影)或 tv(电视剧)
    • query:搜索关键词,用于在豆瓣 API 中搜索相关内容

custom_category 支持的自定义分类已知如下:

  • movie:热门、最新、经典、豆瓣高分、冷门佳片、华语、欧美、韩国、日本、动作、喜剧、爱情、科幻、悬疑、恐怖、治愈
  • tv:热门、美剧、英剧、韩剧、日剧、国产剧、港剧、日本动画、综艺、纪录片

也可输入如 "哈利波特" 效果等同于豆瓣搜索

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

订阅

将完整的配置文件 base58 编码后提供 http 服务即为订阅链接,可在 MoonTV 后台/Helios 中使用。

自动更新

可借助 watchtower 自动更新镜像容器

dockge/komodo 等 docker compose UI 也有自动更新功能

环境变量

变量 说明 可选值 默认值
USERNAME 站长账号 任意字符串 无默认,必填字段
PASSWORD 站长密码 任意字符串 无默认,必填字段
SITE_BASE 站点 url 形如 https://example.com
NEXT_PUBLIC_SITE_NAME 站点名称 任意字符串 MoonTV
ANNOUNCEMENT 站点公告 任意字符串 本网站仅提供影视信息搜索服务,所有内容均来自第三方网站。本站不存储任何视频资源,不对任何内容的准确性、合法性、完整性负责。
NEXT_PUBLIC_STORAGE_TYPE 播放记录/收藏的存储方式 redis、kvrocks、upstash 无默认,必填字段
KVROCKS_URL kvrocks 连接 url 连接 url
REDIS_URL redis 连接 url 连接 url
UPSTASH_URL upstash redis 连接 url 连接 url
UPSTASH_TOKEN upstash redis 连接 token 连接 token
NEXT_PUBLIC_SEARCH_MAX_PAGE 搜索接口可拉取的最大页数 1-50 5
NEXT_PUBLIC_DOUBAN_PROXY_TYPE 豆瓣数据源请求方式 见下方 direct
NEXT_PUBLIC_DOUBAN_PROXY 自定义豆瓣数据代理 URL url prefix (空)
NEXT_PUBLIC_DOUBAN_IMAGE_PROXY_TYPE 豆瓣图片代理类型 见下方 direct
NEXT_PUBLIC_DOUBAN_IMAGE_PROXY 自定义豆瓣图片代理 URL url prefix (空)
NEXT_PUBLIC_DISABLE_YELLOW_FILTER 关闭色情内容过滤 true/false false
NEXT_PUBLIC_FLUID_SEARCH 是否开启搜索接口流式输出 true/ false true

NEXT_PUBLIC_DOUBAN_PROXY_TYPE 选项解释:

  • direct: 由服务器直接请求豆瓣源站
  • cors-proxy-zwei: 浏览器向 cors proxy 请求豆瓣数据,该 cors proxy 由 Zwei 搭建
  • cmliussss-cdn-tencent: 浏览器向豆瓣 CDN 请求数据,该 CDN 由 CMLiussss 搭建,并由腾讯云 cdn 提供加速
  • cmliussss-cdn-ali: 浏览器向豆瓣 CDN 请求数据,该 CDN 由 CMLiussss 搭建,并由阿里云 cdn 提供加速
  • custom: 用户自定义 proxy,由 NEXT_PUBLIC_DOUBAN_PROXY 定义

NEXT_PUBLIC_DOUBAN_IMAGE_PROXY_TYPE 选项解释:

  • direct:由浏览器直接请求豆瓣分配的默认图片域名
  • server:由服务器代理请求豆瓣分配的默认图片域名
  • img3:由浏览器请求豆瓣官方的精品 cdn(阿里云)
  • cmliussss-cdn-tencent:由浏览器请求豆瓣 CDN,该 CDN 由 CMLiussss 搭建,并由腾讯云 cdn 提供加速
  • cmliussss-cdn-ali:由浏览器请求豆瓣 CDN,该 CDN 由 CMLiussss 搭建,并由阿里云 cdn 提供加速
  • custom: 用户自定义 proxy,由 NEXT_PUBLIC_DOUBAN_IMAGE_PROXY 定义

客户端

v100.0.0 以上版本可配合 Selene 使用,移动端体验更加友好,数据完全同步

AndroidTV 使用

目前该项目可以配合 OrionTV 在 Android TV 上使用,可以直接作为 OrionTV 后端

已实现播放记录和网页端同步

安全与隐私提醒

请设置密码保护并关闭公网注册

为了您的安全和避免潜在的法律风险,我们要求在部署时强烈建议关闭公网注册

部署要求

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

重要声明

  • 本项目仅供学习和个人使用
  • 请勿将部署的实例用于商业用途或公开服务
  • 如因公开分享导致的任何法律问题,用户需自行承担责任
  • 项目开发者不对用户的使用行为承担任何法律责任
  • 本项目不在中国大陆地区提供服务。如有该项目在向中国大陆地区提供服务,属个人行为。在该地区使用所产生的法律风险及责任,属于用户个人行为,与本项目无关,须自行承担全部责任。特此声明

License

MIT © 2025 MoonTV & Contributors

致谢

  • ts-nextjs-tailwind-starter — 项目最初基于该脚手架。
  • LibreTV — 由此启发,站在巨人的肩膀上。
  • ArtPlayer — 提供强大的网页视频播放器。
  • HLS.js — 实现 HLS 流媒体在浏览器中的播放支持。
  • Zwei — 提供获取豆瓣数据的 cors proxy
  • CMLiussss — 提供豆瓣 CDN 服务
  • 感谢所有提供免费影视接口的站点。

Star History

Star History Chart

View on GitHub

Recent activity

commits and pull requests

Recent open issues

view all

Releases and announcements

29 total
  1. v100.1.3v100.1.3May 28, 2026

    ### Fixed - 修复首页热门电影、热门剧集、热门综艺在番剧接口失败时一并空白的问题 - 番剧日历改为通过服务端代理请求,规避 bgm.tv 的 CORS 限制

  2. v100.1.2v100.1.2Mar 15, 2026

    ### Fixed - 移除失效的豆瓣图片来源选项

  3. v100.1.1v100.1.1Feb 27, 2026

    ### Changed - 搜索页使用虚拟滚动,优化滚动性能

  4. v100.1.0v100.1.0Feb 27, 2026

    ### Added - 管理面板新增开关支持关闭网页直播 ### Changed - 优化用户数据存储结构,加速数据获取 - 用户密码加盐存储 - 新增数据自动迁移

  5. v4.3.0v4.3.0Aug 26, 2025

    ### Added - 支持将 IPTV 频道添加到收藏中 ### Changed - 禁用 flv 直播,仅支持 m3u8 直播 - 降低代理 ts 分片的内存占用

Commits per week

last 52 weeks
90Week of 2025-09-14: 0 commitsWeek of 2025-09-21: 1 commitsWeek of 2025-09-28: 0 commitsWeek of 2025-10-05: 0 commitsWeek of 2025-10-12: 2 commitsWeek of 2025-10-19: 3 commitsWeek of 2025-10-26: 2 commitsWeek of 2025-11-02: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 9 commitsWeek of 2026-03-01: 0 commitsWeek of 2026-03-08: 0 commitsWeek of 2026-03-15: 1 commitsWeek of 2026-03-22: 0 commitsWeek of 2026-03-29: 0 commitsWeek of 2026-04-05: 0 commitsWeek of 2026-04-12: 0 commitsWeek of 2026-04-19: 0 commitsWeek of 2026-04-26: 0 commitsWeek of 2026-05-03: 0 commitsWeek of 2026-05-10: 0 commitsWeek of 2026-05-17: 0 commitsWeek of 2026-05-24: 1 commitsWeek of 2026-05-31: 0 commitsWeek of 2026-06-07: 0 commitsWeek of 2026-06-14: 0 commitsWeek of 2026-06-21: 0 commitsWeek of 2026-06-28: 0 commitsWeek of 2026-07-05: 0 commitsWeek of 2026-07-12: 0 commitsWeek of 2026-07-19: 0 commitsWeek of 2026-07-26: 0 commitsWeek of 2026-08-02: 0 commitsWeek of 2026-08-09: 0 commitsWeek of 2026-08-16: 0 commitsWeek of 2026-08-23: 0 commitsWeek of 2026-08-30: 0 commitsWeek of 2026-09-06: 0 commitsSep 14, 2025Sep 6, 2026
19 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 4 commitsSun 1:00 — 0 commitsSun 2:00 — 0 commitsSun 3:00 — 0 commitsSun 4:00 — 0 commitsSun 5:00 — 0 commitsSun 6:00 — 0 commitsSun 7:00 — 0 commitsSun 8:00 — 0 commitsSun 9:00 — 0 commitsSun 10:00 — 0 commitsSun 11:00 — 0 commitsSun 12:00 — 1 commitsSun 13:00 — 0 commitsSun 14:00 — 0 commitsSun 15:00 — 0 commitsSun 16:00 — 2 commitsSun 17:00 — 7 commitsSun 18:00 — 1 commitsSun 19:00 — 0 commitsSun 20:00 — 4 commitsSun 21:00 — 0 commitsSun 22:00 — 0 commitsSun 23:00 — 1 commitsMon 0:00 — 3 commitsMon 1:00 — 1 commitsMon 2:00 — 1 commitsMon 3:00 — 0 commitsMon 4:00 — 0 commitsMon 5:00 — 0 commitsMon 6:00 — 0 commitsMon 7:00 — 0 commitsMon 8:00 — 0 commitsMon 9:00 — 0 commitsMon 10:00 — 0 commitsMon 11:00 — 0 commitsMon 12:00 — 0 commitsMon 13:00 — 3 commitsMon 14:00 — 0 commitsMon 15:00 — 0 commitsMon 16:00 — 0 commitsMon 17:00 — 0 commitsMon 18:00 — 0 commitsMon 19:00 — 0 commitsMon 20:00 — 0 commitsMon 21:00 — 0 commitsMon 22:00 — 0 commitsMon 23:00 — 4 commitsTue 0:00 — 4 commitsTue 1:00 — 3 commitsTue 2:00 — 3 commitsTue 3:00 — 0 commitsTue 4:00 — 0 commitsTue 5:00 — 0 commitsTue 6:00 — 0 commitsTue 7:00 — 0 commitsTue 8:00 — 0 commitsTue 9:00 — 0 commitsTue 10:00 — 0 commitsTue 11:00 — 0 commitsTue 12:00 — 0 commitsTue 13:00 — 0 commitsTue 14:00 — 1 commitsTue 15:00 — 0 commitsTue 16:00 — 2 commitsTue 17:00 — 0 commitsTue 18:00 — 0 commitsTue 19:00 — 0 commitsTue 20:00 — 0 commitsTue 21:00 — 1 commitsTue 22:00 — 2 commitsTue 23:00 — 1 commitsWed 0:00 — 5 commitsWed 1:00 — 4 commitsWed 2:00 — 1 commitsWed 3:00 — 0 commitsWed 4:00 — 0 commitsWed 5:00 — 0 commitsWed 6:00 — 0 commitsWed 7:00 — 0 commitsWed 8:00 — 0 commitsWed 9:00 — 0 commitsWed 10:00 — 0 commitsWed 11:00 — 0 commitsWed 12:00 — 0 commitsWed 13:00 — 3 commitsWed 14:00 — 0 commitsWed 15:00 — 0 commitsWed 16:00 — 0 commitsWed 17:00 — 0 commitsWed 18:00 — 0 commitsWed 19:00 — 3 commitsWed 20:00 — 3 commitsWed 21:00 — 2 commitsWed 22:00 — 2 commitsWed 23:00 — 0 commitsThu 0:00 — 2 commitsThu 1:00 — 0 commitsThu 2:00 — 1 commitsThu 3:00 — 0 commitsThu 4:00 — 0 commitsThu 5:00 — 0 commitsThu 6:00 — 0 commitsThu 7:00 — 0 commitsThu 8:00 — 0 commitsThu 9:00 — 0 commitsThu 10:00 — 0 commitsThu 11:00 — 0 commitsThu 12:00 — 0 commitsThu 13:00 — 9 commitsThu 14:00 — 0 commitsThu 15:00 — 0 commitsThu 16:00 — 1 commitsThu 17:00 — 1 commitsThu 18:00 — 0 commitsThu 19:00 — 0 commitsThu 20:00 — 0 commitsThu 21:00 — 6 commitsThu 22:00 — 3 commitsThu 23:00 — 4 commitsFri 0:00 — 5 commitsFri 1:00 — 0 commitsFri 2:00 — 0 commitsFri 3:00 — 0 commitsFri 4:00 — 0 commitsFri 5:00 — 0 commitsFri 6:00 — 0 commitsFri 7:00 — 0 commitsFri 8:00 — 0 commitsFri 9:00 — 0 commitsFri 10:00 — 0 commitsFri 11:00 — 0 commitsFri 12:00 — 2 commitsFri 13:00 — 2 commitsFri 14:00 — 0 commitsFri 15:00 — 0 commitsFri 16:00 — 0 commitsFri 17:00 — 0 commitsFri 18:00 — 1 commitsFri 19:00 — 6 commitsFri 20:00 — 5 commitsFri 21:00 — 2 commitsFri 22:00 — 5 commitsFri 23:00 — 5 commitsSat 0:00 — 1 commitsSat 1:00 — 1 commitsSat 2:00 — 0 commitsSat 3:00 — 0 commitsSat 4:00 — 0 commitsSat 5:00 — 0 commitsSat 6:00 — 0 commitsSat 7:00 — 0 commitsSat 8:00 — 0 commitsSat 9:00 — 0 commitsSat 10:00 — 0 commitsSat 11:00 — 0 commitsSat 12:00 — 0 commitsSat 13:00 — 0 commitsSat 14:00 — 0 commitsSat 15:00 — 0 commitsSat 16:00 — 0 commitsSat 17:00 — 0 commitsSat 18:00 — 0 commitsSat 19:00 — 0 commitsSat 20:00 — 0 commitsSat 21:00 — 0 commitsSat 22:00 — 3 commitsSat 23:00 — 0 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Sep 9, 2026daily#8+197
Sep 8, 2026daily#8+197
Sep 7, 2026daily#4+171
  • freeCodeCamp/freeCodeCamp

    freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.

    455.3K stars · TypeScript

  • openclaw/openclaw

    The AI that really does things. Any OS. Any Platform. The lobster way. 🦞

    389.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • anomalyco/opencode

    The open source coding agent.

    206.4K stars · TypeScript