标签搜索

目 录CONTENT

文章目录

在VPS上用Docker部署E视界-打造私人影院

yyzq
2026-02-07 / 0 评论 / 1 点赞 / 11 阅读 / 3,044 字

前言

今天给大家介绍的是基于之前分享的冬瓜TV项目二次开发的E视界,相对于冬瓜TV这个功能上会稍微丰富点,比如有用户隔离,密码验证,广告过滤等等

项目简介

这是一个经过全面重构和升级的现代流媒体聚合播放器,基于 Node.js 和 Vue 3 构建。相比原版 本作添加了许多功能。

✨ 核心特性 (Core Features)

1. 🎬 双引擎数据驱动

  • TMDb (The Movie Database):提供高质量的电影/剧集元数据(海报、背景图、评分、简介、演职员表)。
  • CMS 聚合源 (Maccms):可集成多个自定义第三方资源站 API,自动进行全网测速,智能过滤失效源,确保播放流畅。

2. 🔍 智能搜索与聚合

  • 实时流式搜索 (SSE):采用 Server-Sent Events 技术,搜索结果边搜边显,即时反馈,无需等待所有源响应。
  • 智能关键词匹配:自动生成搜索变体(去除副标题、季数后缀等),同时搜索中英文名,大幅提高命中率。
  • 自动英中翻译:检测到英文搜索词时,自动通过 TMDB 获取中文译名并一起搜索(如搜索 “Stranger Things” 会自动添加 “怪奇物语”),无需外部翻译 API。
  • 自动分组与实时合并:同一影片的不同线路自动聚合,新搜索到的源实时合并到已有卡片,右上角源数量实时跳动。
  • SQLite 永久缓存:内置高性能 SQLite 数据库缓存,支持无限存储,读写速度极快,热搜词秒级响应。

3. 📺 沉浸式播放体验

  • 影院模式:全新设计的播放详情页,采用暗色系沉浸布局,支持剧集网格选择。
  • 智能线路测速:支持用户端直连测速和服务器代理测速,真实反映视频可用性。
  • 自动故障转移:播放失败时自动切换到下一个可用线路,无需手动操作。
  • 投屏支持:集成 DLNA/AirPlay 本地投屏功能(需浏览器支持)。
  • 🛡️ 智能广告过滤:自动检测并过滤 M3U8 流中的广告分段,支持百度、腾讯、阿里、字节等国内主流广告平台。

4. 🌏 大陆用户优化

  • 智能 IP 双重检测:采用 Cloudflare Trace + ipapi.co 双重检测机制,准确率高且无 API 速率限制,自动切换到 TMDB 反代模式。
  • 本地资源优先:核心依赖库(Vue, Bootstrap, DPlayer 等)均本地化部署,彻底解决 CDN 劫持或加载缓慢问题,秒开无压力。
  • 一键安装脚本:支持交互式配置 API Key、反代地址、运行端口。

5. 📱 多端支持

  • Android App:基于现代 Web 技术封装,支持沉浸式状态栏 (Immersive Status Bar),顶部无黑边,内容自动适配刘海屏,体验原生级流畅。
  • PWA 支持:支持添加到主屏幕,即点即用。
  • 电视/盒子:推荐使用电视浏览器(如当贝浏览器)直接访问网页版,兼容性最佳。
  • 📺 TV 模式切换:页面底部提供隐蔽的 TV 模式切换入口,一键开启遥控器导航模式,适配智能电视/盒子。

6. 🔒 安全与访问控制

  • 全局访问密码:支持设置全局访问密码,且支持记住登录状态长达 1 年,既安全又便捷。
  • 远程配置加载:支持从远程 URL 加载 db.json 配置文件,方便多站点统一管理。

有关截图

主界面
image-1770434046363
观影界面
image-1770434067545

部署方法

使用Docker安装

本教程主要演示使用docker的方式安装部署,简单便捷
164b6ac419e23bc5390dc46601a202bf

准备条件

1)一台服务器

我们使用莱卡云服务器来演示
由于涉及到链接TMDB最好使用境外云服务器比如日本,韩国美国或者香港
需要vps的可以看以下信息,配置可以参考以下资源占用情况
莱卡云
本期docker容器占用资源情况如下仅供参考,内存占用大约50M
image-1770434294913

2)本项目使用到的项目

本教程使用的官方github地址
https://github.com/EdNovas/dongguaTV
目前有472 stars
image-1770434334819

3)TMDB的API

这个API个人使用是免费的
首先注册TMDB的账号
image-1770434436520
正常验证邮件
image-1770434496528
image-1770434585384
然后登录好之后打开账户设置
image-1769157757153
image-1770434687426
然后点击API填入个人信息,地址信息等
image-1770434889822
点击即可获取
image-1770434944429
这个就是我们需要的API
image-1770435007598

4)域名

尽量绑定,不然不安全

VPS部署

一、Docker环境部署

在vps安装docker和docker-compose
Docker官方安装文档(英文)
https://duan.yyzq.eu.org/docker-001
Docker-Compose官方安装文档(英文)
https://duan.yyzq.eu.org/docker-002
Centos安装Docker和Docker-compose(中文)
https://duan.yyzq.eu.org//03
Ubuntu安装Docker和Docker-compose(中文)
https://duan.yyzq.eu.org//04

推荐直接用一键脚本

docker安装脚本

bash <(curl -sSL https://cdn.jsdelivr.net/gh/SuperManito/LinuxMirrors@main/DockerInstallation.sh)

执行以下命令查看docker版本

docker --version

Docker version 29.1.3, build f52814d

docker-compose安装脚本

curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose

执行以下命令查看docker-compose版本

docker-compose --version

Docker Compose version v5.0.1

二、部署命令

登录服务器使用root账户执行以下步骤

docker-compose命令

创建一个目录,并进入此目录

mkdir etv ;cd etv

首先新建缓存数据库文件

touch cache.db

在新建接口文件

vim db.json
{
  "sites": [
    { "key": "dyttzy", "name": "电影天堂", "type": 1, "api": "http://caiji.dyttzyapi.com/api.php/provide/vod" },
    { "key": "bfzy", "name": "暴风资源", "type": 1, "api": "https://bfzyapi.com/api.php/provide/vod" },
    { "key": "tyyszy", "name": "天涯资源", "type": 1, "api": "https://tyyszy.com/api.php/provide/vod" },
    { "key": "ffzy", "name": "非凡影视", "type": 1, "api": "https://api.ffzyapi.com/api.php/provide/vod" },
    { "key": "zy360", "name": "360资源", "type": 1, "api": "https://360zy.com/api.php/provide/vod" },
    { "key": "maotaizy", "name": "茅台资源", "type": 1, "api": "https://caiji.maotaizy.cc/api.php/provide/vod" },
    { "key": "wolong", "name": "卧龙资源", "type": 1, "api": "https://wolongzyw.com/api.php/provide/vod" },
    { "key": "jisu", "name": "极速资源", "type": 1, "api": "https://jszyapi.com/api.php/provide/vod" },
    { "key": "dbzy", "name": "豆瓣资源", "type": 1, "api": "https://dbzy.tv/api.php/provide/vod" },
    { "key": "mozhua", "name": "魔爪资源", "type": 1, "api": "https://mozhuazy.com/api.php/provide/vod" },
    { "key": "mdzy", "name": "魔都资源", "type": 1, "api": "https://www.mdzyapi.com/api.php/provide/vod" },
    { "key": "zuid", "name": "最大资源", "type": 1, "api": "https://api.zuidapi.com/api.php/provide/vod" },
    { "key": "yinghua", "name": "樱花资源", "type": 1, "api": "https://m3u8.apiyhzy.com/api.php/provide/vod" },
    { "key": "wujin", "name": "无尽资源", "type": 1, "api": "https://api.wujinapi.me/api.php/provide/vod" },
    { "key": "wwzy", "name": "旺旺短剧", "type": 1, "api": "https://wwzy.tv/api.php/provide/vod" },
    { "key": "ikun", "name": "iKun资源", "type": 1, "api": "https://ikunzyapi.com/api.php/provide/vod" },
    { "key": "lzi", "name": "量子资源", "type": 1, "api": "https://cj.lziapi.com/api.php/provide/vod" },
    { "key": "bdzy", "name": "百度资源", "type": 1, "api": "https://api.apibdzy.com/api.php/provide/vod" },
    { "key": "hongniuzy", "name": "红牛资源", "type": 1, "api": "https://www.hongniuzy2.com/api.php/provide/vod" },
    { "key": "xinlangaa", "name": "新浪资源", "type": 1, "api": "https://api.xinlangapi.com/xinlangapi.php/provide/vod" },
    { "key": "ckzy", "name": "CK资源", "type": 1, "api": "https://ckzy.me/api.php/provide/vod" },
    { "key": "ukuapi", "name": "U酷资源", "type": 1, "api": "https://api.ukuapi.com/api.php/provide/vod" },
    { "key": "1080zyk", "name": "1080资源", "type": 1, "api": "https://api.1080zyku.com/inc/apijson.php/" },
    { "key": "hhzyapi", "name": "豪华资源", "type": 1, "api": "https://hhzyapi.com/api.php/provide/vod" },
    { "key": "subocaiji", "name": "速博资源", "type": 1, "api": "https://subocaiji.com/api.php/provide/vod" },
    { "key": "p2100", "name": "飘零资源", "type": 1, "api": "https://p2100.net/api.php/provide/vod" },
    { "key": "aqyzy", "name": "爱奇艺", "type": 1, "api": "https://iqiyizyapi.com/api.php/provide/vod" },
    { "key": "yzzy", "name": "优质资源", "type": 1, "api": "https://api.yzzy-api.com/inc/apijson.php" },
    { "key": "myzy", "name": "猫眼资源", "type": 1, "api": "https://api.maoyanapi.top/api.php/provide/vod" },
    { "key": "rycj", "name": "如意资源", "type": 1, "api": "https://cj.rycjapi.com/api.php/provide/vod" },
    { "key": "jinyingzy", "name": "金鹰点播", "type": 1, "api": "https://jinyingzy.com/api.php/provide/vod" },
    { "key": "guangsuapi", "name": "光速资源", "type": 1, "api": "https://api.guangsuapi.com/api.php/provide/vod" }
  ],
  "lives": [
    {
      "name": "YanG",
      "type": 0,
      "url": "https://tv.iill.top/m3u/Gather",
      "playerType": 1
    }
  ]
}

然后再新建docker-compose.yml

vim docker-compose.yml
services:
  donggua-tv:  # 服务名称为 donggua-tv
    image: ghcr.io/ednovas/dongguatv:latest  # 使用的镜像是 ghcr.io/ednovas/dongguatv:latest
    container_name: donggua-tv  # 容器名称为 donggua-tv
    ports:
      - "3000:3000"  # 将容器的 3000 端口映射到主机的 3000 端口
    environment:
      - TMDB_API_KEY=e3509125c41f4a223e54a6c038bf61ac  # TMDB API 密钥
      - ACCESS_PASSWORD=123456,1122334  # 设置两个访问密码,多个密码使用逗号分隔
    volumes:
      - ./db.json:/app/db.json  # 将本地的 db.json 文件挂载到容器的 /app/db.json
      - ./cache.db:/app/cache.db  # 将本地的 cache.db 文件挂载到容器的 /app/cache.db
    restart: always  # 容器崩溃后自动重启

📢注意这个TMDB_API_KEY如果不填或者填错无法正常使用

三、执行容器运行命令

docker-compose up -d  #运行容器
docker-compose ps  #查看是否启动成功

正常启动如下所示

 docker-compose ps
NAME         IMAGE                              COMMAND                  SERVICE      CREATED        STATUS        PORTS
donggua-tv   ghcr.io/ednovas/dongguatv:latest   "docker-entrypoint.s…"   donggua-tv   20 hours ago   Up 20 hours   0.0.0.0:3000->3000/tcp, [::]:3000->3000/tcp

四、web界面

打开web页面使用
成功以后需要打开自己相应的端口3000)防火墙就可以web端访问了

主界面

http://ip:3000

输入自定义的密码即可使用
image-1770435703753
都是自动检测资源延迟的
image-1770435845444
其他功能自行探索

绑定域名

VPS上的建议绑定下域名,方便公网使用
绑定域名的教程参考以下内容

绑定域名视频教程

B站

YouTube

绑定域名可以参考
NginxProxyManager
https://duan.yyzq.eu.org//npm-ch

有任何问题可以直接留言或者问我
有任何问题可以直接留言或者问我
有任何问题可以直接留言或者问我

欢迎关注我们的微信公众号!
微信公众号

1
广告 广告

评论区