2014年,Sandstorm.io写过一篇文章,论点是:开源网页软件应该被普通人自己托管,而不是全靠作者一个人扛服务器账单。那家公司后来停更了。十一年后,几乎一字不差的论点又出现了——只是这次说话的不是开源信徒,是一家做AI agent的公司,叫Imbue。它九月五日发布的产品叫Cloud in a Bottle,想做的事情是:让自托管像用智能手机一样简单。
这句话听起来像每次自托管项目重启时都会说的漂亮话。但翻开它的技术文档,会发现这次至少把"安全"和"体验"两个词,变成了可以核实的工程细节,而不只是形容词。
发生了什么
Cloud in a Bottle本质是一台跑着router控制面的Ubuntu机器:Python写的router管dashboard、API、容器生命周期,配合Caddy做HTTPS、CoreDNS发通配符域名,应用则跑在rootless Podman容器里,每个app一个子域名。
它在博客里点名批评了四个前辈:
- Sandstorm.理念对,但停更多年,还要求现有软件大改
- Nextcloud.转向企业市场,个人体验变慢变糙
- YunoHost.应用直接跑在宿主机上,没有沙箱,一个应用出事全盘沦陷
- Coolify.容器托管解决了部署,但每个应用是信息孤岛,各有各的登录
前三条批评基本站得住——尤其YunoHost"无沙箱"这条,是它自己文档里承认的架构选择,不是编出来的黑称。Coolify那条也符合它主打PaaS部署、不做跨应用集成的产品定位。
说安全,得看真材料
Cloud in a Bottle的安全承诺不是一句"更安全",而是具体到:容器内root映射到宿主机非特权子UID,默认只能碰自己的数据目录,权限被剥到最低,HTTP端口只绑本地。跨应用要拿数据,得应用主人显式点头授权。
登录也不是简单共享cookie:浏览器session、API token、per-app token三套凭证并存,标记owner身份的header会在跨域请求里被主动拒绝,防的就是脚本冒充身份这种老攻击面。
- 风险.整套系统靠一个权限收窄的system agent来做主机级操作,这个helper本身握着比容器高的权限,是文档里没提但逻辑上绕不开的新攻击面。
钱和许可证:理想主义的账本
自托管归自托管,Imbue也卖托管版,三档定价按小时用量计费,只在运行时才收费,都送启动额度。
真正的伏笔在许可证里。Imbue反复说"开源自托管路径永远是first-class",代码用AGPL-3.0开源。但GitHub仓库同时写着,未来可能转向"fair-source风格"许可,只是承诺个人使用不受限。这两句话不该分开读。
谁真正需要这套系统
Imbue的主业是AI agent,不是自托管情怀。原文里"或者用一个coding agent"这句轻描淡写的话,值得多想一层:一个能自己写代码、自己部署应用的AI agent,需要的正是一个可控、可计费、有权限边界的沙箱运行环境——这恰好和Cloud in a Bottle的容器隔离、per-app token高度重合。
个人自托管用户,很可能是这套基础设施的第二受益者,不是第一目的
- 结论.如果这套系统首先是给自家AI agent准备的执行环境,那它做得比大多数"为爱发电"的自托管项目更扎实,恰恰是因为背后有商业动力撑着,不是巧合。
孟子说"生于忧患,死于安乐"。Sandstorm十年前死于没钱、没用户、应用目录长不起来的鸡蛋困境。Cloud in a Bottle现在的应用目录也小,同样的冷启动问题一天没解决,再好的容器隔离也只是给少数极客用的精装修工具房——离"父母也能用",还差着一整个生态。
真正值得盯的不是它现在讲得多漂亮,是应用目录能不能真的滚起来,许可证会不会真的往fair-source那边挪一步。技术这次没吹牛,但账本和承诺之间,还留着一道没算完的缝。
