项目简介

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

核心能力:

  • 媒体库管理:电影、电视剧、动漫、综艺、音乐和自定义媒体库统一管理。
  • Emby 协议兼容:Infuse、VidHub、SenPlayer、Fileball 等客户端可按 Emby/Jellyfin 方式添加服务器。
  • 本地 + 网盘:支持本地硬盘、下载目录、OpenList、CloudDrive2、WebDAV、STRMURL 和 302 反代播放。
  • 订阅下载入库:连接 qBittorrent 后支持搜索、订阅、下载完成整理、刮削和入库通知。
  • 多用户与权限:管理员/普通用户、有效期、成人内容开关、设备管理、注册码和 Telegram Bot 绑定。
  • 三挡部署:按规模选择 PostgreSQL、Redis、OpenSearch,低配 NAS 到大库检索都能覆盖。

演示站

https://mgo.3jzs.com/

管理员账号 :admin 密码:admin123
用户账号:Mgo 密码:admin123
测试站,请勿修改账号以及密码

演示站只用于看功能,请不要填写私人 API Key、站点 Cookie 或真实隐私信息。

展示图

少放几张图片

[grid]

[/grid]

项目仓库

https://github.com/ShukeBta/MediaStationGo

开发群组
https://t.me/MediaStationGo

欢迎各位大佬提交 Issue 和 Pull Request!

部署教程
Docker-compose部署(推荐)
docker安装脚本

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

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。默认模板不依赖 .env,复制后按自己的 NAS 路径改 volumes 和路径环境变量即可。

mkdir -p MediaStationGo
cd MediaStationGo
curl -fsSL https://raw.githubusercontent.com/ShukeBta/MediaStationGo/main/docker-compose.yml -o docker-compose.yml
docker compose up -d

启动后访问:

http://服务器IP:18080

默认账号:

admin / admin123

首次登录后请立刻修改管理员密码。

镜像地址:

GHCR:ghcr.io/shukebta/mediastation-go:latest
Docker Hub 备用:shukbet/mediastationgo:latest

三挡部署

MediaStationGo 推荐按机器资源和用户规模选择部署档位。三挡都使用 PostgreSQL 作为主数据库;Redis 和 OpenSearch 是增强组件,不替代 PostgreSQL。

档位 组件 适合场景 启动命令
第一档 MediaStationGo + PostgreSQL 大多数 NAS、个人/家庭使用、低内存机器 docker compose up -d
第二档 MediaStationGo + PostgreSQL + Redis 多用户、Emby 客户端频繁刷新、首页/媒体列表访问较多 docker compose -f docker-compose.yml -f docker-compose.standard.yml up -d
第三档 MediaStationGo + PostgreSQL + Redis + OpenSearch 超大媒体库、复杂全文搜索、后续需要独立搜索索引 docker compose -f docker-compose.yml -f docker-compose.standard.yml -f docker-compose.search.yml up -d

第一档:PostgreSQL

第一档是默认推荐部署。它只启动主服务和 PostgreSQL,资源占用最低,适合绝大多数 NAS。

# 拉取最新镜像
docker compose pull

# 启动第一档:MediaStationGo + PostgreSQL
docker compose up -d

关键数据目录:

./postgres   PostgreSQL 主数据库,必须备份
./data       JWT 密钥、运行配置、旧 SQLite 迁移源
./cache      海报、临时文件、转码缓存,可删除重建

配置示例

仓库内提供三份推荐 Compose 文件:

docker-compose.yml            第一档:MediaStationGo + PostgreSQL
docker-compose.standard.yml   第二档叠加:Redis 热缓存
docker-compose.search.yml     第三档叠加:OpenSearch 搜索增强

常用配置片段如下,注释保留为中文,方便直接复制到 NAS 上调整:

services:
  mediastation-go:
    image: ghcr.io/shukebta/mediastation-go:latest
    ports:
      # 左边是宿主机访问端口,右边是容器内端口。
      - "18080:8080"
    volumes:
      # 运行数据:JWT 密钥、配置、旧 SQLite 迁移源。
      - ./data:/data

      # 缓存目录:海报、临时文件、转码缓存,可删除重建。
      - ./cache:/cache

      # 媒体库目录:自动整理/重命名/入库需要写权限。
      - /vol1/1000/Media:/media

      # 下载目录:qBittorrent 保存目录和自动整理源目录。
      - /vol1/1000/Downloads:/downloads
    environment:
      TZ: Asia/Shanghai

      # PostgreSQL 主数据库。
      MEDIASTATION_DATABASE_TYPE: postgres
      MEDIASTATION_DATABASE_DSN: postgres://mediastation:mediastation@postgres:5432/mediastation?sslmode=disable

      # 旧 SQLite 迁移源:只在从旧版 data/mediastation.db 导入时使用。
      MEDIASTATION_DATABASE_DB_PATH: /data/mediastation.db

      # 路径换算:宿主机路径和容器路径必须一一对应。
      MEDIASTATION_MEDIA_DIR: /vol1/1000/Media
      MEDIASTATION_MEDIA_CONTAINER_DIR: /media
      MEDIASTATION_DOWNLOAD_DIR: /vol1/1000/Downloads
      MEDIASTATION_DOWNLOAD_CONTAINER_DIR: /downloads

路径映射

路径映射是 Docker 部署里最容易填错的地方。原则是:volumes 左边是宿主机真实路径,右边是容器内路径;环境变量里也要保持对应关系。

NAS 示例:

volumes:
  - /vol1/1000/Docker/moviepilot-v2/media:/vol1/1000/Docker/moviepilot-v2/media
  - /vol1/1000/qBittorrent/downloads:/vol1/1000/qBittorrent/downloads
environment:
  MEDIASTATION_MEDIA_DIR: /vol1/1000/Docker/moviepilot-v2/media
  MEDIASTATION_MEDIA_CONTAINER_DIR: /vol1/1000/Docker/moviepilot-v2/media
  MEDIASTATION_DOWNLOAD_DIR: /vol1/1000/qBittorrent/downloads
  MEDIASTATION_DOWNLOAD_CONTAINER_DIR: /vol1/1000/qBittorrent/downloads

Windows Docker Desktop 示例:

volumes:
  - D:/Media:/media
  - D:/Downloads:/downloads
environment:
  MEDIASTATION_MEDIA_DIR: D:/Media
  MEDIASTATION_MEDIA_CONTAINER_DIR: /media
  MEDIASTATION_DOWNLOAD_DIR: D:/Downloads
  MEDIASTATION_DOWNLOAD_CONTAINER_DIR: /downloads

如果后台添加媒体库时填的是 /vol1/...,Compose 里也建议把同一个 /vol1/... 挂进容器,避免自动整理和下载入库时路径不可访问。

旧 SQLite 迁移

新版推荐 PostgreSQL 作为主数据库。MEDIASTATION_DATABASE_DB_PATH 不是主库路径,而是旧 SQLite 数据的迁移源。

迁移步骤:

  1. 把旧版 mediastation.db 放到 ./data/mediastation.db
  2. 保持 MEDIASTATION_DATABASE_DB_PATH: /data/mediastation.db
  3. 启动一次,确认日志显示迁移完成,网页数据正常。
  4. 备份 ./postgres./data
  5. 确认不再需要 SQLite 后,把迁移源改成不存在的路径,例如:
environment:
  # 已完成 SQLite 迁移后,建议改成不存在的路径,避免下次启动重复检查旧库。
  MEDIASTATION_DATABASE_DB_PATH: /data/no-sqlite-migration.db

不要删除 ./postgres。PostgreSQL 已经是主数据库,删除它会丢失账号、媒体库、订阅、配置和历史数据。

更新与备份

更新镜像:

docker compose pull  #拉取最新镜像
docker compose up -d  #重启
docker image prune -f  #删除旧镜像

必须备份:

./postgres   PostgreSQL 主数据库
./data       JWT 密钥、运行配置、旧 SQLite 迁移源

可重建:

./cache      图片缓存、临时文件、转码缓存
./redis      Redis 热缓存
./opensearch 搜索索引

Bot 与通知

MediaStationGo 支持 Telegram Bot 绑定、用户菜单、群组管理菜单和事件通知。常见通知事件包括:

  • 订阅命中新资源
  • 下载任务完成
  • 入库完成
  • 刮削失败告警
  • 系统异常通知

管理员可以在后台配置 Bot Token、Chat ID、通知频道和事件类型。群组里管理类命令只允许管理员执行,普通用户只能看到和使用用户命令。

其他部署教程及开发使用在项目仓库中
目前项目已经可以正式部署使用,我们的下一步开发计划为增加网盘支持,目前已经实现一小部分


欢迎各位大佬提交 Issue 和 Pull Request!球球各位大佬点个start吧!