MyTube 详细部署教程
MyTube 详细部署教程
1. 项目简介
MyTube 是一款专为视频收藏爱好者和 NAS 用户打造的开源自托管视频下载与管理平台。它集成了视频下载、本地存储与播放功能,支持 YouTube、Bilibili、Twitch、MissAV 及 yt-dlp 支持的数十个网站,让你轻松构建属于自己的私有影音资料库。
核心功能:
- 多平台视频下载:支持 YouTube、Bilibili 等 yt-dlp 支持的主流平台
- 本地化存储:视频文件及缩略图自动完整下载至本地,实现永久保存
- 可视化合集管理:提供直观的 Web 界面,支持创建自定义合集
- 内置播放器:应用内集成视频播放器,无需第三方工具即可直接观看
- 自动订阅与下载:支持频道订阅、自动下载跟踪
- Cloudflare Tunnel 支持:内置穿透功能,无需端口转发即可安全远程访问
- Agent 集成:支持 MCP 协议,可接入 openclaw、hermes 等 Agent 助手实现自动化管理
- REST API 支持:提供完整的 API 接口,支持第三方应用集成
2. 部署前准备
2.1 硬件要求
- 操作系统:支持 Docker 的任意系统(Linux、macOS、Windows 或 NAS)
- 内存:推荐 2GB 以上
- 硬盘空间:根据视频存储需求决定
- 网络:稳定的互联网连接
2.2 软件要求
Docker 部署(推荐):
- Docker 20.10+
- Docker Compose V2
源码部署:
- Node.js 22.22+、23.x、24.x、25.x 或 26.x
- npm v9+
重要提示:后端依赖 better-sqlite3,不支持的 Node 版本会在 npm install 时失败。Docker 镜像已内置 Node 22,推荐使用 Docker 部署。
3. 方式一:Docker Compose 部署(推荐)
这是官方推荐的部署方式,适合大多数用户。
3.1 下载 Docker Compose 配置文件
从项目仓库获取 stacks/docker-compose.yml 配置文件,或直接创建以下内容:
1 | services: |
3.2 启动服务
1 | docker compose up -d |
3.3 访问应用
容器运行后,在浏览器中访问:
- 前端界面:
http://localhost:5556 - 后端 API:
http://localhost:5551
3.4 数据持久化说明
上述配置会在当前目录创建两个文件夹用于持久化数据:
./uploads:存储下载的视频和缩略图./data:存储 SQLite 数据库和日志
4. 方式二:单容器部署
如果你偏好使用单个容器,可以使用官方发布的单容器镜像,该镜像已包含构建好的前端静态资源。
4.1 使用官方 Compose 文件
1 | docker-compose -f stacks/docker-compose.single-container.yml up -d |
4.2 自定义存储路径
如果你想自定义数据存储路径,可以覆盖默认值:
1 | MYTUBE_UPLOADS_DIR=./uploads \ |
4.3 访问方式
单容器模式下,前端和 API 通过同一端口访问:
- 前端界面:
http://localhost:5551 - 后端 API:
http://localhost:5551/api
5. 方式三:源码部署(开发者)
适合需要修改源码或深度定制的开发者。
5.1 环境准备
确保已安装符合要求的 Node.js 版本(22.22+)。
5.2 克隆项目
1 | git clone https://github.com/franklioxygen/MyTube.git |
5.3 配置环境变量
后端配置:
1 | cd backend |
编辑 .env 文件:
1 | PORT=5551 |
前端配置:
1 | cd frontend |
编辑 .env 文件:
1 | VITE_API_URL=/api |
5.4 安装依赖并启动
1 | # 安装后端依赖 |
6. 初始配置
6.1 设置中文界面
系统部署完成后,点击右上角的设置按钮,选择 Settings,将语言修改为中文界面。
6.2 设置访问密码
由于系统默认没有管理员账号,建议第一时间到 安全与访问 里开通登录保护,设置一个访问密码。
6.3 上传 Cookie(重要)
如果要下载 YouTube、Bilibili 等平台的视频,必须上传你自己的 cookie 信息到本地,否则会因网站拦截导致下载失败。
获取 Cookie 步骤:
- 打开浏览器,登录目标视频网站
- 按 F12 打开开发者工具
- 刷新页面,切换到 网络(Network) 菜单
- 选择任意请求,在右侧标头中找到 Cookie 配置项
- 复制 Cookie 内容并上传到 MyTube 设置中
6.4 配置 API Key(用于 Agent 集成)
开启登录保护后,系统会默认开启 API Key 鉴权。API Key 可以用于让 openclaw、hermes 等 Agent 助手调用 MyTube API。
API Key 权限说明:API Key 只能使用下载相关功能,如需完整的 Agent 管理能力,还需要提供 MyTube 站点的 Cookie。
7. 接入 Agent 助手(可选)
MyTube 支持 MCP(Model Context Protocol),可以接入 openclaw、hermes 等 Agent 助手实现自动化管理。
7.1 MCP Server 要求
- Node.js 20 或更高版本
- 可访问的 MyTube 1.10.x 服务器
7.2 安装方式
1 | npx -y mytube-mcp |
或从源码运行:
1 | git clone https://github.com/franklioxygen/mytube-mcp.git |
7.3 环境变量配置
| 变量名 | 说明 |
|---|---|
MYTUBE_BASE_URL |
MyTube 服务器地址(必需) |
MYTUBE_AUTH_MODE |
认证模式:api-key 或 admin-session |
MCP_TRANSPORT |
传输方式:stdio(默认)或 http |
7.4 提供给 Agent 的信息
将以下信息发给 Agent,让它整理成 skill:
- MyTube 服务 URL:
你的NAS地址:5551/api - API Key:复制你创建的 API Key
- API 文档:参考项目中的 api-endpoints.md
8. 安全注意事项(重要)
8.1 版本安全提醒
MyTube 历史版本存在多个安全漏洞,务必使用最新版本:
| CVE 编号 | 影响版本 | 问题描述 | 修复版本 |
|---|---|---|---|
| CVE-2026-23837 | ≤1.7.65 | 未认证用户可绕过身份验证,访问和修改应用设置 | 1.7.66 |
| CVE-2026-33890 | <1.8.71 | 未认证攻击者可注册任意 passkey 获取管理员权限 | 1.8.71 |
| CVE-2026-33735 | <1.8.69 | 低权限用户可上传替换 SQLite 数据库 | 1.8.69 |
| CVE-2026-24140 | ≤1.7.78 | 设置管理功能存在批量赋值漏洞 | 1.7.78 |
8.2 部署安全建议
- 使用最新版本:始终使用最新版本的 Docker 镜像或源码
- 启用登录保护:设置强密码,避免未授权访问
- 限制网络访问:通过防火墙或反向代理限制
/api/端点的访问 - 定期更新:关注项目更新,及时修复安全漏洞
9. 常见问题与解决方案
9.1 端口冲突
如果端口 5551 或 5556 被占用,修改 PORT 环境变量,并相应更新前端的 VITE_API_URL 和 VITE_BACKEND_URL。
9.2 视频下载失败
- 检查是否已上传有效的 Cookie 信息
- 确认目标网站是否需要登录才能访问
- 查看后端日志排查具体错误
9.3 Docker 网络连接问题
如果在 OpenWrt/iStoreOS 等系统上遇到容器无法访问互联网的问题,可以尝试:
- 添加路由器的 DNS 服务器:
dns: [8.8.8.8, 8.8.4.4] - 或使用 host 网络模式运行后端
10. 部署架构总结
| 部署方式 | 适用场景 | 访问端口 | 优势 |
|---|---|---|---|
| 双容器 Docker | 生产环境 | 前端 5556 / 后端 5551 | 前后端分离,便于扩展 |
| 单容器 Docker | 简单部署 | 5551 | 配置简单,资源占用少 |
| 源码部署 | 开发者 | 自定义 | 完全可控,便于定制 |
部署完成后,你可以通过 MyTube 构建自己的私有影音库,摆脱网络卡顿与内容下架的烦恼。无论是搭建家庭媒体中心、永久收藏珍贵内容,还是创建专注的学习资料库,MyTube 都能满足你的需求。



