- 我的帖子已经打上 开源推广 标签: 是
- 我的开源项目完整开源,无未开源部分: 是
- 我的开源项目已链接认可 LINUX DO 社区: 是
- 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是
- 以上选择我承诺是永久有效的,接受社区和佬友监督: 是
以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出
MediaStationGo
MediaStationGo是一款轻量、漂亮、NAS 友好的私人媒体中心。Go 单二进制后端 + React 前端,覆盖媒体库管理、刮削、播放、订阅下载、Emby API 兼容、AI 搜索与推荐。
经过测试部署在本地NAS使用Infuse、VidHub等播放器播放是秒播状态
暂时阉割掉了增加多用户的功能
功能模块
模块 能力
媒体库 电影、电视剧、动漫、综艺、音乐、成人内容;自动封面、合集分季分集
刮削 本地 NFO/图片优先,TMDb/TheTVDB/Bangumi/豆瓣/Fanart/JavBus/JavDB 补全
播放 直链、HLS、字幕、续播、外部播放器、历史与收藏
发现 TMDb / 豆瓣 / Bangumi 推荐入口,多源发现与订阅
下载 qBittorrent、PT 站点、RSS/搜索订阅、自动整理
兼容 Emby API、DLNA、外部客户端与三端 UI,无需另部署Emby等服务
运维 任务、统计、存储、重复文件、回收站、NFO 导出
AI OpenAI 兼容 Base URL/API Key,智能搜索与推荐
小姐姐友好,自动识别刮削
演示站
管理员账号 :admin 密码:admin123
用户账号:Mgo 密码:admin123
测试站,请勿修改账号以及密码
展示图
少放几张图片





项目仓库
github.com
GitHub - ShukeBta/MediaStationGo: MediaStationGo 是一个面向个人、家庭 NAS...
MediaStationGo 是一个面向个人、家庭 NAS 与影音爱好者的开源媒体中心。它把「媒体库管理、自动刮削、在线播放、外部客户端兼容、PT 站点检索、订阅下载、AI 推荐」放进一个轻量的 Go 服务里,配合 React 前端提供统一、简洁、漂亮的三端体验。
欢迎各位大佬提交 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
mkdir mediastationgo; cd mediastationgo
vi docker-compose.yml #或者 vim docker-compose.yml
# MediaStationGo 默认 Docker Compose 部署文件。
#
# 快速开始:
# 1. 按需修改下方 volumes 的宿主机路径。
# 2. docker compose pull
# 3. docker compose up -d
# 4. 浏览器打开 http://<服务器IP>:18080
#
# 推荐更新命令(会清理本项目旧镜像,避免 NAS 磁盘堆满):
# curl -fsSL https://cdn.jsdelivr.net/gh/ShukeBta/MediaStationGo@main/scripts/docker-compose-update.sh -o docker-compose-update.sh
# chmod +x docker-compose-update.sh
# ./docker-compose-update.sh
#
# 默认账号:
# admin / admin123
# 首次部署后请立即到「个人资料/用户管理」修改密码。
#
# 镜像版本:
# 默认拉取 latest;如需固定版本,创建 .env 并写入:
# MEDIASTATION_IMAGE_TAG=MediaStationGo-v0.0.32
#
# 路径映射总览:
# /data 程序数据目录。保存 SQLite 数据库、JWT secret、系统配置等,必须持久化。
# /cache 缓存目录。保存海报、刮削图片、转码缓存等,建议放在空间较大的磁盘。
# /media 媒体库只读挂载目录。网页中添加媒体库时填写容器内路径,例如 /media/Movies。
# /downloads 下载目录。下载器保存路径建议填写容器内路径,例如 /downloads/Movies。
#
# NAS / 飞牛推荐直读模式:
# 如果你希望网页里直接填写 NAS 原始路径,例如
# /your-nas/media/电视剧/国产剧,
# 请在 .env 中把宿主机路径和容器路径设置成完全相同(请替换为你自己的实际路径):
#
# MEDIASTATION_MEDIA_DIR=/your-nas/media
# MEDIASTATION_MEDIA_CONTAINER_DIR=/your-nas/media
# MEDIASTATION_DOWNLOAD_DIR=/your-nas/downloads
# MEDIASTATION_DOWNLOAD_CONTAINER_DIR=/your-nas/downloads
#
# 这只是 Docker bind mount,不会复制文件,不会占用双倍空间。
#
# 本地测试模式:
# MEDIASTATION_DATA_DIR=./data
# MEDIASTATION_CACHE_DIR=./cache
# MEDIASTATION_MEDIA_DIR=./media
# MEDIASTATION_DOWNLOAD_DIR=./downloads
#
# NAS / 飞牛路径必须使用绝对路径(请替换为你自己的实际路径),例如:
# MEDIASTATION_MEDIA_DIR=/your-nas/media
# MEDIASTATION_DOWNLOAD_DIR=/your-nas/downloads
# 不要写成相对路径(如 ./media)当作 NAS 绝对路径;相对路径会被 Docker Compose 解析为当前部署目录下的子目录。
#
# 注意:
# 1. 如果 qBittorrent/Transmission/Aria2 不在本 compose 内,请确保它们能访问同一份
# 下载目录;容器内保存路径和下载器实际保存路径需要保持一致或可被媒体库扫描到。
# 2. 媒体库默认以只读方式挂载,避免误删原始媒体;如果需要整理/移动文件,可将
# /media 的 :ro 改为 :rw,或把整理目标放到 /downloads 后再手动迁移。
# 3. PUID/PGID 用于匹配 NAS/Linux 宿主机用户权限,避免下载或缓存文件权限异常。
services:
mediastation-go:
image: ghcr.io/shukebta/mediastation-go:${MEDIASTATION_IMAGE_TAG:-latest}
# 默认只在本地没有镜像时拉取,避免每次重启都访问 GHCR。
# 需要升级时建议执行 ./docker-compose-update.sh,更新后会清理本项目旧镜像。
pull_policy: missing
container_name: mediastation-go
restart: unless-stopped
ports:
# 宿主机端口:容器端口。默认访问 http://<服务器IP>:18080
- "${MEDIASTATION_HTTP_PORT:-18080}:8080"
extra_hosts:
# Linux / NAS Docker 中访问宿主机服务的固定别名。
# qBittorrent 如果运行在 NAS 宿主机上,下载器地址建议填:
# http://host.docker.internal:8085
- "host.docker.internal:host-gateway"
volumes:
# 程序持久化数据:数据库、JWT secret、运行时配置。
- ${MEDIASTATION_DATA_DIR:-./data}:/data
# 海报/背景图/转码缓存。可删除重建,但会重新下载图片和生成缓存。
- ${MEDIASTATION_CACHE_DIR:-./cache}:/cache
# 媒体库根目录。
# 默认:宿主机目录映射到容器 /media,添加媒体库时填写 /media/电影、/media/电视剧。
# NAS 直读:把 MEDIASTATION_MEDIA_CONTAINER_DIR 设置成与 MEDIASTATION_MEDIA_DIR 相同,
# 添加媒体库时即可直接填写 /your-nas/media/电影、/your-nas/media/电视剧。
# 如宿主机目录不同,请在 .env 中设置 MEDIASTATION_MEDIA_DIR。
# NAS / 飞牛等系统请写绝对路径(替换为你自己的实际路径),例如:
# MEDIASTATION_MEDIA_DIR=/your-nas/media
# 不要写相对路径,否则会变成当前部署目录下的子目录。
# 默认映射到容器 /media;如需在网页中直接填写宿主机绝对路径,可将
# MEDIASTATION_MEDIA_CONTAINER_DIR 设置为同一个绝对路径。
- ${MEDIASTATION_MEDIA_DIR:-./media}:${MEDIASTATION_MEDIA_CONTAINER_DIR:-/media}:ro
# 下载保存目录。
# 默认:宿主机目录映射到容器 /downloads,订阅保存根目录填写 /downloads。
# NAS 直读:把 MEDIASTATION_DOWNLOAD_CONTAINER_DIR 设置成与 MEDIASTATION_DOWNLOAD_DIR 相同,
# 下载器保存根目录可直接填写 /your-nas/downloads。
# 如果外部下载器也运行在 Docker 中,请给下载器挂载同一个宿主机目录。
# NAS / 飞牛等系统请写绝对路径(替换为你自己的实际路径),例如:
# MEDIASTATION_DOWNLOAD_DIR=/your-nas/downloads
# 不要写相对路径,否则下载目录会被映射到当前部署目录下面。
# 默认映射到容器 /downloads;如需下载器和应用都使用宿主机绝对路径,可将
# MEDIASTATION_DOWNLOAD_CONTAINER_DIR 设置为同一个绝对路径。
- ${MEDIASTATION_DOWNLOAD_DIR:-./downloads}:${MEDIASTATION_DOWNLOAD_CONTAINER_DIR:-/downloads}
environment:
# Web 服务监听配置。容器内固定监听 8080,对外端口由上方 ports 控制。
MEDIASTATION_APP_HOST: 0.0.0.0
MEDIASTATION_APP_PORT: 8080
MEDIASTATION_APP_WEB_DIR: /app/web/dist
# 数据与缓存目录。需与 volumes 中的容器路径一致。
MEDIASTATION_APP_DATA_DIR: /data
MEDIASTATION_DATABASE_DB_PATH: /data/mediastation.db
MEDIASTATION_CACHE_CACHE_DIR: /cache
# 宿主机到容器的路径映射提示。用于用户误填宿主机路径时自动转换为容器路径:
# /your-nas/media/电视剧 -> /media/电视剧
# /your-nas/downloads/国产剧 -> /downloads/国产剧
MEDIASTATION_MEDIA_DIR: ${MEDIASTATION_MEDIA_DIR:-./media}
MEDIASTATION_MEDIA_CONTAINER_DIR: ${MEDIASTATION_MEDIA_CONTAINER_DIR:-/media}
MEDIASTATION_DOWNLOAD_DIR: ${MEDIASTATION_DOWNLOAD_DIR:-./downloads}
MEDIASTATION_DOWNLOAD_CONTAINER_DIR: ${MEDIASTATION_DOWNLOAD_CONTAINER_DIR:-/downloads}
# 日志级别:debug / info / warn / error。
MEDIASTATION_LOGGING_LEVEL: ${MEDIASTATION_LOGGING_LEVEL:-info}
# 转码配置。留空表示自动/软件转码;硬件加速见下方 Intel/NVIDIA 示例。
MEDIASTATION_TRANSCODER_ENABLED: ${MEDIASTATION_TRANSCODER_ENABLED:-true}
MEDIASTATION_TRANSCODER_HARDWARE_ACCEL: ${MEDIASTATION_TRANSCODER_HARDWARE_ACCEL:-false}
MEDIASTATION_TRANSCODER_ENCODER: ${MEDIASTATION_TRANSCODER_ENCODER:-}
MEDIASTATION_TRANSCODER_MAX_HEIGHT: ${MEDIASTATION_TRANSCODER_MAX_HEIGHT:-1080}
# NAS 低负载保护:HLS 按播放速度转码、限制软件编码线程、限制并发、空闲自动停止。
MEDIASTATION_TRANSCODER_REALTIME: ${MEDIASTATION_TRANSCODER_REALTIME:-true}
MEDIASTATION_TRANSCODER_THREADS: ${MEDIASTATION_TRANSCODER_THREADS:-2}
MEDIASTATION_TRANSCODER_MAX_CONCURRENT: ${MEDIASTATION_TRANSCODER_MAX_CONCURRENT:-1}
MEDIASTATION_TRANSCODER_IDLE_TIMEOUT_SECONDS: ${MEDIASTATION_TRANSCODER_IDLE_TIMEOUT_SECONDS:-120}
# 跨域来源。通常无需设置;反向代理或三端客户端异常时再按需填写。
MEDIASTATION_APP_CORS_ORIGINS: ${MEDIASTATION_APP_CORS_ORIGINS:-}
# Telegram 通知/Bot 出站网络。通常留空即可;如 NAS 访问 Telegram 超时,
# 可在 .env 中填写反代 API 或代理地址。v2rayA 常见代理:
# HTTP http://host.docker.internal:20171 或 http://172.17.0.1:20171
# SOCKS socks5://host.docker.internal:20170 或 socks5://172.17.0.1:20170
# MEDIASTATION_TELEGRAM_API_BASE_URL=https://api.telegram.org
# MEDIASTATION_TELEGRAM_PROXY_URL=http://host.docker.internal:20171
MEDIASTATION_TELEGRAM_API_BASE_URL: ${MEDIASTATION_TELEGRAM_API_BASE_URL:-}
MEDIASTATION_TELEGRAM_PROXY_URL: ${MEDIASTATION_TELEGRAM_PROXY_URL:-}
# 可选:把宿主机 shell/.env 中的代理变量透传给容器。留空无效果。
# 如果 NAS 已使用 v2rayA redirect/透明代理且 Docker 网桥流量已被接管,
# 通常不需要填写这些变量。
HTTP_PROXY: ${HTTP_PROXY:-}
HTTPS_PROXY: ${HTTPS_PROXY:-}
ALL_PROXY: ${ALL_PROXY:-}
NO_PROXY: ${NO_PROXY:-127.0.0.1,localhost}
# 宿主机文件权限映射。Linux/NAS 常用 1000:1000,可用 id 命令查看。
PUID: ${PUID:-1000}
PGID: ${PGID:-1000}
TZ: ${TZ:-Asia/Shanghai}
# Intel QSV / VAAPI 硬件加速示例:
# 1. Linux/NAS 宿主机存在 /dev/dri。
# 2. 在 .env 中设置 MEDIASTATION_TRANSCODER_HARDWARE_ACCEL=true
# 和 MEDIASTATION_TRANSCODER_ENCODER=vaapi。
# 3. 取消下方 devices/group_add 注释。
# devices:
# - /dev/dri:/dev/dri
# group_add:
# - "${RENDER_GID:-989}"
# NVIDIA NVENC 硬件加速示例:
# 1. 宿主机安装 NVIDIA Container Toolkit。
# 2. 在 .env 中设置 MEDIASTATION_TRANSCODER_HARDWARE_ACCEL=true
# 和 MEDIASTATION_TRANSCODER_ENCODER=nvenc。
# 3. 取消下方 gpus 注释。
# gpus: all
healthcheck:
test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:8080/api/health || exit 1"]
interval: 30s
timeout: 10s
retries: 5
start_period: 30s
docker compose up -d
http://<host-ip>:18080 #就可以使用了
更新
docker compose pull
docker compose up -d
docker image prune -f
其他部署教程及开发使用在项目仓库中
目前项目已经可以正式部署使用,我们的下一步开发计划为增加网盘支持,目前已经实现一小部分
1 个帖子 - 1 位参与者