【文章标题】:瓶中云:让自托管变得人人可及
【文章正文】: Cloud in a Bottle: making self-hosting accessible to everyone 瓶中云:让自托管变得人人可及
TLDR: Cloud in a Bottle is your open-source personal cloud: containerized apps, unified auth, good UX. Self-hosting should feel like using a smartphone that serves webapps, not a sysadmin side job. 简言之:瓶中云是你的开源个人云——容器化应用、统一认证、优秀用户体验。自托管应该像使用能运行网页应用的智能手机般简单,而非系统管理员的兼职工作。
I’m frustrated with the state of the digital world. The software we use is so misaligned with our own incentives (intentionally addicting, loaded with ads, tracking you and selling your data, enshittifying). Software is easier than ever to make; how did we end up here? I think a big reason is the shift of software into the cloud. 我对数字世界的现状感到沮丧。我们使用的软件与自身利益严重错位(刻意让人上瘾、充斥广告、追踪并贩卖数据、质量劣化)。软件开发比以往任何时候都容易,我们怎会沦落至此?我认为重要原因是软件向云端迁移。
Software served from the cloud (think Google Docs vs Microsoft Word) delivers a great experience - no install, accessible on all your devices, immediate sharing/collaboration. But to serve something in the cloud costs money, and so just about everything on the modern web has a company behind it - open source authors naturally don’t want to pay to serve their free software to the world. And those companies have a financial incentive fundamentally misaligned with our own. 云端软件(如Google Docs对比Microsoft Word)提供绝佳体验——无需安装、全设备可用、即时分享协作。但云端托管需要成本,因此现代网络几乎每项服务背后都有企业支撑——开源作者自然不愿为全球免费托管软件买单。而这些企业的经济利益与我们根本对立。
In the pre-cloud days, open source worked - authors distributed their software, and everyone “hosted” it for themselves (i.e. ran it on their own PC). Nowadays, cloud software is centralized, with one instance of the software serving the world, and the costs borne by the creator. This is because individuals don’t have an accessible way to put software into the cloud for themselves. 前云时代,开源运作良好——作者分发软件,用户自行”托管”(即在个人电脑运行)。如今云软件集中化,单一实例服务全球,成本由创造者承担。因为个人缺乏便捷的自主云端托管途径。
Self-hosting exists already, but it’s niche and unapproachable. When I looked at the existing options, none of them felt right: 自托管虽已存在,但小众且门槛高。现有方案均不尽如人意:
- sandstorm.io: very close in spirit (their article from 2014 makes basically the same argument I’m making here), but unfortunately long abandoned. It also required significant changes to existing software to run on their platform.
- nextcloud: slow and unreliable, and more enterprise-targeted now
- yunohost: apps run directly on the host, no sandboxing. one insecure app compromises the entire server.
- coolify: hosts containerized apps, but every app is an island with its own login and little integration with the host or other apps.
- sandstorm.io:理念高度契合(其2014年文章与本文观点基本一致),但已长期停更。且需大幅修改现有软件才能在其平台运行
- nextcloud:速度慢且不稳定,现更侧重企业市场
- yunohost:应用直接运行在主机上,无沙箱隔离。一个不安全应用会危及整个服务器
- coolify:托管容器化应用,但每个应用都是孤岛,需单独登录且与主机/其他应用几乎无集成
We created Cloud in a Bottle to take another stab at this. At the core, it’s just an Ubuntu machine with a web server that hosts a dashboard and routes HTTP(s) requests to containerized apps. Apps are (rootless, hardened) containers, so it can run existing software with minimal changes - and in a reasonably secure sandbox. But beyond just hosting containers (like e.g. coolify), there are various opt-in platform features that apps can take advantage of to make the experience better. 我们创建瓶中云再次尝试解决这个问题。核心只是台Ubuntu机器,搭载托管仪表盘并将HTTP(s)请求路由至容器化应用的网页服务器。应用采用(无root、强化的)容器,因此能以最小改动运行现有软件——且在相对安全的沙箱中。但不止于容器托管(如coolify),还提供多种可选平台功能供应用调用以提升体验。
In a way, I want it to feel like your “cloud smartphone” - something that you own, where finding and installing great apps is trivial, and where the user experience is as good as the closed source products we’re trying to replace. As a basic example, if you’re logged into your instance, you’re automatically logged into all your apps - no separate accounts in each app. And there’s an interface to allow permissioned access to data and capabilities between different apps in your instance. 某种意义上,我希望它像你的”云智能手机”——完全属于你,轻松发现安装优秀应用,用户体验媲美我们试图替代的闭源产品。举个基础例子:登录实例后自动登录所有应用——无需每个应用单独账号。还有接口允许实例内不同应用间经许可的数据/能力互通。
More generally - think of all the different APIs that Android or iOS provide to enable apps to deliver a great, integrated experience (sensor access, notifications, health data sharing, etc). We’ve put a lot of time into thinking about the right analog of those APIs in the context of a personal cloud. 更广泛地说——想想Android/iOS提供的各种API如何让应用提供优秀集成体验(传感器访问、通知、健康数据共享等)。我们花费大量时间思考这些API在个人云场景中的恰当类比。
It’s open source, self-hostable, zero telemetry, and aims to be as simple and “magic-free” as possible. We (Imbue, the company I work for) also offer a managed version, which I think is really important to making this widely accessible - and it gives us a straightforward business model to support the project. But the open-source/self-hosted path runs exactly the same code and will always be first-class. 它开源、可自托管、零遥测,力求尽可能简单且”无魔法”。我们(我任职的Imbue公司)还提供托管版,这对普及至关重要——也为我们支持项目提供直接商业模式。但开源/自托管路径运行完全相同代码,且永远是一等公民。
We’re launching now after building and testing it privately for 6+ months, now that the core platform is mostly complete and stable. I’ve been slowly moving my digital life into my own Bottle instance, and it’s felt great. That said, there’s a chicken and egg problem - without a broadly accessible way to self-host open source web software, the audience for such software is small, and the available software is limited. 经过6个多月私下开发测试,如今核心平台基本完成且稳定,我们正式发布。我正逐步将数字生活迁移到自己的Bottle实例,体验很棒。但存在鸡与蛋问题——若缺乏广泛可及的开源网页软件自托管方式,这类软件受众就少,可用软件也有限。
A big goal of ours is catalyzing the creation of more great open source web software - things we can recommend to friends and parents, not just other software nerds. Our curated app catalog is one step in this direction - we aim to maintain a high bar, only adding things that actually deliver a great user experience, so it’s pretty small right now. But we’re adding things every week - and we hope to grow it faster with the help of the community. For now, early users will likely need a bit of technical familiarity (or a coding agent) to find/create/adapt the things you want to run on your instance (it’s really easy!). Over time, as the catalog gets deeper and we polish the experience 我们的重要目标是催化更多优秀开源网页软件诞生——能推荐给朋友和父母而不仅是极客的软件。精选应用目录是第一步——我们坚持高标准,只添加真正提供优秀用户体验的应用,所以目前规模较小。但我们每周都在新增——期待在社区帮助下加速成长。现阶段早期用户可能需要些技术基础(或编程助手)来寻找/创建/适配想在实例上运行的内容(其实非常容易!)。随着目录扩充和体验打磨…