拒绝折腾海报墙!Docker部署EcoHub,短剧、影视全采集,一键观影

2026-09-10 17:38:22 0点赞 2收藏 0评论

熊猫在NAS上折腾过不少影音相关项目,有做海报墙的、有负责刮削的,也有专门负责播放的。但如果你的资源本身来自多个接口,时间久了还是会遇到一个很现实的问题:入口越来越多。

这个源搜不到换另一个,播放器里再塞几个订阅地址,能用是能用,就是怎么看都不像自己的影音库。

项目简介项目简介

最近熊猫翻到一个开源项目EcoHub。它做的事情正好反过来,先把不同来源的数据统一采集、整理、归并,再做成一个完整的Web影视站,甚至还能继续给TVBox、影视仓等客户端提供接口。

EcoHub是干嘛的?

EcoHub官方给自己的定位是“自托管影视聚合系统”。

说简单点,它自己并不提供也不保存影视文件,需要用户配置相应的采集接口。EcoHub负责的是后面的整理工作,包括影片信息采集、多来源归并、播放线路聚合、搜索、分类、缓存以及Web展示。

这也是熊猫觉得它和普通“影视壳子”区别比较大的地方。

主站负责影片的基础数据、详情、分类以及搜索入口,附属站主要负责补充播放线路。跨站匹配时会优先利用豆瓣等身份信息,匹配不到再根据规范化后的片名处理,最后把同一部影片不同来源的线路归到一起。

首页首页

EcoHub的Web目前已经包含首页、分类、搜索、影片详情以及播放页面,同时还有独立的登录页面和管理后台。

播放器播放器

播放器部分使用Artplayer和Hls.js。所以从产品形态来说,它更接近一个自己搭建的小型流媒体站,而不是单纯的接口管理工具。

短剧频道短剧频道

后台负责采集源、数据以及系统配置,前台则负责展示和播放。部署在NAS或服务器上以后,日常主要操作基本通过浏览器就能完成。

上面负责把各种来源的数据整理干净,下面再接网页、电视盒子或者App。这样思路一下就清晰多了,不用每个终端都重新折腾一遍数据源。

采集和前台分开

EcoHub在后台采集过程中会不断写入数据库,但前台并不会直接把这些正在变化的数据拿来展示。

采集后台采集后台

等一轮采集完成以后,系统还会生成列表快照、筛选索引以及对应的读模型,前台、管理页面以及TVBox/MacCMS接口主要读取已经发布完成的结果。

采集计划采集计划

后台有对应的采集管理和内容管理,针对采集你可以设置采集周期,例如今日、三天、七天等等,或者直接执行全量采集,而手动肯定是不方便的,于是在采集管理里还有个计划任务功能,通过它来实现每天定时进行采集,你只需关注前端的变化就行。

第一次把EcoHub部署好之后,打开首页很可能什么都没有。不是部署失败,而是还没有完成第一次全量采集。需要先进入后台配置采集源并执行采集,等数据处理和快照发布完成之后,影片才会正常显示。

内容管理内容管理

内容管理则可以针对已经采集到的内容管理,一些不想展示的内容可以直接删除,针对家庭用户比较友好。

系统设置系统设置

最后项目后台也支持多用户以及TG机器人通知,每天的采集任务完成可以通过机器人通知,需要触发那些内容也可以设置。

Docker部署

对于NAS用户来说,更重要的肯定还是Docker好不好装。

EcoHub在v2.0之后已经把原来的Web、Server双镜像收敛成一个All-in-One镜像,所有都放进同一个应用容器里面,除此之外还需要MySQL和Redis。

项目结构项目结构

所以整个结构大概就是EcoHub+MySQL+Redis,这里就需要我们用到Compose来部署,会比较方便后续的升级和管理。

打开极空间的Docker,再点开Compose,官方原本的内容比较复杂,这里熊猫做了一下精简,直接复制就行。

services: mysql: container_name: Eco-mysql image: mysql:8.4 restart: always environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-ecohub} MYSQL_DATABASE: ${MYSQL_DBNAME:-eco} MYSQL_USER: ${MYSQL_USER:-eco} MYSQL_PASSWORD: ${MYSQL_PASSWORD:-ecohub} volumes: - ./data/mysql:/var/lib/mysql networks: - Eco-network healthcheck: test: [ "CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -uroot -p$$MYSQL_ROOT_PASSWORD --silent", ] interval: 10s timeout: 5s retries: 10 start_period: 30s redis: container_name: Eco-redis image: redis:7.4-alpine restart: always environment: REDIS_PASSWORD: ${REDIS_PASSWORD:-ecohub} command: ["redis-server", "--requirepass", "${REDIS_PASSWORD:-ecohub}"] volumes: - ./data/redis:/data networks: - Eco-network healthcheck: test: ["CMD-SHELL", "redis-cli -a $${REDIS_PASSWORD} ping | grep PONG"] interval: 10s timeout: 5s retries: 10 start_period: 10s ecohub: container_name: Eco-hub image: ghcr.io/fe-spark/ecohub:latest restart: always environment: PORT: ${SERVER_PORT:-8080} JWT_SECRET: ${JWT_SECRET:-ecohub_2026!local@dev_secret$$001} MYSQL_HOST: ${MYSQL_HOST:-mysql} MYSQL_PORT: ${MYSQL_PORT:-3306} MYSQL_USER: ${MYSQL_USER:-eco} MYSQL_PASSWORD: ${MYSQL_PASSWORD:-ecohub} MYSQL_DBNAME: ${MYSQL_DBNAME:-eco} REDIS_HOST: ${REDIS_HOST:-redis} REDIS_PORT: ${REDIS_PORT:-6379} REDIS_PASSWORD: ${REDIS_PASSWORD:-ecohub} REDIS_DB: ${REDIS_DB:-0} # Telegram 专用代理(可选;通用代理 HTTPS_PROXY 等供采集等网络请求使用) TG_PROXY: ${TG_PROXY:-} HTTPS_PROXY: ${HTTPS_PROXY:-} HTTP_PROXY: ${HTTP_PROXY:-} ALL_PROXY: ${ALL_PROXY:-} # 采集档位(可选;默认 auto 按容器 CPU 核数自动选档) COLLECT_PROFILE: ${COLLECT_PROFILE:-auto} ports: - ${WEB_PUBLIC_PORT:-3000}:3000 - 0.0.0.0:${SERVER_PUBLIC_PORT:-18080}:${SERVER_PORT:-8080} volumes: - ./data/uploads:/app/static/upload # 后台「立即升级」通过 socket 拉 latest 并重建本容器 - /var/run/docker.sock:/var/run/docker.sock networks: - Eco-network extra_hosts: - "host.docker.internal:host-gateway" depends_on: mysql: condition: service_healthy redis: condition: service_healthy healthcheck: test: ["CMD-SHELL", "wget -q -O /dev/null http://localhost:8080/api/health"] interval: 10s timeout: 5s retries: 5 start_period: 30s networks: Eco-network: driver: bridge 环境变量环境变量

除了Compose之外,我们还需要加载.env文件,极空间目前可以直接在创建Compose时选择添加,点击之后复制以下内容就行。

WEB_PORT=3000 # Web 前台与后台端口 SERVER_PORT=18080 # API 直连端口(可选,供 TVBox/播放器) # ---- 业务配置(必填)---- JWT_SECRET='ecohub_2026!local@dev_secret$001' # ---- MySQL(必填)---- MYSQL_ROOT_PASSWORD=ecohub MYSQL_HOST=mysql MYSQL_PORT=3306 MYSQL_USER=eco MYSQL_PASSWORD=ecohub MYSQL_DBNAME=eco # ---- Redis(必填)---- REDIS_HOST=redis REDIS_PORT=6379 REDIS_PASSWORD=ecohub REDIS_DB=0

最后启动项目就行了,项目的默认用户名和密码均为admin,第一次进后台之后记得马上把密码改掉,这里要注意,后台地址并不是/admin,而是/manage。

远程访问远程访问

同时极空间的远程访问,这时候就可以访问项目首页了,web端的容器名为Eco-hub,端口如果没有改过,那么就是默认的3000。

写在最后

EcoHub给熊猫的感觉并不是“又一个在线看电影网页”。单看网页播放器,其实现在类似项目已经不少了。

它真正有意思的地方,是把采集、整理、多线路归并、缓存、网页展示以及第三方播放器接口放到了一套系统里面。

特别是NAS用户,本来就有一台24小时开机的机器。如果自己手里刚好有多个合法可用的数据来源,与其在不同客户端之间反复切换,不如在中间加一层EcoHub,把这些东西先整理好。

以上便是本次分享的全部内容了。如果你觉得还算有趣或对你有所帮助,不妨点赞收藏,最后也希望能得到你的关注,咱们下期见!

结束图结束图


作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
2
扫一下,分享更方便,购买更轻松