MoonTV:免费在线观影神器,Docker一键部署

Posted by

项目简介

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

✨ 功能特性

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

部署流程

适用于自建服务器 / NAS / 群晖等场景。

1. 直接运行(最简单)

# 拉取预构建镜像
docker pull ghcr.io/senshinya/moontv:latest

# 运行容器
# -d: 后台运行  -p: 映射端口 3000 -> 3000
docker run -d --name moontv -p 3000:3000 ghcr.io/senshinya/moontv:latest

访问 http://服务器 IP:3000 即可。(需自行到服务器控制台放通 3000 端口)

2.Docker Compose 最佳实践

docker-compose文件内容

services:
  moontv-core:
    image: ghcr.nju.edu.cn/senshinya/moontv:latest
    container_name: moontv
    restart: unless-stopped
    ports:
      - '3000:3000'
    environment:
      - USERNAME=admin
      - PASSWORD=admin_PASSWORD
      - SITE_NAME=MoonTV
      - ANNOUNCEMENT=本网站仅提供影视信息搜索服务,所有内容均来自第三方网站。本站不存储任何视频资源,不对任何内容的准确性、合法性、完整性负责。
      - NEXT_PUBLIC_STORAGE_TYPE=redis
      - REDIS_URL=redis://moontv-redis:6379
      - NEXT_PUBLIC_ENABLE_REGISTER=true
      - NEXT_PUBLIC_SEARCH_MAX_PAGE=50
      - NEXT_PUBLIC_SEARCH_MAX_PAGE=url prefix

    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

.env

CONTAINER_NAME=moontv
HOST_IP=0.0.0.0
WEB_HTTP_PORT=3000
CPUS=0
MEMORY_LIMIT=0MB
APP_PATH=/www/dk_project/dk_app/moontv/moontv_asx1

环境变量

变量说明可选值默认值
USERNAMEredis 部署时的管理员账号任意字符串(空)
PASSWORD默认部署时为唯一访问密码,redis 部署时为管理员密码任意字符串(空)
SITE_NAME站点名称任意字符串MoonTV
ANNOUNCEMENT站点公告任意字符串本网站仅提供影视信息搜索服务,所有内容均来自第三方网站。本站不存储任何视频资源,不对任何内容的准确性、合法性、完整性负责。
NEXT_PUBLIC_STORAGE_TYPE播放记录/收藏的存储方式localstorage(本地浏览器存储)、redis(仅 docker 支持)localstorage
REDIS_URLredis 连接 url,若 NEXT_PUBLIC_STORAGE_TYPE 为 redis 则必填连接 url
NEXT_PUBLIC_ENABLE_REGISTER是否开放注册,仅在 redis 部署时生效true / falsefalse
NEXT_PUBLIC_SEARCH_MAX_PAGE搜索接口可拉取的最大页数1-505
NEXT_PUBLIC_IMAGE_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 格式。

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

管理员配置

该特性目前仅支持通过 Docker+Redis 或 Cloudflare+D1 的部署方式使用

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

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

站长或管理员访问 /admin 即可进行管理员配置

AndroidTV 使用

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

暂时收藏夹与播放记录和网页端隔离,后续会支持同步用户数据

总结

MoonTV确实是一个非常实用的工具,尤其适合Docker爱好者和喜欢折腾技术的老铁们。它用极简的部署流程解决了传统影视聚合网站的痛点,无论是多源搜索、播放流媒体,还是跨平台同步,都能满足大部分需求。不过需要提醒的是,项目提供的资源均来自第三方网站,老铁们在使用时要注意遵守相关法律法规,避免造成不必要的麻烦。

项目地址和使用地址

  • • 项目地址:https://github.com/senshinya/moontv

————————————————————————————————————————————————

和你有类似需求的朋友不少,MOONTV停更后,确实涌现了不少新的开源视频部署项目。我把它们分成了几类,方便你参考:

📺 延续与替代:直接延续MOONTV血脉的项目

如果你想要和MOONTV体验最接近的,可以优先看看下面这几个“精神续作”,它们多是在原项目基础上迭代而来。

  • KatelyaTV:基于MOONTV二次开发,被公认是MOONTV最直接的“继承者”。维护更新频率高,支持Docker、Vercel、Cloudflare Pages等多种现代部署方式,功能也延续了聚合搜索、断点续播、多用户支持等特点。部署需准备配置文件。
  • DecoTV:同样是基于MOONTV(或LibreTV)二次开发,部署方式非常丰富(Docker、Cloudflare Pages、Vercel、Netlify等)。UI设计经过优化,体验更现代。
  • 月饼TV (MoonCakeTV):基于MOONTV二次开发,界面简洁美观。支持Docker、Vercel等多种部署方式,在多端适配上有一定优化。

原项目LibreTV:这个项目有时会和MOONTV一起被提及,可以作为基础选项了解。

🚀 开箱即用的聚合播放器

这类项目与MOONTV的核心功能(聚合搜索与播放)高度一致,部署简单,上手容易。

  • KVideo:现代化的聚合播放应用,UI采用Next.js 16和React 19,设计感和视觉体验突出。亮点包括整合豆瓣信息(自动获取豆瓣评分、演员信息)、深度优化的移动端播放体验。可Docker部署,支持密码访问控制。
  • Tbox:一款多功能APP空壳(支持安卓/iOS),支持导入直播源、影视和听书源。支持嗅探网页播放,尤其针对各类网盘资源(如夸克、UC、天翼云盘)的播放做了优化。

🏠 自建媒体中心(媒体服务器)

这类项目更侧重于管理和播放你本地存储的电影、电视剧等媒体文件,功能更专业。

  • Jellyfin:Emby和Plex的开源替代品,功能强大的家庭媒体服务器,是目前社区最主流的媒体中心方案之一。
  • Lunarr (Lunarr-Go):一个较新的自托管媒体流服务器,目标也是成为Plex的替代品,可在无头服务器上监控和管理影视文件。
  • ErsatzTV:非常独特的项目,能把你的本地媒体库(或Plex、Jellyfin里的内容)变成一个直播电视频道。支持IPTV和HDHomeRun模拟,非常适合有本地资源但又怀念传统“电视”感觉的用户。

📡 IPTV / 直播流处理工具

如果你的需求偏向网络电视直播源的管理和转播,以下工具更为专业。

  • iptvnator:为IPTV设计的开源播放器,采用现代Web技术(Tauri + Angular)开发,界面美观,功能全面。支持Docker部署和多平台兼容,提供了EPG电子节目指南等高级功能。
  • Tvheadend:开源电视流媒体服务器,适合拥有电视调谐器(如HDHomeRun)或希望通过网络分发IPTV内容的用户。
  • Owncast:专注自建直播,帮你在自己的服务器上运行一个类似Twitch的直播服务,完全掌控直播内容和观众管理。
  • Restreamer:自托管视频流媒体服务器,专注于简化直播和多平台推流(同时推流到YouTube、Twitch等)流程。

🏗️ 传统视频CMS(内容管理系统)

这类是传统的、功能更全面的建站系统,适合搭建独立的、带有后台管理的影视门户网站。

  • 易酷CMS:基于PHP+MySQL的传统开源影视内容管理系统,功能完善,可承载较大数据量,适合有建站经验的用户。

🛠️ 其他实用工具

  • 全部入 (allinone):这个项目主要用于聚合IPTV直播源,而非完整的影视播放器。
  • StreamShield Proxy:一个多源流媒体聚合代理工具,主要用于解决因IP限制导致的播放问题。
  • LunaTV-config源:一个为LunaTV等应用提供API和配置管理的项目,属于辅助工具。

📝 总结

简单来说,这几个分支项目的侧重点对比如下:

  • 直接延续派KatelyaTVDecoTV月饼TV。最适合追求MOONTV原始体验的用户。
  • 开箱即用派KVideoTbox。KVideo界面现代,整合豆瓣信息;Tbox则对网盘和APP端支持较好。
  • 本地媒体派JellyfinLunarrErsatzTV。适合有本地媒体管理需求,想打造专业家庭影院的用户。
  • IPTV专业派iptvnatorTvheadendOwncastRestreamer。适用于需要处理网络电视源或进行直播流处理的场景。

希望这份梳理能帮你找到心仪的项目。如果你对某个项目感兴趣想了解更多,随时可以再问我~

Leave a Reply

您的邮箱地址不会被公开。 必填项已用 * 标注