English version: README_EN.md · 技术文档:docs/README.md
一个开箱即用的视频管理系统,用来搭建面向观众的在线视频网站。支持内容管理、播放和后台运营,前端自适应手机、平板和电脑。
- web网页,自适应PC端,手机移动端,平板等各种屏幕大小
- 移动端APP,支持Android和IOS平台
- TV电视端,支持Android TV
面向普通观众的观影网站。观众打开网站就能:
- 在首页看到推荐视频、分类入口和最新内容
- 按分类(电影、电视剧、综艺、动漫等)浏览视频
- 按地区、年份、语言筛选和排序视频
- 进入视频详情页查看海报、简介、导演、演员、评分、播放源和剧集列表
- 在播放页流畅观看视频,支持切换播放源、选集、快进快退、全屏
- 通过搜索快速找到想看的视频
- 在手机、平板、电脑上都有良好的浏览体验(自适应屏幕)
- 切换明暗主题
系统分为两个独立的部分,分别面向不同的人:
| 部分 | 使用者 | 用来做什么 |
|---|---|---|
| 用户端(前台网站) | 普通观众 | 浏览、搜索、观看视频 |
| 管理后台 | 站长 / 运营 / 录入员 | 管理视频内容、配置采集、管理用户、设置站点 |
- 首页概况:一眼看到今日新增视频数、总视频数、采集任务状态等运营数据
- 内容管理
- 分类管理:多级分类的增删改查、排序、启用/禁用
- 视频管理:新增、编辑、删除、上下架、批量操作
- 直播管理:电视直播频道的增删改查、分类和播放地址配置
- 导演 / 演员 / 标签管理
- 播放源管理:全局播放源和剧集播放链接
- Banner 管理:首页轮播图配置
- 数据采集:配置采集源、定时采集、分类映射、播放源绑定、查看采集日志
- 用户管理:管理员账号、用户组(角色)、普通用户、登录日志
- 系统设置:站点名称、Logo、版权、备案号、SEO 关键词、API 配置、系统日志
如果你不想一部一部视频手动录入,可以使用采集功能自动拉取其他站点的视频数据:
- 支持默认格式(系统自定义)和苹果 CMS 格式两种采集源
- 支持定时采集
- 也支持手动一键触发某个采集源立即采集
- 支持字段映射和分类映射,把外部数据对齐到你的站点结构
- 采集到的播放链接会自动归入你绑定的播放源
- 完整的采集日志,方便排查问题
不想从源码构建?可以直接下载已打包好的发布包,解压后按以下步骤运行。发布包是自包含的,包含后端二进制、前端构建产物、配置文件、数据库迁移脚本和 Docker 部署文件,修改配置后即可直接启动。
前往 Releases 页面 下载对应平台的压缩包:
- Linux:
orange-tv-<版本>-linux-amd64.tar.gz - Windows:
orange-tv-<版本>-windows-amd64.zip
# Linux
tar -xzf orange-tv-<版本>-linux-amd64.tar.gz
cd orange-tv-<版本>/
# Windows
# 右键压缩包 → 解压到当前文件夹,进入解压后的目录解压后的目录结构:
.
├── orange-tv # 后端二进制(Linux/macOS)
├── orange-tv.exe # 后端二进制(Windows)
├── configs/ # 配置文件
│ ├── config.yaml # 默认/示例配置(含完整字段说明)
│ └── config.prod.yaml # 生产环境配置(可通过环境变量覆盖)
├── migrations/ # 数据库迁移脚本
├── web/
│ ├── client/ # 用户端前端构建产物(含 config.js)
│ └── admin/ # 管理端前端构建产物(含 config.js)
├── nginx/nginx.conf # nginx 示例配置(用户端 80 / 管理端 81)
├── .env.example # Docker Compose 环境变量示例
├── Dockerfile # 一体化镜像构建文件
├── docker-compose.yml # 一键 Docker Compose(应用 + MySQL)
└── docker-entrypoint.sh # 容器入口脚本
默认走同源 /api(nginx 反代到后端),一般不用改。
若前端与后端不同源,编辑发布包里的这两个文件:
web/client/config.js
web/admin/config.js
把 apiBaseUrl 改成后端地址(只填 origin,不要带 /api):
window.__ORANGE_TV_CONFIG__ = {
apiBaseUrl: 'https://api.example.com',
}保存后刷新浏览器即可,无需重新打包。留空则继续同源。请限制这两个文件的写权限。
前置条件:服务器已安装 Docker 和 Docker Compose(Docker 20.10+)。
# 复制环境变量示例并按需修改(DB 账号、JWT_SECRET、端口等)
cp .env.example .env
# 启动应用 + MySQL(首次启动会自动创建数据库并执行迁移)
docker compose up -d
# 查看日志确认启动正常
docker compose logs -f app启动后:
- 用户端:
http://<host>:80 - 管理端:
http://<host>:81
-
修改
configs/config.prod.yaml中的数据库连接等信息(或通过环境变量覆盖)。 -
执行数据库迁移:
./orange-tv migrate up -c configs/config.prod.yaml
-
启动后端:
./orange-tv serve -c configs/config.prod.yaml
-
用 nginx 托管前端:参考
nginx/nginx.conf,调整静态资源路径后nginx -s reload。
-
修改
configs\config.prod.yaml中的数据库连接等信息。 -
执行数据库迁移:
orange-tv.exe migrate up -c configs\config.prod.yaml -
启动后端:
orange-tv.exe serve -c configs\config.prod.yaml -
用 IIS 或其他 Web 服务器托管
web\client与web\admin下的前端静态资源,将/api反向代理到http://127.0.0.1:8080。
服务启动且数据库迁移完成后,需要创建一个超级管理员账号才能登录管理端。将 your_password 替换为你自己的密码。
# Docker Compose
docker compose exec app /app/orange-tv admin create --username admin --password your_password --email admin@example.com
# 裸机(Linux)
./orange-tv admin create --username admin --password your_password --email admin@example.com -c configs/config.prod.yaml
# 裸机(Windows)
orange-tv.exe admin create --username admin --password your_password --email admin@example.com -c configs\config.prod.yaml创建成功后输出类似 Created super_admin: id=1 username=admin,即可用该账号登录管理端 http://<host>:81,开始录入或采集视频内容。
发布包内附带的
README.md包含更详细的部署说明,可一并参考。
以下截图仅用于功能演示,所展示的内容均为测试数据,不代表任何真实版权视频内容,如有侵权请联系删除。
更多截图见 screenshot。
更多截图见 screenshot/desktop。
如果你是开发者或运维人员,希望从源码构建,请按以下步骤部署:
- 准备一台服务器,安装好 Go 1.26.4+ 和 MySQL 8.x/9.x
- 克隆本仓库:
git clone https://github.com/ilaziness/orange-tv.git - 按照 部署文档 完成配置、迁移和启动
- 用命令行创建第一个管理员账号,然后登录管理后台开始录入或采集视频
详细的安装、配置、命令和技术说明请查阅 技术文档。
| 文档 | 内容 |
|---|---|
| 技术文档 | 项目结构、配置、命令、数据库、可观测性等技术说明 |
| 部署文档 | 单实例、多实例、Docker 部署指南 |
| 模块使用说明 | 如何选择和删除不需要的服务模块 |
| 可观测性指南 | 日志、链路追踪、指标监控配置 |
本项目仅供学习交流和技术研究使用,不提供、不存储、不传播、不内置任何视频内容。
- 本系统源码与发布包内不内置任何视频内容、不内置任何播放数据,所有播放内容均为使用者自行录入
- 系统中的采集功能仅为技术演示,使用者需自行确保采集行为符合相关法律法规及源站点的使用条款
- 使用者需对所采集内容的版权合法性、所部署站点的运营行为自行承担全部责任
- 项目作者不对任何因使用或滥用本系统而产生的法律纠纷负责
本项目基于 MIT License 开源。


