补充说明
本教程介绍 fan-video-tr 从源码编译、发布 GitHub Release 到目标服务器一键安装、卸载、备份、恢复的完整流程,适用于个人项目自建发布链路。
项目:fan-video-tr|视频转码工具(基于 FFmpeg,单二进制 + 原生前端内嵌,无账号密码的内网工具) 仓库:https://github.com/meimolihan/fan-video-tr 镜像:
mobufan/fan-video-tr(Docker Hub)、ghcr.io/meimolihan/fan-video-tr(GHCR),均为linux/amd64+linux/arm64multi-arch
安装与卸载
安装 / 升级
bash -c "$(curl -sSL https://raw.githubusercontent.com/meimolihan/fan-video-tr/main/scripts/install.sh)"
- 静默安装 / 升级(指定端口、安装目录、视频浏览根目录)
bash -c "$(curl -sSL https://raw.githubusercontent.com/meimolihan/fan-video-tr/main/scripts/install.sh)" -p 8790 -d /var/lib/fan-video-tr -s /vol2/1000/downloads/fan-video-tr -y
- 未指定
-b且本地无构建产物时,脚本自动从 GitHub Release 下载对应架构(amd64/arm64)二进制(内置 ghfast.top 等国内加速镜像逐个回退);也可用-b <路径>指定本地构建产物。 - 脚本会自动检测并安装
ffmpeg/ffprobe(二进制通过外部命令调用 ffmpeg,不自带 ffmpeg 静态库;容器镜像内已内置)。 - 升级直接重跑安装脚本:自动拉取 latest 覆盖二进制,重建 systemd 服务并重启,数据目录保留。
- 无 systemd 环境(容器/受限环境)自动回退为
nohup后台运行,重启后不会自动恢复。
卸载命令
bash scripts/uninstall.sh -y --purge
- 远程一键卸载
bash -c "$(curl -sSL https://raw.githubusercontent.com/meimolihan/fan-video-tr/main/scripts/uninstall.sh)" -y --purge
- 数据目录默认保留;
--purge或交互确认后才会清除(不可恢复),--keep-data强制保留。
Docker 部署
docker pull mobufan/fan-video-tr:latest
docker run -d --name fan-video-tr --restart unless-stopped -p 8790:8790 \
-e FVT_APP_MEDIA_DIR=/media \
-v /vol1/1000/compose/fan-video-tr/data:/data \
-v /vol2/1000/downloads/fan-video-tr:/media:ro \
--device /dev/dri:/dev/dri \
mobufan/fan-video-tr:latest
或使用一键脚本:dc_inst_fan-video-tr
bash <(curl -sL gitee.com/meimolihan/cmdbox/raw/master/sh/dc_inst_fan-video-tr.sh) 8790 /vol1/1000/compose/fan-video-tr
备份与恢复
fan-video-tr 仓库未提供专门的备份/恢复脚本,备份对象为数据目录(转码成品
output/、转码模板profiles.json、配置config.yaml、日志)。仓库内的fan-video-tr backup/restore子命令仅输出操作说明。
备份数据
- 手动备份(推荐停服务后拷贝,避免转码写入中)
sudo systemctl stop fan-video-tr
sudo tar -czf /vol2/1000/file/backup/fan-video-tr-data_$(date +%Y%m%d_%H%M%S).tar.gz \
-C /var/lib/fan-video-tr data
sudo systemctl start fan-video-tr
- 使用 cmdbox 通用备份脚本(自动保留 N 份)
bash <(curl -sL gitee.com/meimolihan/cmdbox/raw/master/sh/universal_backup.sh) /var/lib/fan-video-tr/data /vol2/1000/file/backup/fan-video-tr-backup 6
- 将备份脚本添加到系统定时任务
# 1.下载脚本到 /usr/local/bin/fan-video-tr_backup
curl -fsSL gitee.com/meimolihan/cmdbox/raw/master/sh/universal_backup.sh -o /usr/local/bin/fan-video-tr_backup
# 2.增加执行权限
chmod +x /usr/local/bin/fan-video-tr_backup
# 3.测试运行一次(源目录/备份目录/保留份数:/var/lib/fan-video-tr/data → /vol2/1000/file/backup/fan-video-tr-backup 保留6份)
/usr/local/bin/fan-video-tr_backup /var/lib/fan-video-tr/data /vol2/1000/file/backup/fan-video-tr-backup 6
# 4.追加 crontab(root):每日凌晨2点30分执行,防重复追加
(crontab -l 2>/dev/null | grep -Fq '/usr/local/bin/fan-video-tr_backup /var/lib/fan-video-tr/data /vol2/1000/file/backup/fan-video-tr-backup 6') || (crontab -l 2>/dev/null; echo '30 2 * * * /usr/local/bin/fan-video-tr_backup /var/lib/fan-video-tr/data /vol2/1000/file/backup/fan-video-tr-backup 6 >> /var/log/fan-video-tr_backup.log 2>&1') | crontab -
# 5.验证定时任务是否写入成功
crontab -l
恢复数据
- 恢复
/vol2/1000/file/backup/fan-video-tr-backup目录最新的备份
# 1.停服务并保留现有数据
sudo systemctl stop fan-video-tr
sudo mv /var/lib/fan-video-tr/data /var/lib/fan-video-tr/data.bak.$(date +%Y%m%d_%H%M%S)
# 2.解压最新备份(备份包内顶层目录为 data/)
sudo tar -xzf "$(ls -1t /vol2/1000/file/backup/fan-video-tr-backup/*.tar.gz | head -1)" -C /var/lib/fan-video-tr
sudo chmod 755 /var/lib/fan-video-tr/data
# 3.启动服务并核对模板/成品
sudo systemctl start fan-video-tr
journalctl -u fan-video-tr -n 50 --no-pager
- 也可直接用管理菜单完成备份与恢复:fan-video-tr_menu(选项
77备份 /88恢复)
脚本命令
| 命令 | 说明 |
|---|---|
bash scripts/install.sh [-p PORT] [-d INSTALL_DIR] [-s VIDEO_DIR] [-b BIN] [-y] |
安装 / 升级为 systemd 服务(无 systemd 回退后台运行) |
bash scripts/uninstall.sh [-y] [--purge|--keep-data] |
卸载 fan-video-tr |
bash scripts/build-and-push.sh vX.Y.Z [--yes] [-m "备注"] |
升版 + 打 tag + 推代码 + 触发发布流水线 |
bash scripts/build-release.sh [amd64|arm64] |
本地交叉编译 dist/(含 sha256、安装/卸载脚本、示例配置) |
fan-video-tr status |
查看运行方式 / PID / 端口 / 内存 / 路径 / 健康检查 |
fan-video-tr start|stop|restart |
启停服务(systemd 优先,其次直接管理进程) |
fan-video-tr uninstall [-y] [--purge|--keep-data] |
停止并移除安装 |
fan-video-tr backup|restore |
备份 / 恢复说明 |
fan-video-tr -version(或 version / -v) |
显示版本号 |
fan-video-tr help |
显示帮助(含访问地址) |
启动选项
| 选项 | 说明 | 默认值 |
|---|---|---|
-port <端口> |
监听端口 | 8790 |
-data <目录> |
数据目录 | ./data 或配置 app.data_dir |
-media <目录> |
视频浏览根目录 | 当前工作目录或配置 app.media_dir |
-output <目录> |
转码输出目录 | <data>/output |
-worker <数量> |
并发转码数 | 1 |
# 手动前台运行(调试用)
/var/lib/fan-video-tr/fan-video-tr -port 8790 -data /var/lib/fan-video-tr/data -media /vol2/1000/downloads/fan-video-tr -worker 2
日常管理命令
| 操作 | 命令 |
|---|---|
| 启动 | systemctl start fan-video-tr |
| 关闭 | systemctl stop fan-video-tr |
| 重启 | systemctl restart fan-video-tr |
| 状态 | systemctl status fan-video-tr |
| 详细状态(PID/内存/健康) | fan-video-tr status |
| 查看实时日志 | journalctl -u fan-video-tr -f |
| 查看最近 30 行日志 | journalctl -u fan-video-tr -n 30 --no-pager |
| 查看编码能力/硬件加速 | curl -s http://127.0.0.1:8790/api/capabilities |
| 健康检查 | curl -s http://127.0.0.1:8790/api/health |
| 版本信息 | curl -s http://127.0.0.1:8790/api/version |
| 关闭开机自启 | systemctl disable fan-video-tr |
| 端口放行 | firewall-cmd --permanent --add-port=8790/tcp && firewall-cmd --reload(firewalld) |
配置说明
优先级:命令行参数 > 环境变量 > config.yaml > 内置默认值。
- 配置文件查找:
./config.yaml→./data/config.yaml→/etc/fan-video-tr/config.yaml - 环境变量:前缀
FVT_,层级用下划线,例如app.data_dir→FVT_APP_DATA_DIR - 完整示例见仓库
config.example.yaml
| 变量 | 默认值 | 说明 |
|---|---|---|
FVT_APP_PORT |
8790 |
监听端口 |
FVT_APP_DATA_DIR |
./data |
数据目录(转码输出、模板) |
FVT_APP_MEDIA_DIR |
空 | 视频浏览根目录(留空可浏览全盘) |
FVT_APP_OUTPUT_DIR |
output |
转码输出目录(相对 data_dir) |
FVT_APP_WORKER |
1 |
并发转码数 |
FVT_FFMPEG_ACCEL |
auto |
auto / none / nvenc / qsv / vaapi |
FVT_FFMPEG_DETECT_ACCEL |
true |
启动时真实微型编码自检 |
FVT_FFMPEG_PRESET |
veryfast |
默认编码预设 |
FVT_FFMPEG_CRF |
23 |
默认 CRF(仅 CRF 模式生效) |
FVT_FFMPEG_HW_DECODE |
false |
硬件解码(关闭时兼容性最好) |
FVT_LOGGING_LEVEL |
info |
debug / info / warn / error |
FVT_VERSION / APP_VERSION |
- | 覆盖版本号显示 |
硬件加速
启动时会真实跑一次微型编码自检,结果可在界面「硬件加速」区或启动日志「编码能力」一行查看:
- NVENC:NVIDIA 驱动 + 容器映射 GPU(需 container toolkit)
- QSV:Intel 核显/独显,容器映射
/dev/dri - VAAPI:AMD/Intel,容器映射
/dev/dri并把用户加入video/render组
auto 按 NVENC → QSV → VAAPI → 软件 顺序回退;硬件路径默认关闭硬件解码(ffmpeg.hw_decode: false)以优先保证兼容性。
数据目录说明
- 默认安装目录:
/var/lib/fan-video-tr(二进制fan-video-tr) - 数据目录:
/var/lib/fan-video-tr/data(含output/转码成品、profiles.json转码模板、可选config.yaml、非 systemd 模式下的fan-video-tr.log) - 命令行入口软链:
/usr/local/bin/fan-video-tr→/var/lib/fan-video-tr/fan-video-tr - 安装记录:
/etc/fan-video-tr.conf(INSTALL_DIR/BIN_PATH/PORT/DATA_DIR/VIDEO_DIR) - PID 文件:
/var/run/fan-video-tr.pid - systemd 单元:
/etc/systemd/system/fan-video-tr.service(ExecStart=<二进制> --port <端口> --data <数据目录> [--media <视频目录>]) - 容器内数据目录固定
/data(挂载宿主目录后由 entrypoint 自动chown给fvt用户) - 无账号密码(内网工具),请勿暴露到公网