Files
Aliyun-VOD-Media-Library-Ma…/README.md
T

113 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 阿里云 VOD 媒体库管理器
一个**轻量、开源、可自托管**的阿里云视频点播(VOD)媒体资源管理后台,解决官方控制台操作繁琐、批量处理能力弱的问题。
## 功能特性
- 视频库快速查看、搜索、筛选(标题、分类、标签、状态、时间)
- 批量获取视频播放/下载地址,支持选择清晰度
- 批量删除视频
- 多账号/多 Region 切换管理
- 内置登录与角色控制(管理员 / 只读)
- 操作日志审计
- 单 Docker 镜像一键部署
## 技术栈
- **前端**React 18 + TypeScript + Vite + Ant Design 5 + Zustand
- **后端**Node.js 20 + Express + TypeScript + SQLite
- **阿里云 SDK**`@alicloud/pop-core`
- **部署**Docker + Docker Compose
## 快速开始
### 方式一:Docker Compose(推荐)
```bash
git clone https://github.com/your-org/Aliyun-VOD-Media-Library-Manager.git
cd Aliyun-VOD-Media-Library-Manager/docker
cp .env.example .env
# 编辑 .env,设置 JWT_SECRET 等
sudo docker-compose up -d
```
访问 http://localhost:3001,默认账号密码 `admin` / `admin`
### 方式二:源码运行
```bash
# 安装依赖
npm install
# 启动后端(端口 3001
npm run dev -w apps/server
# 新终端启动前端(端口 5173
npm run dev -w apps/web
```
## 配置说明
关键环境变量:
| 变量 | 说明 | 默认值 |
| --- | --- | --- |
| `JWT_SECRET` | JWT 签名密钥,生产环境必须修改 | `vod-manager-dev-secret-change-me` |
| `APP_ENCRYPTION_KEY` | AccessKey Secret 加密密钥 | 空(明文存储,会告警) |
| `DEFAULT_ADMIN_USERNAME` | 默认管理员账号 | `admin` |
| `DEFAULT_ADMIN_PASSWORD` | 默认管理员密码 | `admin` |
| `DB_PATH` | SQLite 数据库路径 | `./data/vod-manager.db` |
## 阿里云 RAM 最小权限
建议为本工具单独创建 RAM 子用户,并授予最小权限:
```json
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"vod:Get*",
"vod:List*",
"vod:SearchMedia",
"vod:GetPlayInfo",
"vod:DeleteVideo",
"vod:UpdateVideoInfo"
],
"Resource": "*"
}
]
}
```
如果只需要只读能力,请移除 `DeleteVideo``UpdateVideoInfo`
## 项目结构
```
.
├── apps/
│ ├── web/ # React 前端
│ └── server/ # Express 后端 + SQLite
├── docker/
│ ├── Dockerfile
│ └── docker-compose.yml
├── docs/ # 部署与使用文档
├── PRD.md # 产品需求文档
└── README.md
```
## 贡献指南
欢迎 Issue 和 Pull Request。请确保:
1. 代码通过 `npm run lint`
2. 核心逻辑补充测试
3. 提交信息清晰说明改动
## License
[MIT](./LICENSE)