Bento 办公套件:单文件架构解析与自托管建议
Bento 是一个仅由单个 HTML 文件组成的开源办公套件。本文分析了其基于 File System Access API 的运行机制,对比了其与 Nextcloud 在 VPS 部署上的资源开销差异,并说明了目前仅支持演示文稿编辑的现状。
Bento 是什么
Bento 是一个以单个 HTML 文件发布的办公套件。您只需下载一个文件,然后在任意现代浏览器中打开;该文件同时包含编辑器和文档。无需安装程序,也无需账号。它采用 MIT 许可证,源代码位于 github.com/nyblnet/bento,首个正式发布版本于 21 July 2026 发布。截至 27 October 2026,它发布至今刚刚超过 three months,已有 26 个版本。它的发布时间很短,这仍是本文最重要的事实,也是最后一节讨论评估而不是迁移的原因。
“单个文件”真正意味着什么
自托管办公套件通常是一组服务。Nextcloud 运行在 Web 服务器之后,依赖数据库、缓存和后台任务运行器。编辑器是旁边的第二个服务,例如 Collabora Online 或 ONLYOFFICE Docs,通常运行在独立容器中,浏览器通过 HTTP 与其通信。文档存储在文件系统和数据库记录中,编辑会话则存在于编辑器服务中。
Bento 移除了这组服务。下载文件是 Bento_Slides.bento.html,在 v1.0.11 版本(27 July 2026)中约为 659 KB,在 v1.2.7 版本(11 October 2026)中约为 706 KB。这个文件中包含:
- 同时充当查看器的编辑器
- 用于全屏显示演示文稿的运行时
- 演示文稿使用的字体和图片,均已嵌入
- 文档本身,作为文件顶部附近的可读 JSON 块保存
保存是其中不寻常的部分。该文件会重写自己的数据块。页面通过 File System Access API 请求浏览器授予写入权限(该浏览器接口允许页面将内容写回用户选择的文件);不支持此 API 的浏览器则会下载文件。编辑演示文稿会生成同一个自包含文件的新副本。不会上传任何内容,因为没有需要上传的目标。
人们听到“单个文件”时,容易误解的就是这一点。它不是一个在 VPS 上以单个进程运行整个办公套件的服务器二进制文件。这里根本没有进程。运行时是浏览器,因此如果使用 VPS,它只需提供静态文件,不需要执行其他操作。
Bento 办公套件目前提供的内容
“办公套件”是项目的目标,而不是当前已有的应用清单。目前只有一个应用:bento/slides,一个演示文稿编辑器。路线图列出了用于笔记的 bento/spaces、用于电子表格和表格的 bento/dash,以及 bento/vault;这些组件都计划各自使用独立的 .bento.html 文件。如果您现在需要文字处理器或电子表格,Bento 尚未提供。
发布速度很快。v1.0.6 于 21 July 2026 发布,是第一个正式发布的构建版本;v1.0.11 于 27 July 2026 发布,即 7 天内发布了 6 个版本。此后的速度也保持不变:v1.2.7 于 11 October 2026 发布,是第 23 个版本;v1.2.10 于 24 October 2026 发布,是第 26 个版本。这说明维护者较为活跃,但也提示该软件仍在快速变化。更新如此频繁的软件仍在持续发现并修复缺陷,发布说明也体现了这一点:修复大段文本导致实时协作崩溃的问题、保存文件中样式表重复的问题,以及负值图表基线的问题。从 v1.2.5 到 v1.2.10 的 6 个版本中,有 5 个修复了项目自行审查发现的安全问题;只有 v1.2.8 没有。
为什么单个文件适合小型 VPS
发布演示文稿意味着将文件复制到 Web 服务器已经提供服务的目录中。无需编排任何组件,无需保持容器运行,也无需在升级时迁移数据库。将其与编辑器服务进行比较,以下是各服务公布的最低要求:
此图表背后的数据
[
{
"label": "bento/slides (no backend)",
"min_ram_mb": 0
},
{
"label": "Collabora Online CODE",
"min_ram_mb": 1024
},
{
"label": "ONLYOFFICE Docs, Debian package",
"min_ram_mb": 2048
},
{
"label": "ONLYOFFICE Docs, Docker",
"min_ram_mb": 4096
}
]这些是公布的最低要求,不是运行中主机的实测数据。Collabora 的数值是 Nextcloud 为 Collabora Online 公布的 1 GB 系统要求,此外还会为每个已连接用户增加内存,因此在首个用户连接前,最低要求就是 1,024 MB。ONLYOFFICE 帮助中心于 27 October 2026 检查时要求,Debian 或 Ubuntu 软件包至少需要 2,048 MB,Docker 至少需要 4,096 MB;两者都要求至少 4 GB swap 和 40 GB 可用磁盘空间。Bento 的编辑后端需要 0 MB,因为它没有编辑后端。无论使用哪种编辑器服务,底层仍需运行 Nextcloud 本身及其数据库和缓存,因此在 2 GB VPS 上,这一差距决定了你还能托管哪些内容。
备份也同样更简单。恢复 Nextcloud 意味着恢复彼此一致、且处于同一时间点的文件和数据库。恢复 Bento 演示文稿则意味着恢复一个文件。它仍然需要包含历史版本的正式备份,因为编辑器会原位重写文件,而原位写入可能失败:该目录的定时 restic 快照可以覆盖这种情况。
有一个可选的服务器组件。实时协作使用项目称为 blind relay 的组件,该组件可从仓库中的 server/sync-worker/ 自行托管。文档会在浏览器中使用 AES-GCM(Galois/Counter Mode,一种经身份验证的加密模式)加密,房间密钥不会离开文件,relay 只保存密文、连接时间信息以及该密钥的哈希值。自行编辑不需要 relay。
在 Nextcloud 和 Collabora 面前需要放弃什么
访问控制是最大的差距。在 Bento 中,协作密钥会随文档创建,并保存在文件内部,因此拥有文件就等于加入会话。轮换密钥是撤销某人访问权限的方式。该模型没有账户、组、单点登录和审计跟踪。Nextcloud 提供用户、带过期日期的共享链接、配额、服务端版本历史和移动客户端。如果两个人需要对同一文档拥有不同级别的访问权限,Bento 无法表达这种权限差异。
格式互操作性是第二个差距。Bento 存储自有 JSON 格式,这正是文件可读、脚本可编辑的原因。Collabora 和 ONLYOFFICE 用于高保真地往返转换 OOXML(.docx 和 .pptx 系列),因为这是世界其他地方会发送给你的格式。Bento 已开始弥补这一差距:v1.2.6(4 October 2026)增加了 PowerPoint 导入功能,v1.2.7(11 October 2026)增加了一个可在浏览器中将 PowerPoint 演示文稿导入和导出的页面。这两个版本发布都只有几周,因此在构建假定兼容 PowerPoint 的工作流之前,请先查看发行说明,确认你下载的版本支持导入和导出哪些内容。
成熟度是第三个差距。该项目会明确记录自身的不足,这一点值得肯定。实时协作期间的撤销基于快照,可能会将协作者对同一属性的并发编辑恢复掉。编辑功能优先面向桌面端,手机端更适合查看和演示,而不是编辑。README 仍将这两点列为已知限制。手机支持正在快速改进:v1.0.11 中,“另存为”菜单无法完整显示在手机屏幕上;v1.0.12 使手机可以访问保存副本的功能;v1.0.19 增加了触控文本编辑,在此之前,演示文稿在手机上实际上只能只读。项目发布刚超过三个月,因此还存在未知限制。
是否应将真实文档交给它?
根据文档的需求来判断。会议演讲稿、销售演示文稿或希望在十年后重新打开的讲义都适合,因为文件自带编辑器,不要求项目在 2036 年仍然存在。包含 3 名审阅者、保留策略和指定审批人的合同不适合,因为此类文档需要账户和服务器端历史记录。
有两项实用的防护措施。将演示文稿存放在版本控制系统中,或存放在带历史记录的备份中,因为会在保存时自行重写的文件也可能在保存时损坏,而你可能需要昨天的副本。将不认识的人发来的 .bento.html 视为程序,而不是文档,因为它本质上就是这样:一个包含完整应用的网页。按打开任何不受信任网页的方式打开它。对于你自己的演示文稿,同样的事实也意味着另一点:每个文件都带有自己的编辑器副本。因此,当发行说明写着“安全性:更新此文件”时,应更新你分享的演示文稿;从 v1.2.5 到 v1.2.10 的每个版本都这样要求,v1.2.8 除外。v1.2.7 还要求实时分享演示文稿的用户在更新后使用一次 Reset access,v1.2.9 则要求你解锁并保存每个受密码保护的演示文稿一次。
自动化功能确实有用,值得单独说明。由于文档在文件内部采用纯 JSON,代码代理可以直接编辑 .bento.html,而该项目为此提供了 Claude Code skill。它也支持本地开放权重模型,因此,已经运行 Ollama 以提供你自己的模型 的主机可以生成幻灯片,而无需将任何内容发送到该主机之外。
Bento 适合小型服务器的场景
Bento 与其他适合小型 VPS 的单一用途工具类似,特点是体积小:自托管 RSS 阅读器或用于个人财务管理的 Actual Budget。它们只完成一项工作,占用资源少,而且无需应用程序也能读取其中的数据。将笔记应用替换为自托管的 Notion 替代品,也是基于同样的取舍;自托管内容的完整指南介绍了列表中的其他工具。
如果您需要具备用户管理、共享和版本历史记录的完整文档平台,在 VPS 上使用 Docker、TLS 和备份部署 Nextcloud仍然是合适的选择。Bento 并不与这类平台竞争。它适合发送给服务器外部的其他人,以单个文件的形式打开,无需登录,也无需插件。
FAQ
Bento 是 Nextcloud 和 Collabora 的替代品吗?
不是用于同一类场景。Nextcloud 搭配 Collabora 或 ONLYOFFICE 可提供账户、共享文件夹、权限和服务器端版本历史记录,并且需要完整的服务器软件栈来实现这些功能。Bento 提供一个可移植文件,可在任何位置打开,且无需服务器。文档需要自包含时,使用 Bento。多人需要在一段时间内对同一文档拥有不同访问权限时,使用 Nextcloud 软件栈。
Bento 需要服务器或 VPS 吗?
不需要。任何现代浏览器都可以从本地磁盘打开 .bento.html 文件,并在离线状态下编辑。VPS 仅适用于两种可选场景:通过 HTTPS 提供文件,让其他人下载;运行实时协作所需的同步中继。该中继可从项目仓库中的 server/sync-worker/ 自行托管,并存储密文和连接元数据,因此不会看到你的内容。
Bento 以什么格式保存文档?
Bento 使用自己的 JSON 格式。该格式作为可读数据块写在 HTML 文件顶部附近,字体和图像也嵌入文件中。用文本编辑器打开文件即可读取文档结构,因此脚本和 AI 代理可以直接编辑演示文稿。还需注意,存储格式不是 OOXML。PowerPoint 导入功能于 4 October 2026 在 v1.2.6 中加入,但在测试所运行版本中的导入和导出之前,不要假设 .pptx 工作流能够正常运行。
没有用户账户时,协作如何工作?
文档创建时会生成协作密钥,并将其保存在文件中,因此持有该文件的任何人都可以加入会话。编辑内容通过 CRDT(无冲突复制数据类型,这是一种无需中心机构即可合并并发变更的结构)合并,并使用 AES-GCM 加密传输。在线状态中的名称只是声明,不是身份凭证,因此应将参与者列表视为标签,而不是身份验证结果。撤销访问权限意味着轮换密钥并重新分发文件。
Bento 已经适合处理重要文档了吗?
Bento 使用 MIT 许可证,并以开放方式开发。2026 年 8 月 1 日,它发布还不到两周,首周就有六个版本;2026 年 10 月 11 日,它发布还不到三个月,已有 23 个版本,其中最近三个版本修复了安全问题。截至 27 October 2026,它已有 26 个版本,v1.2.9 和 v1.2.10 又修复了更多安全问题。将其视为本月评估的软件,而不是本季度标准化采用的软件。为每个演示文稿保留带历史记录的备份,及时更新文件;在依赖导出路径之前,先测试所依赖的导出路径;任何具有合规或保留要求的内容,都应保存在具备账户和版本历史记录的系统中。