Visto 使用文档
完整手册 / 单文件离线版

VISTO USER GUIDE

Visto 用户手册

27 章完整操作指南。所有配图、主题、搜索和目录均在此文件内,断网也能阅读。

2026-09-30独立演示数据截图支持打印

开始使用

01 · 先理解 Visto

Visto 在你控制的电脑或服务器上运行,用浏览器进入工作空间。它把项目、媒体文件、不同版本、审阅反馈和分享记录放在同一条协作流程里。存储可以位于部署主机,也可以由 Owner 连接 WebDAV 或 S3 兼容服务。

“本地优先”意味着你决定数据部署在哪里。选择远程存储、配置外部通知或开放远程访问后,相关数据仍会经过你启用的服务和网络。

五个最常用的概念

概念 用来做什么 例子
工作空间 容纳账号、项目、全局设置和基础设施 一个制作团队
项目 划定协作范围、成员和文件保存位置 品牌短片 · 10 月交付
媒体 / 资产 一份持续修订的作品或素材 品牌短片主片
版本 保留同一资产的每次上传结果 V1 初剪、V2 调色、V3 确认版
审阅 围绕选定版本发起的一轮反馈与结论 第一轮导演审阅
项目、资产、版本与审阅的关系示意
原创示意图 · 项目、资产、版本与审阅的关系示意点击放大查看

图解: 一个项目可以有多个资产;一个资产可以有多个版本;审阅引用选定的版本。上传新版以后,旧审阅仍保留原来审阅的版本,下一轮应明确选择新版。

按身份选择阅读路线

你的身份 先读哪些章节 你最需要知道的事
安装维护者 安装准备 → macOS 安装 → 媒体运行时 → 备份恢复 主机操作在部署机器执行,需要相应系统权限
Owner 首次设置 → 存储 → 成员权限 → 网络安全 管理全局基础设施,不要把 Owner 密码当团队共享密码
项目主管 创建项目 → 成员权限 → 审阅 → 归档 项目成员关系和具体权限决定协作边界
项目成员 上传素材 → 版本 → 审阅 → 通知 先进入正确项目,再上传和创建审阅
外部审阅者 外部审阅指南 使用分享链接和访问码,按开放权限查看、评论或下载

适用与限制

本手册重点说明 Server 浏览器工作台。原生安装完整示例以 Apple Silicon macOS 为准;其他平台和 Docker 的正式可用性以对应 Release 的说明和验收范围为准。没有可下载的正式 Release 时,不要把开发候选当作稳定版。此次文档制作时官方仓库仍为 Private,正式 Release 数量为 0;下面的安装步骤是供已获得对应包的使用者和后续正式发布使用。

开始使用

02 · 做完你的第一个项目

本章面向已经能打开 Visto 的 Owner 或项目主管。建议先用一张不含敏感内容的图片完成练习,再接入真实项目。

从项目建立到最终交付的流程示意
原创示意图 · 从项目建立到最终交付的流程示意点击放大查看

第一步:确认保存位置

Owner 进入 Owner 设置 → 存储与上传安全,至少创建一个可供项目上传使用的存储位置,并开放给需要的项目。项目主管看不到存储或没有创建权限时,请联系 Owner。

第二步:创建项目

在项目列表点“新建项目”,填写名称、项目说明,并选择项目存储位置。建议名称包含作品与交付批次,如“品牌短片 · 10 月交付”;说明写清目标、负责人和交付日期。

第三步:上传一份媒体

进入新项目的“媒体”,选择“上传本地文件”。等上传完成,再等媒体状态变成可预览。上传完成只说明传输结束,后台预览处理可能还在继续。

第四步:创建第一轮审阅

打开素材详情,确认是 V1,点“创建审阅”。填写审阅名称,选择参与成员、通过条件和截止时间;需要外部反馈时,设置访问密码、评论和下载权限,再创建审阅分享。

第五步:收集并处理反馈

用分享入口查看图片或播放视频。提交一条能定位到画面或时间的反馈,项目内核对评论,再回复处理结果。需要正式结论时由具备权限的审阅者提交“通过”“需修改”或“拒绝”。

第六步:提交新版

回到原资产的详情,选择“上传新版本”,上传修订文件。确认 V2 出现在版本历史里,以 V2 创建下一轮审阅。不要为了升级版本而把同一作品反复作为独立资产上传。

第七步:交付与归档

确认最新版本通过、交付链接权限正确、接收者能访问后,再归档项目。归档保留项目记录并暂停项目内写入;备份还需要由部署维护者单独执行。

完成检查

  • 项目名称、保存位置和参与成员正确。
  • 图片或视频能正常预览;没有未处理的隔离或失败提示。
  • 反馈能回到原版本和具体位置。
  • V1、V2 的历史都保留,当前版本明确。
  • 分享在接收者设备上能打开;下载权限符合交付要求。
  • 重要数据已有实际备份,项目归档不能替代备份。

安装与初始化

04 · 安装前的准备

如果你只是受邀参与项目,无需安装 Server,使用团队给你的工作空间地址即可。只有负责部署的人员需要本章。

选择部署方式

方式 适合谁 浏览器入口 需要注意
macOS Apple Silicon 原生 Server 使用 M 系列 Mac 的安装维护者 默认 http://127.0.0.1:8787/ 安装需要系统管理员权限;FFmpeg 运行时独立安装
Docker Compose 已经熟悉容器和持久数据卷的维护者 默认 http://127.0.0.1:8080/ 以本次发布支持范围为准;保留数据卷和配置
Windows x64 原生 Server Windows 主机维护者 默认 http://127.0.0.1:8787/ 见“Windows x64 安装与维护”,使用开机计划任务
Linux amd64 / ARM64 原生 Server systemd Linux 主机维护者 默认 http://127.0.0.1:8787/ 见“Linux amd64 / ARM64 安装与维护”,需核对架构、glibc 和媒体运行时

在开始之前准备好

  1. 确认设备架构和安装包匹配。M 系列 Mac 使用 macos-arm64 包。
  2. 从 官方 Release 页面 获取同一版本的安装包、SHA-256 和发布说明。页面未开放或没有正式包时,不要换用不明镜像。
  3. 准备系统管理员密码、一个强 Owner 密码,以及足够存放原片、预览和备份的磁盘空间。
  4. 为素材安排独立目录。不要把整个用户主目录或系统目录当作媒体上传位置。
  5. 首次设置在部署主机完成;首次初始化令牌只给这台主机的维护者使用。
  6. 已有实例升级时,先读“更新、恢复与回滚”,不要按全新安装覆盖现有数据。

本机地址是什么意思

127.0.0.1 指向当前打开浏览器的设备。在你的 Mac 上,它指向这台 Mac;在同事电脑上,它指向同事电脑。因此同事无法使用你的 127.0.0.1 分享地址访问部署在你 Mac 上的服务。

跨设备协作需要一个接收者能访问到的团队地址,并配置对应网络入口。参见“网络与远程访问”。

安装与初始化

05 · Apple Silicon macOS 安装

本章适用于已经取得对应 macOS ARM64 安装包的维护者。命令中的 <版本> 是占位符,必须替换成你下载的版本;尖括号也要去掉。所有操作都在部署 Visto 的 Mac 上完成。

1. 下载并核对 SHA-256

保存 Visto-Server_<版本>_macos-arm64.tar.gz 与同一 Release 的 .sha256 文件。打开终端,进入下载目录后执行:

cd "$HOME/Downloads"
shasum -a 256 'Visto-Server_<版本>_macos-arm64.tar.gz'

把输出的 64 位摘要与官方发布页或 .sha256 内容逐字对照。不同则停止,不要安装。摘要相同证明下载内容一致,仍需要确认下载来源。

2. 解压到独立目录

新版本使用一个新目录,避免把旧包的脚本与新包混在一起:

mkdir -p "$HOME/Downloads/visto-server-<版本>"
tar -xzf "$HOME/Downloads/Visto-Server_<版本>_macos-arm64.tar.gz" \
  -C "$HOME/Downloads/visto-server-<版本>"
cd "$HOME/Downloads/visto-server-<版本>"

确认当前目录里有 scripts/install-visto-server.sh,再执行安装:

sudo bash scripts/install-visto-server.sh \
  --version '<版本>' \
  --source-dir "$PWD"

终端输入系统管理员密码时不会显示字符,这是系统的正常行为。

3. 处理 macOS 首次运行提示

当前交付方案没有 Apple Developer ID 签名和公证。macOS 可能分别拦截 visto-core 和 visto-server。核对来源和摘要之后,在“系统设置 → 隐私与安全性”找到被阻止的程序,按系统提示“仍要打开”。如果第二个程序随后被拦截,对它单独操作。

macOS 安装与两次独立放行的步骤示意
原创示意图 · macOS 安装与两次独立放行的步骤示意点击放大查看

这是流程示意,不是 macOS 截图。 手动放行不代表 Apple 已验证开发者。不要全局关闭 Gatekeeper。安装器如果报服务未就绪,先处理拦截再检查服务,不要把退出失败当成安装成功。

sudo launchctl kickstart -k system/com.visto.server
curl -fsS http://127.0.0.1:8787/health/ready

看到 "status":"ready" 后,打开 http://127.0.0.1:8787/。如果使用了自定义端口,命令和浏览器地址都替换成对应端口。

4. 确认安装后的目录

内容 默认位置 日常用途
程序与保留版本 /Library/Visto 使用 current 中的正式工具,不手工改链接
主机配置 /Library/Visto/config/visto.env 部署维护者修改,修改后按要求重启
业务数据 /Library/Application Support/Visto/data 包含数据库和系统托管数据,不能直接删除
默认备份 /Library/Application Support/Visto/backups 保存归档及其元数据,另做异盘副本
日志 /Library/Logs/Visto 故障定位,分享前脱敏

完成检查: 服务就绪、浏览器能打开向导、未忽略安装失败信息。视频预览还需要下一章的媒体运行时。

安装与初始化

06 · Windows x64 安装与维护

本章面向在 Windows 主机上部署 Server 的维护者。项目成员只需要浏览器,不必安装 Desktop、Node.js 或 Go。以下步骤按当前 Windows 安装及维护脚本编写;正式支持的 Windows 版本、最终包和实机验收以对应 Release 说明为准。没有发布包时,不把候选 ZIP 当成正式稳定版本。

Windows 从下载到日常维护的路线
原创示意图 · Windows 从下载到日常维护的路线点击放大查看

1. 准备机器与安装材料

  • 使用 x64 Windows;本章不适用于 Windows ARM64,也不适用于 Desktop 安装器。
  • 准备本机管理员权限。安装器需要注册开机任务并保护程序、数据目录的访问权限。
  • 准备固定本机程序目录,例如 C:\Program Files\Visto Server。不要在下载临时目录、网络共享目录或云同步目录中直接运行。
  • 准备原片、预览和备份容量。数据目录默认为 %ProgramData%\Visto\data,备份应另存一块可靠磁盘。
  • 从官方 Release 获取同版本 ZIP、SHA-256 和发布说明。更新时还需要对应版本清单;不存在的下载入口不能用未知镜像替代。

Windows 的主机目录指 Server 所在电脑 的目录,成员电脑上的 D:\素材 不会自动出现在服务器上。映射网络盘也可能只属于你的登录会话,而开机任务使用 SYSTEM 账号;不要用资源管理器能打开网络盘来判断服务一定能读到它。

2. 核对文件并解压

示例版本 1.0.0-rc.1 只是命令格式示例,请替换为你实际获得的版本。先在下载目录检查摘要:

Get-FileHash .\Visto-Server_1.0.0-rc.1_windows-x64.zip -Algorithm SHA256

把完整的 64 位结果与可信发布页或同名 .sha256 对照;不一致时停止安装,重新下载。SHA-256 验证完整性,下载来源仍须核对。

在管理员 PowerShell 中解压到一个尚未使用的固定目录:

Expand-Archive -LiteralPath "$env:USERPROFILE\Downloads\Visto-Server_1.0.0-rc.1_windows-x64.zip" `
  -DestinationPath 'C:\Program Files\Visto Server'
Set-Location 'C:\Program Files\Visto Server'
Get-ChildItem

目录应包含 bin、web、visto-server.json、VistoServer.Security.psm1 和安装/启动/备份/恢复/更新/卸载脚本。当前启动脚本还要求 runtime\ffmpeg\ffmpeg.exe 与 ffprobe.exe;缺失时不能从网上随便补二进制。已有安装不能用解压覆盖来升级。

3. 安装开机任务

在管理员 PowerShell 的程序目录执行:

Set-ExecutionPolicy -Scope Process Bypass -Force
.\Install-VistoServer.ps1

该执行策略只对当前 PowerShell 进程有效。若组织策略禁止运行脚本,交给系统管理员处理,不调整整机策略来绕过组织限制。

安装器注册名为 Visto Server 的计划任务,使用 SYSTEM 账号在开机时运行,异常退出时尝试重启。程序、数据与备份目录会限制普通用户写入;不要安装后再给“所有人”开放写权限,也不要将这些目录替换成目录联接或符号链接。

4. 确认就绪并完成首次设置

Get-ScheduledTask -TaskName 'Visto Server'
Get-ScheduledTaskInfo -TaskName 'Visto Server'
Invoke-WebRequest -Uri 'http://127.0.0.1:8787/health/ready' -UseBasicParsing
.\bin\visto-server.exe --address 127.0.0.1:8787 status

计划任务存在、显示运行中只是进程层证据;健康接口返回成功、浏览器能打开页面才继续首次设置。默认入口为 http://127.0.0.1:8787/。若改过 visto-server.json 的 address,用实际端口检查。

初始化令牌在 %ProgramData%\Visto\data\host-management-token.txt,安装器只显示位置和短指纹。需要时由本机管理员私下读取并填入首次设置页;不要截图、发给成员或打包进求助材料。随后按“首次设置与登录”建立工作空间、Owner 账户及一次性的目录权限选择。

5. 程序、配置、数据分别在哪里

内容 默认位置或入口 用途
程序与网页 C:\Program Files\Visto Server(示例) 固定程序目录,更新由脚本替换
配置 程序目录下 visto-server.json 监听地址、数据目录及部署选项
实例数据 %ProgramData%\Visto\data 数据库、秘密、数据目录内上传及预览
默认备份 %ProgramData%\Visto\backups 数据归档和同名元数据
启停 计划任务 Visto Server 默认开机自启、使用 SYSTEM
当前视频依赖 程序目录 runtime\ffmpeg 当前包内运行时;以后以包说明为准

修改配置前保留受保护的原配置副本,修改后重启任务。配置与令牌包含敏感信息,不作为公开求助附件。

6. 日常启动、停止和诊断

Stop-ScheduledTask -TaskName 'Visto Server'
Start-ScheduledTask -TaskName 'Visto Server'
.\bin\visto-server.exe --data-dir "$env:ProgramData\Visto\data" doctor
.\bin\visto-server.exe --data-dir "$env:ProgramData\Visto\data" diagnostics export `
  --output "$env:USERPROFILE\Desktop\visto-diagnostics.zip"

停止命令发出后需确认任务和相关进程确实停止。备份、恢复和更新脚本会进行自己的停服确认,不要删掉检查来强制执行。诊断包先自行检查敏感内容,再按受控方式交给维护者。

7. 备份与恢复

先通知成员暂停写入,再运行:

.\Backup-VistoServer.ps1 -BackupDirectory 'D:\Visto-backups'

成功结果必须同时有 ZIP 与同名 .zip.json 元数据,保留二者并复制到独立位置。该备份覆盖实例数据目录;配置在程序目录、外部本机媒体目录、WebDAV 和 S3 原片需另行保护。不能把一个 ZIP 当成全部项目原片的备份。

恢复分为两步。以下文件名为示例,替换为真实备份:

.\Restore-VistoServer.ps1 -BackupFile 'D:\Visto-backups\visto-server-data-20260930-120000.zip' -CheckOnly
.\Restore-VistoServer.ps1 -BackupFile 'D:\Visto-backups\visto-server-data-20260930-120000.zip' -ConfirmRestore

只读检查通过后,先确认当前数据也有独立备份,再执行替换。不要同时传 -CheckOnly 与 -ConfirmRestore。摘要、归档路径或来源数据目录不符时停止;不编辑元数据骗过检查,也不用恢复命令做跨目录迁移。恢复后检查项目、旧媒体、新上传与分享。

8. 更新与失败恢复

下载同一版本 ZIP、发布摘要和版本清单,保留程序目录配置并准备更新前备份。将路径和摘要替换为真实值:

.\Update-VistoServer.ps1 `
  -PackageArchive 'D:\Downloads\Visto-Server_1.0.1_windows-x64.zip' `
  -ExpectedSha256 '<发布页公布的64位SHA-256>' `
  -ManifestFile 'D:\Downloads\该版本的清单.json' `
  -BackupDirectory 'D:\Visto-backups'

不传 -ManifestFile 时脚本寻找 <安装包完整路径>.manifest.json;只有 ZIP 和摘要并不足够。清单必须与包版本匹配,发布者没提供时联系维护者,不自行拼写。

脚本校验并暂存输入,备份数据、停止任务、替换程序并等待恢复。失败时会尝试还原旧程序及更新前数据。即使脚本报告成功,也要核对健康接口与实际业务;端口能连不代表媒体和数据库已正常。当前 Windows 脚本没有独立的 Rollback-VistoServer.ps1,不要照搬 Unix 回滚命令。自动恢复失败时保留原程序、备份与错误输出,交给维护者处理。

9. 常见问题按现象处理

现象 先检查 下一步
提示需要管理员权限 PowerShell 是否“以管理员身份运行” 重新打开管理员窗口,进入程序目录
脚本被系统拦截 文件来源、摘要与组织策略 按安全软件/管理员提示处理,不全局关闭保护
缺少 FFmpeg、网页或安全模块 是否解压完整、是否拿错包 重取同版本完整包,保留错误信息
任务存在但页面打不开 任务结果、健康接口、配置端口 执行 doctor;不要把任务存在当成功
端口被占用 Get-NetTCPConnection -LocalPort 8787 -ErrorAction SilentlyContinue 找到占用程序后决定是否改配置;不盲目结束进程
服务读不到映射盘 SYSTEM 与登录用户的访问差异 用受维护存储连接或明确服务可访问的存储方案
更新提示文件锁或停服失败 是否还有服务/媒体进程 保留现场,解决占用后再试,不手工覆盖
ACL 或重解析点检查失败 目录权限、联接/符号链接 修复受信目录布局,不删保护检查

10. 卸载与交付检查

.\Uninstall-VistoServer.ps1

默认停止并删除开机任务,保留实例数据;不等于程序目录和外部原片已删除。只有独立备份可读、确定永久清除实例数据后,才使用 -RemoveData。不要将清除命令当成排障方法。

交付前逐项确认:重启电脑后服务就绪;Owner 可登录;成员仅看授权项目;旧媒体能打开;新上传能生成预览;HTTPS 分享可访问;备份 ZIP 与元数据已独立保存。本章完成的是操作说明,Windows 干净机器、文件锁和更新恢复实机验收仍需单独记录。

安装与初始化

07 · Linux amd64 / ARM64 安装与维护

本章面向使用 systemd 的 glibc Linux 主机 的维护者,按当前 Linux 打包与 Unix 运维脚本编写。amd64 与 ARM64 共用步骤,安装包不能混用。正式包、发行版支持和媒体运行时供应以对应 Release 为准;源码里存在安装脚本不代表最终 Linux 包已通过实机验收。

Linux 从架构检查到服务维护的路线
原创示意图 · Linux 从架构检查到服务维护的路线点击放大查看

1. 核对系统和架构

uname -m
getconf GNU_LIBC_VERSION
systemctl --version
检查项 当前交付契约基线 如何选择
uname -m 为 x86_64 Linux amd64 使用 linux-amd64.tar.gz
uname -m 为 aarch64 Linux ARM64 使用 linux-arm64.tar.gz
C 库 glibc ≥ 2.28 musl / Alpine 不在本原生说明范围
服务管理器 systemd ≥ 239 无 systemd 的 NAS、容器或 WSL 不照搬本章
内核 ≥ 4.18 最终发行版支持以 Release 为准

上述为项目当前契约要求,不代表每个满足版本号的发行版均已验收。准备 sudo 权限、Bash、GNU tar、常用系统工具,以及 curl 和 SHA-256 工具。不要为安装程序替换系统 C 库;不符合基线时使用受支持主机,或按 Docker 章节和发布支持范围选择容器部署。

2. 下载并核对摘要

获取同版本的安装包、SHA-256 和说明。下列 1.0.0-rc.1 为格式示例,替换为实际版本;ARM64 把包名中的 amd64 改为 arm64。

sha256sum Visto-Server_1.0.0-rc.1_linux-amd64.tar.gz

逐字对照可信发布页的 64 位摘要。不要从另一个包、架构或版本复制摘要。来源或摘要不明时停止。更新时还要准备同版本清单。

3. 解压并安装

在独立、尚未使用的本机目录解压;下面命令不在现有程序目录上覆盖文件:

mkdir -p "$HOME/visto-install-1.0.0-rc.1"
tar -tzf Visto-Server_1.0.0-rc.1_linux-amd64.tar.gz
tar -xzf Visto-Server_1.0.0-rc.1_linux-amd64.tar.gz -C "$HOME/visto-install-1.0.0-rc.1"
cd "$HOME/visto-install-1.0.0-rc.1"
ls bin web scripts
sudo bash scripts/install-visto-server.sh \
  --version 1.0.0-rc.1 \
  --source-dir "$PWD"

解压后应有 bin/visto-core、bin/visto-server、web/index.html、完整维护脚本及许可声明。安装器复制程序到版本目录、生成受保护配置、注册并启动 systemd 服务。缺文件、架构错误或版本目录已存在时先排查,不加覆盖参数绕过。

首次安装默认监听 127.0.0.1:8787。需要不同端口时,安装命令可增加 --address 127.0.0.1:8788;之后所有检查与代理都用实际端口。已经部署的实例不能用再次安装同版本来做更新。

4. 确认服务与浏览器入口

sudo systemctl status visto.service --no-pager
curl -fsS http://127.0.0.1:8787/health/ready
sudo /opt/visto/current/bin/visto-server --address 127.0.0.1:8787 status

服务 active 后还需健康检查成功、页面可打开。服务器有浏览器时打开 http://127.0.0.1:8787/。如果是无桌面的远程主机,自己电脑里的 127.0.0.1 指向自己电脑,并不指向服务器。

有 SSH 权限的维护者可临时把远端回环端口转到本机,用于首次设置和诊断:

ssh -N -L 18787:127.0.0.1:8787 <你的SSH用户>@<服务器地址>

保持连接,在自己电脑浏览器打开 http://127.0.0.1:18787/。尖括号内容必须替换;此通道只供授权维护者使用,日常成员和客户使用正式 HTTPS 工作空间地址。首次设置令牌默认在 /etc/visto/host-management-token,由主机管理员私下读取使用,勿公开配置内容。

5. 安装后的目录地图

内容 默认位置 维护方式
程序版本 /opt/visto/releases/<版本> 各版本独立保存
当前程序 /opt/visto/current 指向当前版本,不手动替换
配置 /etc/visto/visto.env 系统管理员维护,包含秘密
数据 /var/lib/visto 数据库、秘密、目录内上传与预览
备份 /var/backups/visto 归档与同名元数据
日志 /var/log/visto/server.log、server.err 排查启动与处理错误
服务定义 /etc/systemd/system/visto.service 安装器生成
媒体运行时根 /opt/visto/media-runtime 使用当前版本支持的运行时工具管理

如果安装时使用自定义数据目录或部署覆盖变量,记录真实路径,维护命令也要匹配该实例,不能假定所有主机都用默认值。外部媒体根权限与服务沙箱需要一致;系统管理员应按实际存储方案配置,不通过关闭全部服务保护来解决读写问题。

6. 视频预览与媒体运行时

Linux Server 的当前打包脚本生成主程序、网页和维护工具,不在该脚本内自动打入 FFmpeg。页面打开后仍需核对视频处理运行时。

sudo /opt/visto/current/bin/visto-server --help
sudo /opt/visto/current/bin/visto-server media-runtime --help

使用该版本 Release 提供的同架构运行时及对应安装说明。不要把 macOS 运行时安装命令和清单直接搬到 Linux,也不要重命名 Windows 或另一架构的文件。发布者未提供经过核对的 Linux 运行时与来源材料时,视频预览交付仍是未就绪项,联系维护者,不能以网页可登录替代视频可用。

运行时安装后重启服务,上传小型测试视频,等待处理完成、播放预览并提交时间点评论;再验证一份图片。只有这些业务步骤成功,才能确认该实例的媒体链路可用。

7. 启停、日志和诊断

sudo systemctl stop visto.service
sudo systemctl start visto.service
sudo systemctl restart visto.service
sudo journalctl -u visto.service -n 100 --no-pager
sudo tail -n 100 /var/log/visto/server.err
sudo /opt/visto/current/bin/visto-server --data-dir /var/lib/visto doctor

服务启动失败时先读日志,再检查配置和依赖;不要反复重装或删除数据。日志可能含路径和用户信息,提供求助材料前脱敏。服务修改配置后需重启;网页中的业务设置按页面反馈判断保存是否完成。

8. 备份并验证覆盖范围

sudo /opt/visto/current/scripts/backup-visto-server.sh

也可在独立备份磁盘上指定保存目录,须确认磁盘已挂载且容量足够:

sudo /opt/visto/current/scripts/backup-visto-server.sh --backup-dir /mnt/backup/visto

脚本先证明服务停止,再归档数据目录并生成数据库事实元数据,之后启动服务。只有归档和元数据均成功生成才算本次备份完成。备份放另一磁盘或可信远程位置;外部媒体、WebDAV、S3、/etc/visto 的部署配置另行备份。迁移到新主机还涉及恢复路径约束,不能直接承诺跨主机/跨目录恢复。

9. 更新、恢复与回滚

更新使用实际下载的包、摘要和同版本清单。示例输入需全部替换:

sudo /opt/visto/current/scripts/update-visto-server.sh \
  --package '/实际路径/Visto-Server_1.0.1_linux-amd64.tar.gz' \
  --sha256 '<发布页公布的64位SHA-256>' \
  --manifest '/实际路径/该版本的清单.json'

脚本验证布局,准备新版本、备份数据、停服并切换 current,失败时尝试还原。没有清单时停止,不手工改 current 或覆盖运行中的程序。更新成功后检查旧数据与新上传,不只看进程。

恢复先跑只读检查;示例归档名替换为真实备份:

sudo /opt/visto/current/scripts/restore-visto-server.sh \
  --backup-file '/var/backups/visto/实际备份.tar.gz' --check-only
sudo /opt/visto/current/scripts/restore-visto-server.sh \
  --backup-file '/var/backups/visto/实际备份.tar.gz' --confirm-restore

恢复会替换当前实例数据,先另做当前数据备份。归档与同名元数据必须一起保留,只支持检查认可的原数据目录;旧格式元数据或路径不符被拒绝时,不手改元数据。

回滚程序版本先检查保留的版本:

sudo ls /opt/visto/releases
sudo /opt/visto/current/scripts/rollback-visto-server.sh \
  --to-version '<仍保留的版本号>' --confirm-rollback

回滚程序不等于把数据库和媒体恢复到任意历史时刻。数据兼容性与恢复需求要分别判断;目标版本已清理或数据不兼容时联系维护者。成功后重新检查健康、登录、媒体与分享。

10. 网络与常见问题

默认 Core 仅监听回环。日常远程访问用受维护的 HTTPS 反向代理,再在工作空间配置外部访问地址;不要直接把 8787 暴露到公网。防火墙开放的是代理入口,浏览器里的本机地址不能发给客户。

现象 先检查 处理方向
Exec format error uname -m 与安装包架构 换同架构完整包
glibc 版本错误 getconf GNU_LIBC_VERSION 换受支持系统,不替换系统 C 库
找不到 systemctl 主机是否真正使用 systemd 选择符合基线主机,或按 Docker 支持范围部署
安装缺网页/脚本/声明 解压根目录与包完整性 用完整包,不分别下载文件拼装
服务启动失败 journalctl、server.err 查地址占用、配置、目录权限与运行依赖
端口被占用 sudo ss -ltnp 'sport = :8787' 查明占用者,选择其它端口,不盲目杀进程
上传不能写或空间不足 实际存储权限、挂载和 df -h 修复真实存储条件,保留已有数据
视频无预览 同架构运行时、处理任务状态 核对运行时供应和安装结果
SSH 转发打不开 SSH 连接、远端健康、本机端口 分别确认两端,不改为公网裸端口
停服检查/恢复预检被拒绝 相关子进程、元数据与来源目录 保留现场,解决原因后再试,不绕过保护

11. 卸载与最终检查

sudo bash /opt/visto/current/scripts/uninstall-visto-server.sh

默认停止并注销服务、移除程序发布目录,保留用户数据、备份和日志。卸载前另存配置和完整备份;--keep-releases 可保留程序版本。--purge-data 会额外删除数据和备份目录,只有明确永久清除并确认独立备份可恢复时才使用,不能当排障步骤。

交付清单:安装架构正确;整机重启后健康成功;首次设置与权限正确;图片与视频预览通过;真实存储可读写;外部 HTTPS 分享可达;备份归档与元数据已独立保存;更新和恢复在对应平台受控验证。本章仅完成文档和源码参数核对,不宣称 Linux amd64 / ARM64 的最终包、运行时、安装及重启验收通过。

安装与初始化

08 · 安装视频处理运行时

视频预览、媒体探测和部分衍生产物需要 FFmpeg 与 ffprobe。原生 Server 安装包不包含它们;运行时由主机维护者单独安装。Owner 网页可以显示运行状态,但不会下载、提权或安装主机程序。

安装前确认

  • 原生 Server 已经安装并可运行 visto-server。
  • 当前机器是 Apple Silicon macOS;本章运行时不能用于 Intel、Windows 或 Linux。
  • 使用官方公开仓库中固定的公钥。不要使用下载归档里附带的公钥来证明同一个归档可信。
  • 官方仓库未公开时,公钥下载可能返回 404。已获授权的维护者可以使用随审核材料取得的同一固定公钥文件;普通用户应等待可用的公开安装入口。

在线安装

以下运行时版本依据当前安装说明固定为 ffmpeg-8.1.2-macos-lgpl.2。以后以对应发布说明为准,不自行猜测“最新版”地址。

mkdir -p "$HOME/Downloads/visto-runtime"
RUNTIME_VERSION='ffmpeg-8.1.2-macos-lgpl.2'
RUNTIME_BASE="https://visto-server-updates.pages.dev/media-runtime/$RUNTIME_VERSION"

curl -fL "$RUNTIME_BASE/media-runtime-manifest.json" \
  -o "$HOME/Downloads/visto-runtime/media-runtime-manifest.json"
curl -fL "$RUNTIME_BASE/media-runtime-manifest.json.sig" \
  -o "$HOME/Downloads/visto-runtime/media-runtime-manifest.json.sig"
curl -fL 'https://raw.githubusercontent.com/huangdiyou/Visto/main/keys/media-runtime-root-public-key.txt' \
  -o "$HOME/Downloads/visto-runtime/media-runtime-root-public-key.txt"

上面三个下载都成功后再运行:

sudo /Library/Visto/current/bin/visto-server --json media-runtime install \
  --media-runtime managed \
  --manifest "$HOME/Downloads/visto-runtime/media-runtime-manifest.json" \
  --signature "$HOME/Downloads/visto-runtime/media-runtime-manifest.json.sig" \
  --public-key "$(cat "$HOME/Downloads/visto-runtime/media-runtime-root-public-key.txt")" \
  --non-interactive --confirm-download

管理器会验证签名、下载清单指定的归档,并验证内容和媒体能力。签名、哈希或能力检查失败时,停止并保留报错;不要绕过检查切换运行时。

重启与验证

sudo launchctl kickstart -k system/com.visto.server
curl -fsS http://127.0.0.1:8787/health/ready

检查结果包含 "ffmpeg":true 和 "ffprobe":true。再进入演示项目上传一个短视频,确认能生成预览并播放。两项为 true 说明程序被检测到,实际视频播放还要用媒体验证。

失败时怎么处理

现象 先检查 下一步
公钥下载 404 官方仓库是否对你可访问 不换用包内公钥;等待公开或使用授权取得的固定公钥
清单 / 签名下载失败 网络、版本路径、文件是否完整 重新下载同一版本的清单和签名
验签失败 公钥、清单、签名是否相互匹配 保留文件和错误,联系维护者,停止安装
重启后检测仍为 false 安装结果和服务日志 查看系统诊断,确认运行时配置与权限
能检测但视频处理失败 单个文件、格式、磁盘和任务错误 先用小测试文件确认,再定位实际素材问题

运行时清单有签名;免费 Server 的版本更新提示清单不签名。这是两条不同的分发流程。

安装与初始化

09 · Docker 部署说明

本章供已有 Docker 经验的维护者使用。当前公共源码白名单尚未包含 Compose 全套交付,因此不要把本章当作已存在的公开 Docker 下载入口。请使用对应版本明确提供并验收的完整 Docker 源码或交付目录;只拿到 macOS 公共快照时,请选择 macOS 安装路径。

前置条件与结构

需要 Docker Engine 26+、Docker Compose v2、至少 4 GB 可用内存、足够持久卷空间和可用的本机端口。官方 Compose 分为 core 与 web:浏览器连接 Web,Web 代理 Core;Core 的 8787 端口不应直接暴露给宿主机。

在提供 compose.yaml 的部署目录里生成首次初始化令牌:

export VISTO_HOST_MANAGEMENT_TOKEN="$(openssl rand -base64 32)"
docker compose up -d --build
docker compose ps

本机浏览器打开 http://127.0.0.1:8080/,输入刚生成的令牌并完成首次设置。令牌不要提交到仓库或发给成员。记录当前部署目录、Compose 配置、固定镜像与数据卷信息,以便维护时使用。

日常命令

docker compose ps
docker compose logs --tail 100 core
docker compose exec core visto-server doctor
docker compose down

down 用于停止这套部署。不要添加 -v,否则可能删除持久业务数据卷。项目数据、加密秘密和默认托管媒体位于数据卷;额外挂载和远程存储还要独立备份。

备份与恢复

在同一部署目录,由维护者运行交付中的脚本:

./scripts/docker/backup-visto-docker.sh --backup-dir ./backups

恢复会替换当前卷,先核对备份与同名 JSON 元数据、SHA-256、目标部署及异盘副本,再执行:

./scripts/docker/restore-visto-docker.sh \
  --backup-file './backups/<实际备份文件>.tar.gz' \
  --confirm-restore

这些 Docker 脚本的选项与 macOS 原生脚本不同,不混用 --check-only 或原生安装路径。更新时只使用该版本发布说明公布的固定 image@sha256: 引用,不猜测镜像仓库或可变 latest 标签。更新失败、断网、磁盘不足等最终容器实机回归仍须在目标环境验收;本文不把静态脚本检查记成实机通过。

安装与初始化

10 · 首次设置与登录

首次打开一个尚未初始化的实例,会看到“先建立你的本地工作空间”。这个过程创建数据库中的工作空间和 Owner,不会替你移动已有媒体。

真实界面:首次设置中的工作空间、名字、密码及主机目录权限
真实界面 · 演示数据 · 首次设置中的工作空间、名字、密码及主机目录权限点击放大查看

看图操作: 先核对初始化令牌,再填写身份信息;最下方的主机目录权限影响后续存储配置,提交前决定好。

填写首次设置

字段 如何填写 说明
初始化令牌 由部署维护者在主机取得 原生 macOS 从配置目录读取;Docker 使用启动时生成的值
工作空间名称 如“视频制作团队” 会出现在工作台,名称应让成员容易辨认
你的名字 如“项目负责人”或真实姓名 用于评论和审阅记录,不是共享身份
本地访问密码 至少 10 个字符的强密码 不与其他网站复用
再次输入密码 与上面完全一致 输入不一致时不能提交

macOS 读取初始化令牌:

sudo cat /Library/Visto/config/host-management-token

令牌用于首次领取初始化权限,和日常登录密码不同。不要把该输出贴到聊天、截图或公开 Issue。

一次性的主机目录权限

“允许 Owner 在网页端添加本机目录作为存储位置”默认开启。开启后,Owner 网页会话能配置主机目录,适合由你独占管理的机器;不信任所有 Owner 登录环境或部署在共享主机时,应由维护者评估后选择关闭。

该选项首次设置后不能在网页上更改。需要调整时由主机维护者编辑 visto.env 的 VISTO_ALLOW_WEB_HOST_PATHS:0 关闭,1 强制开启,然后重启服务。当前生效状态可在 Owner 设置 → 网络与安全 查看。

关闭后普通网页不能添加本机路径。项目成员仍可使用已经授权给项目的存储;如果必须添加新的主机目录,请联系部署维护者,不要求成员知道服务器真实路径,也不把 Desktop 当作免费版前置条件。

日常登录

初始化完成后,日常使用成员邮箱和密码进入。旧工作空间 / 首次 Owner 可能尚未设置登录邮箱,登录页提示允许邮箱留空时可使用原访问密码。登录后在“我的账户”确认个人身份与可用资料;新增成员使用独立邀请或注册流程。

完成检查与问题处理

  • 成功后进入项目列表,而不是仍停留在创建表单。
  • 密码错误、令牌错误和创建失败会显示提示,先按提示修正,不重复初始化。
  • 已有实例突然出现首次设置页时,先核对浏览器地址和数据目录是否指向原实例。不要立即创建一个新工作空间覆盖问题。
  • 忘记 Owner 密码时联系主机维护者,通过当前版本支持的账号恢复方式处理,不删除数据库重新初始化。

项目与素材

11 · 配置文件保存位置

谁来操作: Owner。入口: Owner 设置 → 存储与上传安全。

Visto 需要先有可用且已开放的存储,项目才能选择上传落点。浏览器所在电脑的路径不等于服务器路径:主机目录始终指向运行 Visto 的电脑或容器可见目录。

真实界面:存储管理与类型选择向导
真实界面 · 演示数据 · 存储管理与类型选择向导点击放大查看

看图操作: 上方查看现有保存位置和异常,下面的向导按“类型 → 用途 → 位置 → 项目 → 安全”依次完成。

三种存储选择

类型 要准备的信息 常见场景
本机托管存储 主机上的专用绝对目录、可写权限、空间 单机制作、连接在部署主机上的磁盘
WebDAV 服务地址、用户名、密码、允许的目录 支持 WebDAV 的 NAS 或存储服务
S3 兼容 Endpoint、Bucket、Region 及访问密钥等页面字段 MinIO 或对象存储

使用最小必要权限的账号。远程连接先按页面测试连通性;网络策略可能拒绝某些地址,不能把地址填成可访问任意主机的代理。

本机存储:路径、权限和配额

名称用于让项目成员辨认,如“制作素材盘”;主机目录使用运行 Visto 的机器上的绝对路径。建议由维护者先建一个专用目录,给服务运行账号所需权限,再在向导填写;不要为了修复写入错误让所有人拥有整块磁盘的任意权限。

外接盘使用前确认它已挂载,盘名和路径稳定。Docker 中填写的是容器可见路径,宿主机目录需要由维护者正确挂载。容量配额留空时按页面含义不限制,并不意味着磁盘无限大。关注存储剩余空间,预览与备份也需要容量。

WebDAV:每个字段怎么填

字段 示例(虚构) 填写要点
连接名称 团队 NAS · 制作资料 让项目主管能识别,不写密码
连接地址 https://nas.example.com/dav 使用服务提供的 WebDAV Endpoint,不填普通登录页
用户名 / 密码 独立的媒体服务账号 需有目标目录的读取及所需写入权限
默认路径前缀 team-media 或留空 限定这条连接使用的范围,和服务器路径结构一致
允许连接局域网或内网地址 仅在需要接入可信 NAS 时启用 只授权你明确知道的内部存储服务

创建连接后按界面测试。连接通了但项目上传仍不可用时,继续检查根目录范围、项目开放和用途。修改既有凭据时读清页面“留空保留”说明,不误把密码清空。

S3 兼容:Endpoint、Bucket 与前缀

字段 示例(虚构) 填写要点
连接地址 https://s3.example.com 使用存储商提供的 API Endpoint,不用控制台网页地址
Access Key / Secret Key 专用访问密钥 不截图、不写入项目说明,不用个人最高权限密钥
区域 存储商要求的 Region 以服务实际配置为准,不复制其他供应商的值
桶名称 team-media 必须是已存在且该密钥有权访问的 Bucket
默认路径前缀 visto/brand-film 限定对象范围,和实际组织约定一致

Endpoint、区域、桶与密钥要属于同一服务。测试失败时区分连通性、认证和对象权限,不连续换填猜测值。上述域名和桶名只用于解释字段,不能直接用作可连接的存储。

完成五步向导

  1. 类型: 选择本机、WebDAV 或 S3。
  2. 用途: 日常上传选“作为项目上传位置”;交付保存选“作为归档位置”;评论附件选对应用途。归档位置不会自动成为默认上传位置。
  3. 位置: 填可辨认的名称和相应连接信息。主机目录权限关闭时,本机路径不能在普通网页添加。
  4. 项目: 选择开放范围。保存一个连接不代表所有项目都获得使用权限。
  5. 安全: 选择上传安全策略并提交,查看成功或错误提示。

上传安全策略

策略 适合的使用情景 需要理解的边界
快速 可信素材和受控内部协作 保留路径、权限、大小等基础检查;恶意软件扫描可能记为未扫描
标准 日常默认项目上传 基础检查和媒体探测后处理;扫描结果继续影响分享与下载
增强 公网、访客或不可信来源素材 检查通过前不应进入可分享、可下载、可审阅状态;还要配置实际扫描能力

策略名称不代表扫描引擎已经配置。查看具体检查结果,“未扫描”不能当作“安全扫描通过”。

让项目真正能用

创建后检查存储显示“可用”,用途是上传,开放范围包括当前项目。进入 项目设置 → 项目存储 确认上传位置。若下拉框为空,依次检查:是否有活动存储、是否允许上传、是否对项目开放、是否因配额或错误停用。

修改、停用和删除

修改存储前先查看受影响项目。停用可能阻止后续上传;删除连接和删除原文件不是一回事,按影响说明处理。不要从操作系统直接挪走正在使用的目录;已有媒体引用可能失效。新增归档位置也不会自动把全部媒体复制过去。

完成检查: 项目能选到位置,上传小文件成功,预览可读,空间与权限符合预期。

项目与素材

12 · 创建与管理项目

项目是协作范围。把不同客户、交付批次或权限边界放进不同项目,可以减少误共享和误操作。

真实界面:填写项目名称、存储位置和交付说明
真实界面 · 演示数据 · 填写项目名称、存储位置和交付说明点击放大查看

创建项目

  1. 回到项目列表,点“新建项目”。
  2. 填写名称;建议“作品 / 客户 + 批次”,避免多个“新项目”。
  3. 选择已开放的“项目存储位置”。没有位置可选时让 Owner 配置,不去寻找扫描导入入口。
  4. 在说明里写目标、交付内容、负责人员和时间。
  5. 提交并确认进入正确项目。

示例说明:“60 秒品牌短片;主片横版 16:9,社交裁切另立资产;导演先看节奏,客户确认文案;交付日前完成最终审阅。”

项目主管的日常维护

在项目设置维护基本资料和成员;存储只选择 Owner 已授权的范围。更换上传位置主要决定后续落点,不应默认理解为已有媒体已迁移。需要转移主管职责时使用项目提供的转移流程,检查新的主管和自己的保留角色,再确认。

成员看不到项目时

先检查是否登录正确工作空间和账号,再检查项目成员关系、账号状态和期限。用户已经注册或已经在团队里,不代表已被加入该项目。失去成员资格、项目删除或权限不足都可能使项目不可见。

完成检查: 名称和说明正确、上传存储可用、成员在各自账号中可见应参与的项目。

项目与素材

13 · 成员、邀请与权限

Visto 有工作空间账号与项目成员两层关系。团队邀请让一个人拥有自己的账号;项目成员关系决定他能在哪个项目里工作。

账号与项目成员授权关系示意
原创示意图 · 账号与项目成员授权关系示意点击放大查看

常见身份

身份 作用 权限原则
Owner 管理全局基础设施和账号 有广泛权限,只交给可信维护者
项目主管 管理被分配项目的成员和协作 不等于获得其他项目或主机权限
项目成员 参与被加入项目的素材与审阅 具体上传、移除、分享和结论权限看成员设置
临时账户 有限项目访问或临时协作 检查权限和到期时间;默认权限可较少
分享访客 从指定分享入口查看内容 由分享范围、密码、有效期、评论及下载开关约束

项目成员默认可有较多协作权限,包括上传、审阅、分享或从项目移除媒体;若某人只需观看,应明确收紧权限,不凭角色名称推断“只读”。

真实界面:项目设置中的成员与权限分区
真实界面 · 演示数据 · 项目设置中的成员与权限分区点击放大查看

看图操作: 在项目设置里管理成员;工作空间账号与本项目的角色分别确认。

邀请并加入项目

  1. Owner 在 Owner 设置 → 账号与注册 创建成员邀请,填写成员邮箱并选择合适的账户类型。
  2. 将本次邀请入口交给对应成员;邀请链接和账号不要多人共用。
  3. 成员打开邀请页,按页面完成自己的资料和密码设置。
  4. Owner 或具备权限的项目主管进入 项目设置 → 成员与权限,将该账号加入项目。
  5. 选择项目角色及具体权限;有时间边界时设有效期。
  6. 用成员自己的账号确认能看见项目、能做被允许的操作。

开放注册

Owner 可以配置注册策略。允许注册并不自动给新用户任何项目权限;项目主管或 Owner 仍需把用户加入具体项目。

调整或收回访问

成员离开项目时,检查项目成员关系、临时账户期限、已创建的分享和后续通知。移除成员不能收回已被对方下载的文件;外部分享也需要单独检查和撤销。

项目与素材

14 · 上传、搜索与整理素材

谁来操作: 有相应项目上传权限的成员。入口: 进入具体项目 → 媒体。

真实界面:项目媒体列表、搜索筛选和预览状态
真实界面 · 演示数据 · 项目媒体列表、搜索筛选和预览状态点击放大查看

上传一个或多个文件

  1. 确认顶部项目名。
  2. 选择“上传本地文件”,从自己电脑选图片或视频。
  3. 在上传任务面板查看等待、传输进度、完成或失败。
  4. 失败时先看原因,按需要重新上传;未完成前不要关闭浏览器。
  5. 传输完成后等待后台媒体识别与预览处理,再打开素材验证。

浏览器上传把选中的文件复制到项目授权的存储。已存在于服务器的文件不会仅因打开页面而被扫描导入;日常上传应始终在项目内完成。

分清三类状态

状态层 表示什么 你应该做什么
上传进度 文件是否传完 等待完成或修复传输问题
上传安全检查 文件是否可继续参与协作 处理隔离、拒绝或扫描提示
媒体处理 预览、识别及增强任务是否完成 等处理结束,失败时查看任务详情

“上传完成”与“可预览”是不同阶段。源文件在库中但预览失败时,不要先删除重传,先检查运行时和具体任务。

搜索和筛选

按文件名搜索,再用类型、处理状态、开始 / 结束日期和排序缩小范围。找不到刚上传文件时,先点“重置”,确认当前项目、页码和筛选条件,再检查上传结果。

网格适合看画面,列表适合看文件信息。打开素材详情可以重命名、查看预览、元信息和版本历史。

加入已有媒体、复制和剪切

“添加已有媒体”只展示你有权使用的已有媒体,不是任意主机扫描入口。将资产加入另一个项目前,检查目标项目权限和存储要求。

详情中的“复制 / 剪切”是跨项目操作;不要把它等同于已经在另一个物理磁盘复制了完整文件。按页面结果检查目标项目可见性和媒体可读性。“从当前项目移除”进入项目回收站,恢复步骤见“归档与删除”。

命名约定建议

同一作品使用一个资产名称,如“品牌短片主片”;版本保留 V1、V2 的编号。横版、竖版或语言版本若分别交付,可以用不同资产,避免仅靠“最终版 / 最终版2 / 真最终版”区分。

项目与素材

15 · 回收站、归档与删除

这些操作的影响不同。执行前先确认你要解决的是“从当前项目移除素材”“停止协作”还是“彻底删除项目”。

操作 作用 能否代替备份
从当前项目移除媒体 从当前项目关系中移除,可在项目回收站恢复 不能
恢复回收站媒体 把被移除的媒体重新加入当前项目 不能
归档项目 保留项目数据,暂停项目内写入和存储调整 不能
恢复项目 把已归档项目恢复为进行中 不能
删除项目 按确认说明处理项目,可能不可恢复 必须先有独立备份

恢复误移除媒体

进入项目“媒体 → 回收站”,找到相应媒体,使用恢复操作并查看提示。回到项目媒体确认文件和版本可读。若底层原文件已经被外部删除,恢复项目关系不会凭空恢复文件。

项目交付后的归档

真实界面:项目设置中的归档与删除说明
真实界面 · 演示数据 · 项目设置中的归档与删除说明点击放大查看
  1. 确认最终版本、正式结论和交付内容。
  2. 检查未解决反馈,记录保留原因。
  3. 检查外部分享,需要停止访问的先撤销。
  4. 确认实际备份和必要的媒体异盘副本。
  5. 进入 项目设置 → 危险操作,选择归档并确认。

归档不会自动把素材复制到归档存储,不会自动做异地备份,也不应假定已经撤销所有分享。需要再次修改时先恢复项目,再重新审阅新版本。

删除前必须确认的内容

读清页面对删除范围和可恢复性的提示,核对项目名、版本、分享及备份。不能用项目回收站替代整库恢复。备份恢复通常会影响整个实例,不只是一个项目,请让维护者评估后处理。

审阅与交付

16 · 版本管理与新一轮修订

版本历史让你保留原始审阅上下文。修订同一作品时,从原资产的“上传新版本”进入,而不是把修订文件上传成另一个没有关联的资产。

真实界面:素材详情中的版本历史与上传新版本入口
真实界面 · 演示数据 · 素材详情中的版本历史与上传新版本入口点击放大查看

上传新版

  1. 进入项目媒体,打开原资产详情。
  2. 在 Version history 区域选择“上传新版本”。
  3. 选修订文件,等待上传和处理完成。
  4. 确认历史出现 V2 / 下一版本,检查画面和文件信息。
  5. 核对 Current 标记;需要调整时使用页面支持的当前版本切换操作。
  6. 明确选择新版本,再点“创建审阅”开始下一轮。

选择某一历史版本用于预览,与把它设为资产当前版本是两种操作。仅点开 V1 看画面,不应默认认为当前版本已切换到 V1。

旧评论会怎样

旧审阅与其评论仍属于原先引用的版本。把 V2 上传到资产并不自动把 V1 的审阅换成 V2。客户从旧链接看到旧版时,先检查分享对应的审阅清单;为新版建立新审阅并发送正确链接。

修订说明怎么写

可以在审阅名称和评论中注明改动范围:“V2:调整 00:12–00:18 节奏,修改片尾文案,其他镜头保持。”接收者容易确认改动,你也能追踪哪条反馈已落实。

完成检查: 版本编号正确、预览正确、当前版本明确、下一轮审阅确实引用新版。

审阅与交付

17 · 创建一轮审阅

谁来操作: 有创建审阅权限的项目成员。审阅是一轮明确的确认任务,围绕指定版本组织参与者、截止时间和判断规则。

真实界面:审阅清单、参与者、通过条件和访问权限
真实界面 · 演示数据 · 审阅清单、参与者、通过条件和访问权限点击放大查看

创建步骤

  1. 从素材详情选定版本后点“创建审阅”;也可在项目“审阅”里选择媒体加入清单。
  2. 核对每份作品和 V 编号,移除无关内容。
  3. 输入审阅名称,例如“主片 V2 · 客户文案确认”。
  4. 设置截止时间;长期有效不代表永远开放写入,仍受审阅状态与分享策略影响。
  5. 选择审阅成员和需要的负责人。
  6. 选择通过条件。
  7. 需要外部分享时设置访问密码、下载和评论权限,提交后核对创建反馈。

选择通过条件

条件 适用情景 需要确认
任一审阅者 任何一个指定审阅者即可完成确认 不适合要求所有部门签字的流程
所有审阅者 每个被要求的审阅者都要确认 确保参与者正确,否则可能一直等待
仅负责人 明确由一个负责人做最终判断 必须选定负责人,其他评论不替代其结论

草稿与开启

没有分享权限时,创建结果可能保存为草稿。草稿不等于已经对外发送;先检查审阅状态,按页面开启后再创建分享。创建成功但复制链接失败时,审阅可能已经存在,在详情里继续创建或复制分享,不重新发起相同审阅。

看板与详情

项目审阅看板展示不同状态的审阅。打开详情查看固定版本、参与者、评论线程和审核结论。记录每轮的目标,避免把素材级反馈、审阅状态和项目归档混在一起。

完成检查: 清单版本正确、参与人正确、判断规则符合要求、所需分享成功创建且复制。

审阅与交付

18 · 提交精确反馈与审核结论

好的反馈应说明“哪里、问题是什么、期望如何改”。尽量把内容定位到具体版本、时间或画面区域。

视频时间评论

  1. 打开对应审阅或分享中的视频,播放到需要反馈的位置并暂停。
  2. 选择时间点评论,点“抓取当前时间”,再输入意见。
  3. 若问题涉及一段内容,选择时间区间,设置起点和终点。
  4. 提交后确认评论出现,重新点击评论检查时间定位。

示例:“00:12.400–00:15.000:字幕先于旁白出现。请把字幕入点后移到第一句话开始。”

图片点位、区域与画面标记

在图片评论区选择对应工具:点位用于一个具体位置,区域用于一块画面,箭头、笔刷或矩形用于表达视觉关系。先在画面上标记,再写说明。提交后点击评论检查标记位置是否正确。

真实界面:外部图片审阅和画面反馈入口
真实界面 · 演示数据 · 外部图片审阅和画面反馈入口点击放大查看

附件与回复

页面开放评论附件时,可附参考图片或文件。附件上传也可能经过安全检查;没有可用附件存储或策略拒绝时,先联系 Owner。涉及客户信息的参考文件只传到正确项目或分享。

回复里写清处理方案。具备权限的处理者可以把线程标为已解决;“已解决”表示反馈处理状态,不自动等于整轮审阅通过。

审核结论

具备结论权限的审阅者在审核结论区域提交:

结论 表达的意思 建议备注
通过 当前审阅版本符合本轮要求 明确是否可以交付
需修改 需要进一步修订 指向未解决反馈或说明修改范围
拒绝 当前版本未达到要求 解释原因和下一步

按本轮通过条件汇总结论。分享开放评论且审阅未处于草稿或结束状态时,访客也可以对当前固定版本提交正式结论;匿名访客以分享会话记录身份。关闭分享评论权限时,访客的新评论与正式结论都不能提交。

审阅与交付

19 · 创建、安全检查与撤销分享

分享让外部人员访问指定审阅内容,不必给他们 Owner 账号或整个工作空间权限。

分享之前先检查四件事

  1. 内容范围: 只包含要让接收者看的媒体与版本。
  2. 访问方式: 按需要设置访问密码、到期时间及昵称要求。
  3. 允许操作: 评论与下载分别控制;能播放不代表允许下载原片。
  4. 可达地址: 接收者必须能访问该主机 / 团队域名;127.0.0.1 只能给本机用。

创建并验证

在创建审阅时设置访问策略,或在审阅详情的“分享与通知”创建分享。确认成功后复制链接,需要密码时将密码与链接妥善交付。

用另一个未登录的浏览器窗口验证:是否要求密码、显示的文件和版本是否正确、评论和下载是否如预期。再在接收者实际使用的网络设备上验证可达性;本机验证通过不能证明外网已能访问。

更新或撤销

在审阅详情的分享记录中查看现有分享、展开链接与密码,按页面支持调整策略、撤销或重新生成入口。撤销后再次从未登录窗口测试失效结果。

重新生成链接会影响原接收者,记得发送新链接。撤销只能阻止后续访问,无法收回已经下载或复制的内容。

为什么客户仍然看到旧版

分享引用的是对应审阅,而审阅固定了媒体版本。上传 V2 后,用 V2 创建新一轮并发送新入口。不要把“当前版本已更新”当成“所有旧链接都自动更新”。

完成检查: 未登录可按策略访问、链接实际可达、范围正确、密码和下载规则正确。

审阅与交付

20 · 给外部审阅者的操作指南

本章可以直接交给客户或合作方。你通常只需要分享链接和发布方提供的访问码;无需安装 Visto,也不要索要团队 Owner 密码。

打开链接

  1. 用浏览器打开收到的链接。
  2. 页面要求密码时,输入发布方提供的访问码。
  3. 要求昵称时,填写能让团队辨认的姓名或公司与姓名。
  4. 检查显示的作品名称和版本,选择相应作品查看。

看画面、写反馈

图片可以用点位或区域评论标出问题;视频可以暂停后抓取当前时间,也可选择时间区间。建议格式:“位置 + 问题 + 希望的修改”。提交后确认评论出现在列表。

如页面只开放观看,评论按钮不会可用。下载同样由发布方决定,不能下载时先询问发布方是否需要交付源文件。

提交当前版本的正式结论

分享开放评论且审阅未结束时,可以在“当前版本结论”选择“通过”“需修改”或“拒绝”,填写说明后提交。确认页面显示已记录的结果。该操作针对当前固定版本;文字评论与正式结论是两种记录。分享关闭访客反馈或审阅结束后不能继续提交。

访问失败时

提示 / 现象 可以做什么
访问码错误 核对空格、大小写及是否收到新的密码
链接过期或撤销 请发布方确认分享记录并重新提供入口
页面打不开 确认是否需要加入团队网络 / VPN,是否是误发的本机地址
视频能打开但不能播放 告知发布方作品名、版本、浏览器和错误截图
没有评论或下载按钮 请发布方检查分享策略
看到旧版 发回所见版本号,请发布方确认新一轮分享

反馈问题时不要把访问密码、完整含令牌链接或客户原片发到公开社区。

设置与维护

21 · 通知、个人资料与活动

通知帮助成员及时看到审阅和协作变化。外部通知是否可用取决于 Owner 配置的渠道和成员自己的接收偏好。

我的账户

点击右上角个人入口,进入“我的账户”。查看身份、维护显示名称、界面语言和接收偏好,保存后确认成功提示。个人姓名会用于评论和成员列表;界面语言会影响导航与部分页面文案。

站内通知

从全局“通知”进入,查看自己有权访问的消息。点消息回到相关项目或审阅,阅读后按页面操作标记状态。没有消息时,先检查是否是正确账号和对应事件是否已发生。

外部渠道

Owner 在 Owner 设置 → 全局通知 配置邮件、飞书或企业微信等已有渠道,填写服务信息后测试。渠道密码、Webhook 和密钥只由 Owner 管理,不发送给普通成员。

“渠道测试成功”说明测试投递成功,不能单独证明每位成员都收得到:还要核对成员接收地址、个人偏好和真实事件投递状态。

活动与审计

项目设置中的活动记录帮助追踪谁在什么时候做过什么;Owner 系统活动用于全局排查。按时间、成员、动作和资源筛选,遇到失败投递时保留状态和错误信息再处理。活动记录不能代替媒体备份。

设置与维护

22 · 网络与远程访问

默认原生 Server 只监听本机;默认 Compose Web 也绑定本机。把分享链接交给异地客户以前,先由部署维护者配置可达地址和 HTTPS 入口。

浏览器、HTTPS 入口、Visto 与存储的部署示意
原创示意图 · 浏览器、HTTPS 入口、Visto 与存储的部署示意点击放大查看

四个容易混淆的设置

设置 决定什么 不会替你完成什么
服务监听 / 网关入口 哪些设备可以连接 不自动生成公网域名
HTTPS 网关 对外链路加密和入口路由 不自动授予项目权限
远程访问必须使用 HTTPS 拒绝非本机明文 API 请求 不负责安装证书或配置代理
网页端添加本机目录权限 Owner 网页能否添加主机存储 不授予普通成员任意目录访问

正确的开启顺序

  1. 维护者配置 HTTPS 域名、证书及反向代理,确保 Visto 正常工作。
  2. 用远程设备访问 HTTPS 地址并验证登录和分享。
  3. 在 Owner 设置 → 网络与安全 打开“远程访问必须使用 HTTPS”。
  4. 保存后立即生效,再检查团队和分享入口。
  5. 防火墙和代理应使 HTTPS 网关成为唯一公开入口。

该开关默认关闭。开启后,非回环明文 API 请求可能返回 426 security.https_required。本机 127.0.0.1 仍可使用 HTTP。正在通过远程 HTTP 操作时,系统会阻止会导致自锁的开启请求;请先切换到 HTTPS 或到部署主机操作。

由部署配置强制

REVIEW_STUDIO_REQUIRE_HTTPS=1 会强制 HTTPS 策略,网页不能关闭,需要维护者改主机配置并重启。代理信任和 Cookie 的安全标记由部署配置及真实请求协议决定,不能只打开网页开关就认为代理已正确配置。

推荐交付给成员的信息

团队的 HTTPS 地址、登录方式、项目邀请、能访问的网络范围及支持联系人。不要把主机配置、初始化令牌或底层存储密钥一并发送。

设置与维护

23 · 备份:保护数据库与媒体

本章命令适用于 macOS 原生 Server,由部署维护者在主机执行。备份会短暂影响服务,选择没有上传和重要审阅的时间窗口。

先分清备份覆盖范围

数据 原生数据目录备份是否自动覆盖 应如何安排
数据目录内的数据库、加密秘密、系统托管源文件和预览 随数据目录归档 保留归档与同名元数据
配在数据目录外的本机 / 外接盘媒体 不会因数据库记录存在就自动打包 单独复制或快照,并保持引用路径可用
WebDAV / S3 上的实际媒体文件 不会自动下载全部对象到原生备份 使用对应存储的版本、快照或独立备份
主机配置、证书、部署说明 不应假定都在业务数据归档里 由维护者另做安全备份,妥善保护秘密

最常见误区: 数据库里有文件记录,不代表这份备份已经包含全部原片。先清点每个存储的物理落点,再决定备份范围。

创建备份

sudo /Library/Visto/current/scripts/backup-visto-server.sh

脚本会证明服务已经停止,再归档数据,随后按流程启动并检查就绪。停服证明失败时会中止;不要手动伪造成功记录或直接打包正在变化的数据库。

确认完成

  1. 命令成功退出并打印实际备份路径。
  2. 归档和 <归档文件>.json 元数据均存在。元数据记录摘要和恢复所需信息。
  3. 服务重新就绪,浏览器能读取项目。
  4. 把这两个文件一起复制到另一块磁盘或可信备份位置。
  5. 把数据目录外媒体和部署配置的独立备份与此次备份关联记录。

建议的备份时机

首次完成配置后、重要交付后、每次更新前、每次恢复或大规模存储调整前。按项目价值安排日常周期,并定期在隔离环境检查可恢复性;“文件存在”不等于“恢复已验收”。

设置与维护

24 · 更新、恢复、回滚与卸载

本章适用于 macOS 原生 Server。执行的是主机维护操作,普通项目成员无需运行。占位符必须替换成实际路径、版本和摘要;保留所有命令输出用于定位失败。

更新、验证与失败保护的流程示意
原创示意图 · 更新、验证与失败保护的流程示意点击放大查看

更新:安装包、摘要和版本清单要匹配

免费 Server 提示新版本后,由维护者从官方 Release 手动下载。免费版本提示清单不签名,不自动下载或安装;SHA-256 校验是完整性检查,不能替代下载来源的可信度。

当前原生更新脚本还要求版本清单文件。不能只提供包与摘要;未传 --manifest 时脚本会查找 <安装包路径>.manifest.json。按同一 Release 的说明取得版本清单,确认其 version 与包一致。若 Release 未提供可用清单或安装路径,停止并联系维护者,不随意拼写清单绕过缺失。

  1. 记录当前版本与运行状态。
  2. 创建备份,把归档、元数据和外部媒体副本妥善保存。
  3. 下载同一发布的包、摘要与版本清单。
  4. 校验 SHA-256,执行:
sudo /Library/Visto/current/scripts/update-visto-server.sh \
  --package '/实际路径/Visto-Server_<版本>_macos-arm64.tar.gz' \
  --sha256 '<官方公布的64位SHA-256>' \
  --manifest '/实际路径/该版本的清单.json'

脚本在校验、停服和备份保护后切换程序,检查健康状态;失败时按工具的恢复流程处理。不要手工改 current 链接。

更新后检查

curl -fsS http://127.0.0.1:8787/health/ready
sudo /Library/Visto/current/bin/visto-server --json \
  --address 127.0.0.1:8787 status

再用浏览器确认项目、旧文件、新上传、视频播放和分享。健康接口通过不能代替业务数据检查。

日常服务启停与日志

维护前确认没有在途上传或重要审阅。默认 macOS 实例可以用系统服务管理器停止或启动:

# 停止
sudo launchctl bootout system/com.visto.server
# 启动
sudo launchctl bootstrap system /Library/LaunchDaemons/com.visto.server.plist
# 已加载服务的重启
sudo launchctl kickstart -k system/com.visto.server

启动或重启后再次查 health/ready 并在网页验证。若提示服务不存在或已加载,先确认当前服务状态和实际安装配置,不反复执行。默认日志位于 /Library/Logs/Visto;保留相关时间段的错误即可,发给他人前脱敏。网页全局设置通常保存后立即生效,主机环境配置的修改则按要求重启。

恢复:先只读检查,再执行替换

恢复会替换当前实例的数据目录,会影响备份之后的业务变化。先保存当前实例的备份;确认目标主机、数据目录、归档和同名元数据。

sudo /Library/Visto/current/scripts/restore-visto-server.sh \
  --backup-file '/实际路径/备份.tar.gz' \
  --check-only

只读检查通过且你已确认覆盖影响后执行:

sudo /Library/Visto/current/scripts/restore-visto-server.sh \
  --backup-file '/实际路径/备份.tar.gz' \
  --confirm-restore

两种模式不能同时使用。当前恢复保护要求原数据目录一致;跨目录恢复可能被拒绝。拒绝时保留错误,不手工解压覆盖数据库,也不修改元数据去伪装路径。

恢复后确认服务就绪、项目和版本符合备份时间,原文件可读,外部存储仍可访问;数据目录外原片需要独立恢复与核对。

回滚到保留的程序版本

sudo /Library/Visto/current/scripts/rollback-visto-server.sh \
  --to-version '<已保留的版本>' \
  --confirm-rollback

程序回滚与数据恢复目的不同;不能假定旧程序一定兼容当前数据库。让工具执行对应保护,按具体失败说明处理。不要删除恢复点、备份或失败日志。

卸载

默认卸载保留用户数据和备份:

sudo /Library/Visto/current/scripts/uninstall-visto-server.sh --yes

卸载程序不会自动抹掉外接盘或远程存储上的文件。--purge-data 会扩大删除影响,只在确认不需要数据并有可用备份时按该版本说明使用。

帮助与参考

25 · 按现象排查问题

先记录“发生了什么、在哪个版本和页面、最近改变了什么”,再做最小检查。失败时不要删除数据或绕过权限、哈希、路径和恢复保护。

页面打不开

确认浏览器地址是否是这台主机的地址。原生 macOS 默认本机 8787,Docker 默认本机 8080;实际端口以部署配置为准。

curl -i http://127.0.0.1:8787/health/ready
  • 连接被拒绝:检查服务是否运行、端口和 Gatekeeper。
  • 返回未就绪:保留响应,查看服务日志与数据库 / 运行时状态。
  • 本机能访问而远程失败:检查监听、HTTPS 网关、网络和防火墙。
  • 426:使用正确 HTTPS 入口,核对强制 HTTPS 策略。

无法创建项目或上传

检查项 如何判断
当前账号 / 项目 确认处于正确工作空间和项目
具体权限 让项目主管检查上传或管理权限
存储开放 Owner 已将活动上传位置开放给这个项目
空间、配额和写入权限 Owner 看存储状态,维护者检查磁盘和服务账号
归档状态 已归档项目需要先恢复为进行中
文件与网络 先用小测试文件检查,保留原失败信息

上传完成但视频没有预览

确认媒体安全检查、后台队列、失败任务和 FFmpeg / ffprobe 状态。部分增强失败可能只影响时间轴缩略图等功能,按页面说明判断,不一概把素材记为完全不可用。

curl -fsS http://127.0.0.1:8787/health/ready

程序检测正常后,再看具体任务错误、文件格式和磁盘空间。文件损坏、来源不可读与运行时未安装需要不同处理。

文件被隔离或拒绝

Owner 到 存储与上传安全 → 隔离与异常 查看文件、检查结果和原因。“刷新状态”用于重新读取现有结果,不代表强制重做安全扫描。只有确认原因和风险后,才使用页面允许的放行或拒绝操作。普通成员不能绕过隔离去分享或下载。

原片曾能打开,现在提示不可读

检查外接盘是否挂载、NAS / S3 是否在线、连接权限是否改变、本机文件是否被移走或删除。不要立即重新导入全部文件。项目回收站恢复的是项目关系,底层媒体丢失仍需从实际媒体备份恢复。

分享打不开、过期或没有按钮

先核对当前分享是否被撤销、密码和有效期、审阅状态及链接地址。没有评论或下载按钮,检查对应访问策略;接收者打不开本机地址时,需要正确团队网络入口。

保存冲突、登录失效

设置被其他会话修改时,重新载入最新值后再提交,避免覆盖别人的改动。登录失效时重新登录并确认角色;不要用 Owner 账号替代所有成员操作。

更新或恢复失败

保留当前数据、安装包、版本清单、摘要、备份、元数据和输出。先解决缺失文件、错误版本或路径不一致。停服证明、哈希或恢复检查不通过时,停止后续写入,联系维护者。

帮助与参考

26 · 常见问题

我需要安装 Desktop 才能用吗?

本手册的免费 Server 浏览器工作流不以 Desktop 为前置依赖。团队已经部署 Server 时,你只需要地址、账号或分享入口。

数据会自动上传到云端吗?

媒体按 Owner 配置的保存位置存储。本机部署和远程存储是不同选择;启用 WebDAV / S3、外部通知或远程分享时,相应数据会经过所配置服务与网络。

同一个文件名会自动合并成版本吗?

不要依赖文件名相同自动合并。需要修订原作品时,打开原资产并使用“上传新版本”,再核对版本历史。

上传新版后,旧分享会显示新版吗?

不要这样假定。审阅引用固定版本;用新版创建下一轮审阅并发送正确入口,旧审阅继续保留旧版本的上下文。

注册后为什么看不到项目?

账号存在不代表已加入项目。请 Owner 或项目主管添加项目成员关系并核对状态、期限和权限。

为什么网页不能再改本机目录权限?

这个开关只在首次设置时询问一次。后续由主机配置修改并重启,避免 Owner 网页会话自行改变主机访问边界。

归档后文件已经复制到归档盘了吗?

没有这个保证。项目归档是生命周期操作,物理存储复制和备份是独立操作,必须分别确认完成结果。

拷贝数据库就算备份全部媒体吗?

不算。需要一致性数据库和加密秘密,也要清点系统托管媒体、外部目录及远程文件。参见“备份”。

安全扫描没有结果,是不是安全?

“未扫描”“等待”或“引擎不可用”不能等同安全通过。结合策略、实际引擎和检查结果处理。

网页显示有更新会自动安装吗?

免费 Server 只提示版本,主机维护者手动从官方发布页下载校验并更新。媒体运行时的签名安装流程另行处理。

能把本机分享地址发给客户吗?

127.0.0.1 只对当前设备有效。客户需要一个可达的团队地址和符合策略的 HTTPS 入口。

手机上能打开代表移动端已验收吗?

不代表。本手册网页做响应式阅读适配,产品在不同手机、浏览器和文件格式上的兼容性仍以对应版本验收为准。

帮助与参考

27 · 交付检查单与求助模板

项目主管:每轮审阅前

  • 选定的资产、版本和审阅目标一致。
  • 参与者、负责人和通过条件符合本轮要求。
  • 截止时间与访问有效期符合安排。
  • 分享密码、评论、下载范围已核对。
  • 从未登录窗口和接收者网络验证入口。

项目成员:提交新版本后

  • 上传成功且处理状态可用。
  • 新版出现在原资产历史中,当前版本正确。
  • 修订说明包含处理的反馈范围。
  • 下一轮审阅引用新版,不误发旧链接。

维护者:部署或更新后

  • 服务就绪,媒体运行时可用。
  • 使用正确账号读回既有项目与旧文件。
  • 小文件上传、图片预览、视频播放和外部分享可用。
  • 备份归档、元数据、外部媒体与主机配置备份齐全。
  • 重启后的数据与服务仍可读,或明确记录未测。

报告问题时提供什么

复制下面模板给团队维护者;公开问题只发脱敏内容。安全问题通过项目的安全报告入口私下提交。

问题标题:
Visto 版本 / 部署方式:
系统 / 浏览器版本:
发生时间与时区:
我的身份(Owner / 项目主管 / 成员 / 分享访客):
所在页面与操作:
复现步骤:
1.
2.
3.
预期结果:
实际结果与错误提示:
影响范围(单文件 / 单项目 / 所有用户):
最近是否更新、改存储或改网络:
已经做过的检查:
脱敏截图或日志片段:

不要公开发送原数据库、客户原片、存储密码、初始化令牌、私钥或完整带访问令牌的分享链接。截图也要检查浏览器地址、账号、主机路径和客户信息。

手册版本与验证边界

本版对照当前主线源代码、安装说明及维护脚本编写,真实截图来自独立演示数据。界面截图覆盖首次设置、存储向导、创建项目、媒体、版本、审阅、外部图片评论、成员设置及归档说明;流程图为解释操作关系的原创示意。

本文不把写好安装命令等同于在所有平台实际安装通过,不把网页验收等同于产品首发验收。正式发布前仍需使用最终包、最终地址和目标系统执行完整路径复核,并补对应版本说明。

Visto 用户文档 · 2026-09-30
截图使用独立演示数据;安装与发布可用性以对应版本说明为准。

搜索整本手册

查看配图