NAS 影视库自动化新方案,Docker一键部署MediaStationGo

2026-06-25 10:14:30 5点赞 47收藏 1评论

本期来介绍一个开源的一站式影视媒体库:MediaStationGo,简称 MGO。

笔者目前用的是MP,据本项目作者叙述,MGO与MP的最主要差异:

MP需要额外安装emby等服务配合播放,MGO只需要配合QB下载就可以在第三方播放器中实现登录观看。

如果你在MP部署使用过程中有诸多阻碍,无论是本地还是网盘资源,那不妨来试试这个项目。

NAS 影视库自动化新方案,Docker一键部署MediaStationGo

项目介绍

完整项目名:ShukeBta/MediaStationGo,可于GitHub搜索。

MediaStationGo 是一个自托管媒体管理系统,面向 NAS、小主机、家庭影音和多用户共享场景。它把媒体库、刮削、下载整理、订阅、网盘播放、Emby 协议兼容、用户权限和 Bot 通知放在一个后台里,目标是让用户只维护一套服务,就能给网页端、手机端、电视端和第三方播放器使用,无需部署Emby服务端。

项目特点

  • • 媒体库管理:电影、电视剧、动漫、综艺、音乐和自定义媒体库统一管理。

  • • Emby 协议兼容:Infuse、VidHub、SenPlayer、Fileball 等客户端可按 Emby/Jellyfin 方式添加服务器

  • • 本地 + 网盘:支持本地硬盘、下载目录、OpenList、CloudDrive2、WebDAV、STRMURL 和 302 反代播放。

  • • 订阅下载入库:连接 qBittorrent 后支持搜索、订阅、下载完成整理、刮削和入库通知。

  • • 多用户与权限:管理员/普通用户、有效期、成人内容开关、设备管理、注册码和 TGBot 绑定。

  • • 三挡部署:按规模选择 PostgreSQL、Redis、OpenSearch,低配 NAS 到大库检索都能覆盖。

部署流程

威联通NAS为例,通过Docker Compose的方式进行部署。

需要注意的是,本文介绍的是完整部署方式,也就是下图所示的第三档。如果你对于设备性能不自信,可选择第一档的默认推荐部署方式(其他的代码删掉),资源占用最低且适合绝大多数NAS。

NAS 影视库自动化新方案,Docker一键部署MediaStationGo

部署代码如下:

services: mediastation-go: image: ghcr.io/shukebta/mediastation-go:latest container_name: mediastation-go restart: unless-stopped init: true depends_on: postgres: condition: service_healthy redis: condition: service_healthy opensearch: condition: service_healthy ports: - "18080:8080" volumes: - /share/Container/MediaStationGo/data:/data - /share/Container/MediaStationGo/cache:/cache - /share/Multimedia:/media - /share/Download:/downloads environment: TZ: Asia/Shanghai PUID: "1000" PGID: "1000" MEDIASTATION_APP_HOST: 0.0.0.0 MEDIASTATION_APP_PORT: 8080 MEDIASTATION_APP_WEB_DIR: /app/web/dist MEDIASTATION_APP_DATA_DIR: /data MEDIASTATION_LOGGING_LEVEL: warn MEDIASTATION_LOGGING_FORMAT: console MEDIASTATION_LOGGING_OUTPUT_PATH: /data/logs MEDIASTATION_DATABASE_TYPE: postgres MEDIASTATION_DATABASE_DSN: postgres://mediastation:mediastation@postgres:5432/mediastation?sslmode=disable MEDIASTATION_CACHE_CACHE_DIR: /cache MEDIASTATION_CACHE_REDIS_URL: redis://redis:6379/0 MEDIASTATION_SEARCH_BACKEND: opensearch MEDIASTATION_SEARCH_OPENSEARCH_URL: http://opensearch:9200 MEDIASTATION_SEARCH_INDEX: mediastation_media MEDIASTATION_MEDIA_DIR: /share/Multimedia MEDIASTATION_MEDIA_CONTAINER_DIR: /media MEDIASTATION_DOWNLOAD_DIR: /share/Download MEDIASTATION_DOWNLOAD_CONTAINER_DIR: /downloads MEDIASTATION_TRANSCODER_ENABLED: "true" MEDIASTATION_TRANSCODER_HARDWARE_ACCEL: "false" MEDIASTATION_TRANSCODER_REALTIME: "true" MEDIASTATION_TRANSCODER_THREADS: "2" MEDIASTATION_TRANSCODER_MAX_CONCURRENT: "1" MEDIASTATION_TRANSCODER_IDLE_TIMEOUT_SECONDS: "120" networks: - mediastation_net healthcheck: test: ["CMD-SHELL", "busybox wget -qO- http://127.0.0.1:8080/api/health || exit 1"] interval: 30s timeout: 10s retries: 5 start_period: 60s logging: driver: json-file options: max-size: "10m" max-file: "3" postgres: image: postgres:16-alpine container_name: mediastation-postgres restart: unless-stopped environment: POSTGRES_DB: mediastation POSTGRES_USER: mediastation POSTGRES_PASSWORD: mediastation TZ: Asia/Shanghai volumes: - /share/Container/MediaStationGo/postgres:/var/lib/postgresql/data networks: - mediastation_net healthcheck: test: ["CMD-SHELL", "pg_isready -h 127.0.0.1 -U mediastation -d mediastation"] interval: 10s timeout: 5s retries: 10 logging: driver: json-file options: max-size: "10m" max-file: "3" redis: image: redis:7-alpine container_name: mediastation-redis restart: unless-stopped command: - redis-server - --appendonly - "yes" - --maxmemory - 256mb - --maxmemory-policy - allkeys-lru volumes: - /share/Container/MediaStationGo/redis:/data networks: - mediastation_net healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 10 logging: driver: json-file options: max-size: "10m" max-file: "3" opensearch: image: opensearchproject/opensearch:2 container_name: mediastation-opensearch restart: unless-stopped environment: discovery.type: single-node plugins.security.disabled: "true" DISABLE_INSTALL_DEMO_CONFIG: "true" bootstrap.memory_lock: "false" OPENSEARCH_JAVA_OPTS: "-Xms512m -Xmx512m" volumes: - /share/Container/MediaStationGo/opensearch:/usr/share/opensearch/data networks: - mediastation_net healthcheck: test: ["CMD-SHELL", "curl -fsS http://127.0.0.1:9200 >/dev/null || exit 1"] interval: 20s timeout: 10s retries: 15 start_period: 90s logging: driver: json-file options: max-size: "10m" max-file: "3" networks: mediastation_net: external: true

打开威联通的Container Station创建新的应用程序。

NAS 影视库自动化新方案,Docker一键部署MediaStationGo

部署完毕后,你在该应用下,会得到如图4个容器。

NAS 影视库自动化新方案,Docker一键部署MediaStationGo

配置一览

在浏览器界面输入NAS_IP:10080即可访问服务,默认账户/密码:admin/admin123

NAS 影视库自动化新方案,Docker一键部署MediaStationGo

因为这台机器啥也没有,所以界面为空,可以直接点击「前往管理后台」。

NAS 影视库自动化新方案,Docker一键部署MediaStationGo

如下图,我的个人习惯一般是先配置下载器,点击「下载器管理」。

NAS 影视库自动化新方案,Docker一键部署MediaStationGo

点击右上角「添加下载器」。

NAS 影视库自动化新方案,Docker一键部署MediaStationGo

命名随意。类型按需求选择,我个人喜欢用QB。URL这个部分要注意,其他平台我不是太清楚,威联通如果不是像上面那样多个容器统一部署到一个应用内,网络一般是不能互通的。因此要更新你的QB部署代码,让QB加入MGO网络,在原本的yml中加入部分内容。假设MGO的网络为mediastation_net,大概如下:

services: qbittorrent: ······ networks: mediastation_net: aliases: - qbittorrent networks: mediastation_net: external: true

因此URL的内容可如下图填写(name:port),当然写成QB当前的局域网访问地址也是没问题的。

NAS 影视库自动化新方案,Docker一键部署MediaStationGo

填写完毕后进行测试,可以右上角的看到成功标志。

NAS 影视库自动化新方案,Docker一键部署MediaStationGo

其实大部分配置项,以前玩过Nastool朋友,应该都会很熟悉。

再就是站点管理,比较常用的站都可以添加认证。配置这个主要用于站点搜索,订阅、自动抓取、自动下载这个我用不上,因此就不配置RSS。

操作步骤嘛,其实就是正常的填入网址和cookie保存即可。

题外:你的站到底选啥,可以到站点的首页直接拉到最底下查看(会有大字标注),如果没有,则到 FAQ 页面查看,站长一般都会提供说明。NexusPHP 应该会占不小的比例。

下载,会自动添加种子文件到QB自动下载。如下图也可以看到,下载目录是/downloads/外语电影自动分类上了的。不过这个自动归类,也是存在些许问题。

NAS 影视库自动化新方案,Docker一键部署MediaStationGo

接着,我们添加媒体库目录。因为文章开头的项目特性介绍过,以及上面的演示测试,我们可以直接用QB的/downloads,所以如下图填写。

NAS 影视库自动化新方案,Docker一键部署MediaStationGo

添加媒体库后,便可扫描刮削,如果不满意,也支持手动调整。

NAS 影视库自动化新方案,Docker一键部署MediaStationGoNAS 影视库自动化新方案,Docker一键部署MediaStationGo

可以添加很多平台的API,辅助刮削之类。

NAS 影视库自动化新方案,Docker一键部署MediaStationGo

不过在我看来,最好的也是最经典的整理方式,还是通过硬链接自动整理入库。不过这里要注意的是,硬链接不支持跨共享文件夹~也就是说,你在部署时,需要调整映射文件目录,也就是 MGO 的媒体目录要和 QB 下载目录放一起。大概结构如下:

/share/Media/downloads /share/Media/library/电影/外语电影 /share/Media/library/电影/国语电影

限于篇幅问题,大家可以参考前辈们过去的 NASTool 相关教程。

NAS 影视库自动化新方案,Docker一键部署MediaStationGo

最后是网盘挂载,以及STRM支持。

个人建议自己轻易别整理,直接用大佬们分享的整理好的资源一键转存。

作者推荐把网盘等挂载到 OpenList、CloudDrive2 或 Alist 后,在这里选择 OpenList / CloudDrive2 / Alist转存。

NAS 影视库自动化新方案,Docker一键部署MediaStationGo

因为我不太用网盘,所以直接挂上夸克咱们一起来看看效果。保存cookie,连通后,便会自动显示网盘文件夹。如果你一键转存别人整理好的,那几乎不用担心。但如果像我下图这种,建议还是提前规范命名,分门别类、一条一套的导入,用「自动识别」、「一键导入」识别错误反而会浪费更多时间。

NAS 影视库自动化新方案,Docker一键部署MediaStationGo

能刮削成功,但是海报墙这里显示的是上级文件夹的名字。

NAS 影视库自动化新方案,Docker一键部署MediaStationGo

还需要微调。

NAS 影视库自动化新方案,Docker一键部署MediaStationGo


NAS 影视库自动化新方案,Docker一键部署MediaStationGo

用infuse连接的话,大概率是因为网盘速率问题,导致并不能很好显示,本地的两部资源就没问题。Vidhub那边表现倒是好不少。

NAS 影视库自动化新方案,Docker一键部署MediaStationGo

最后

项目仍然是在起步阶段,很多功能需要优化和完善,不过基础使用倒也差不多了。

感谢观看,本文完。

展开 收起
1评论

  • 精彩
  • 最新
  • 还是没看懂它的卖点是什么?

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

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