项目简介
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 数据的迁移源。
迁移步骤:
- 把旧版
mediastation.db放到./data/mediastation.db。 - 保持
MEDIASTATION_DATABASE_DB_PATH: /data/mediastation.db。 - 启动一次,确认日志显示迁移完成,网页数据正常。
- 备份
./postgres和./data。 - 确认不再需要 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吧!
