Cloud in a Bottle: making self-hosting accessible to everyone
Cloud in a Bottle: making self-hosting accessible to everyone
Cloud in a Bottle:让每个人都能轻松实现自托管
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. TLDR:Cloud in a Bottle 是你的开源个人云:提供容器化应用、统一身份验证和出色的用户体验。自托管应该像使用运行 Web 应用的智能手机一样简单,而不是一份系统管理员的兼职工作。
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.
- sandstorm.io:理念非常接近(他们 2014 年的文章提出了与我这里基本相同的观点),但不幸的是早已被废弃。而且它要求对现有软件进行重大修改才能在其平台上运行。
- nextcloud: slow and unreliable, and more enterprise-targeted now.
- nextcloud:缓慢且不可靠,且现在更多地针对企业用户。
- yunohost: apps run directly on the host, no sandboxing. one insecure app compromises the entire server.
- yunohost:应用直接在宿主机上运行,没有沙盒隔离。一个不安全的应用就会危及整个服务器。
- coolify: hosts containerized apps, but every app is an island with its own login and little integration with the host or other apps.
- 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. 我们创建 Cloud in a Bottle 是为了再次尝试解决这个问题。其核心只是一台运行 Web 服务器的 Ubuntu 机器,它托管一个仪表盘,并将 HTTP(s) 请求路由到容器化应用中。应用以(无根、加固的)容器形式运行,因此可以用极小的改动运行现有软件,并处于相对安全的沙盒中。
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. 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. 除了托管容器(如 coolify)之外,还有各种可选的平台功能,应用可以利用这些功能来提升体验。在某种程度上,我希望它感觉就像你的“云端智能手机”——它是你拥有的东西,查找和安装优秀应用非常简单,且用户体验与我们试图取代的闭源产品一样好。
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 实例中,感觉非常棒。话虽如此,这里存在一个“先有鸡还是先有蛋”的问题——如果没有一种广泛可用的方式来自托管开源 Web 软件,那么此类软件的受众就很小,可用的软件也很有限。
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. 我们的一个重要目标是促进更多优秀的开源 Web 软件的诞生——那些我们可以推荐给朋友和父母,而不仅仅是推荐给其他软件极客的东西。我们精心策划的应用目录是朝着这个方向迈出的一步——我们旨在保持高标准,只添加那些真正提供出色用户体验的应用,所以目前目录还很小。但我们每周都在增加新内容,并希望在社区的帮助下加快增长速度。
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 further, we hope for it to become increasingly accessible to everyone. 目前,早期用户可能需要一点技术背景(或使用编码助手)来查找/创建/适配你想要在实例上运行的内容(这真的很简单!)。随着时间的推移,随着目录的丰富和我们对体验的进一步打磨,我们希望它能变得越来越容易被所有人使用。
Want to check it out? 想了解一下吗?
- Try a managed instance for free ($10 credit) / 免费试用托管实例(10 美元额度)
- Self-host on a cloud VPS / 在云 VPS 上自托管
- Install on your own hardware (in a VM or bare metal) / 安装在自己的硬件上(虚拟机或裸机)
- Check out the code on GitHub / 在 GitHub 上查看代码
- Chat with us on Matrix / 在 Matrix 上与我们交流