ubicloud/ubicloud

GitHub: ubicloud/ubicloud

Ubicloud 是一个开源的云平台,提供公有云的替代方案,以降低成本并增强基础设施控制权。

Stars: 12051 | Forks: 562

# Ubicloud [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/fd0fc5b110061616.svg)](https://github.com/ubicloud/ubicloud/actions/workflows/ci.yml) [![构建](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/b48517affc061617.svg)](https://github.com/ubicloud/ubicloud/actions/workflows/build.yml) Learn this repo using Greptile Ubicloud 是一个可在任何地方运行的开源云平台。可以将其视为云服务商的一个开放替代方案,就像 Linux 之于专有操作系统。 Ubicloud 在裸金属服务商(如 Hetzner、Leaseweb 和 AWS Bare Metal)之上提供 IaaS 云功能。您可以在这些服务商上自行部署,也可以使用我们的 [托管服务](https://console.ubicloud.com)。 ## 快速入门 ### 托管平台 您无需安装任何东西即可使用 Ubicloud。当您这样做时,我们会将底层服务商的优势(如价格或地理位置)传递给您。 https://console.ubicloud.com ### 构建您自己的云 您也可以构建自己的云。为此,需要启动 Ubicloud 的控制平面并连接到其云控制台。 ``` git clone git@github.com:ubicloud/ubicloud.git # 生成 secrets 用于 demo ./demo/generate_env # 运行容器:db-migrator、app(web 和 respirate)、postgresql docker-compose -f demo/docker-compose.yml up # 访问 localhost:3000 ``` 控制平面负责将裸金属 Linux 机器云化。 构建自己云最简单的方法是从这些服务商之一租赁实例。例如:https://www.hetzner.com/sb 租赁实例后,请使用以下环境变量更新 `.env` 文件: - `HETZNER_USER` - `HETZNER_PASSWORD` - `HETZNER_SSH_PUBLIC_KEY` - `HETZNER_SSH_PRIVATE_KEY` 要获取用户凭据,请根据 [这些说明](https://robot.hetzner.com/doc/webservice/en.html#preface) 创建一个用户。 SSH 密钥是您在创建 robot 服务器时设置的那个。 首先要确保您使用 Hetzner robot 救援系统安装了 Ubuntu 24.04。 然后,为每个实例运行以下脚本以进行云化。 目前,该脚本可以云化从 Hetzner 租赁的裸金属实例。 云化实例后,您就可以在这些机器上配置和管理云资源。 ``` # 输入 hostname/IP 和 provider docker exec -it ubicloud-app ./demo/cloudify_server ``` 稍后,当您创建虚拟机时,Ubicloud 会为它们分配 IPv6 地址。如果您的 ISP 不支持 IPv6,请使用 VPN 或隧道代理(如 Mullvad 或 Hurricane Electric 的 https://tunnelbroker.net/)进行连接。或者,您可以从服务商处租赁 IPv4 地址并将其添加到您的控制平面。 ## 为什么使用它 像 AWS、Azure 和 Google Cloud 这样的公有云服务商让初创企业和大型企业的生活更轻松。但它们是闭源的,要求您以高昂的价格租赁计算机,并将您锁定。Ubicloud 提供了一个开源替代方案,降低了您的成本,并将基础设施的控制权归还给您。这一切都没有牺牲云的便利性。 如今,AWS 提供了大约两百种云服务。最终,我们将实现构成 80% 使用量的 10% 的云服务。 目前适合使用 Ubicloud 的示例工作负载和原因包括: * 您有临时性工作负载,如 CI/CD 管道(我们正在与 GitHub Actions 集成),或者您想运行计算/内存密集型测试。我们的托管云比 AWS 便宜约 3 倍,因此您可以节省成本。 * 您想要一个像 [Kamal](https://github.com/basecamp/kamal) 这样可移植且简单的应用部署服务。我们正在将 Ubicloud 的控制平面从 Heroku 迁移到 Kamal;并且我们希望在这个过程中为 Kamal 的依赖项提供开放和可移植的服务。 * 您在某个地方有闲置的裸金属机器。您出于可移植性、安全性或合规性原因,希望构建自己的云。 ## 当前状态 您可以在 [社区论坛](https://github.com/ubicloud/ubicloud/discussions) 中向我们提供反馈、获取帮助,或就您的 Ubicloud 安装提出问题。 我们在构建公有云服务时遵循一种成熟的架构模式。控制平面管理数据平面,数据平面利用开源软件。您可以在下方找到我们当前的云组件/服务。 * **弹性计算**:我们的控制平面通过 SSH 与 Linux 裸金属服务器通信。我们使用 [Cloud Hypervisor](https://github.com/cloud-hypervisor/cloud-hypervisor) 作为我们的虚拟机监控器 (VMM);并且每个 VMM 实例都包含在 Linux 命名空间中,以实现进一步的隔离/安全性。 * **网络**:我们使用 [IPsec](https://en.wikipedia.org/wiki/IPsec) 隧道技术来建立加密和私密的网络环境。我们在双栈配置中支持 IPv4 和 IPv6,并提供公共和私有网络。出于安全考虑,每个客户的虚拟机都在其自己的网络命名空间中运行。对于 [防火墙](https://www.ubicloud.com/blog/ubicloud-firewalls-how-linux-nftables-enables-flexible-rules) 和 [负载均衡器](https://www.ubicloud.com/blog/ubicloud-load-balancer-simple-and-cost-free),我们使用 Linux nftables。 * **块存储(非复制)**:我们使用存储性能开发工具包 ([SPDK](https://spdk.io)) 为虚拟机提供虚拟化块存储。SPDK 使我们未来能够添加快照和复制等企业级功能。我们遵循安全最佳实践,并对数据加密密钥本身进行加密。 * **基于属性的访问控制 (ABAC)**:通过 ABAC,您可以为用户定义属性、角色和权限,并授予他们对资源的细粒度访问权限。您可以在此处阅读更多关于我们 [ABAC 设计的内容](https://www.ubicloud.com/docs/architecture/attribute-based-access-control-abac#attribute-based-access-control-abac-design)。 * **下一步计划**:我们计划接下来开发托管 K8s 或指标/监控服务。如果您有工作负载将受益于特定的云服务,请通过我们的 [社区论坛](https://github.com/ubicloud/ubicloud/discussions) 与我们联系。 * **控制平面**:管理数据平面服务和资源。这是一个将其数据存储在 Postgres 中的 Ruby 程序。我们使用 [Roda](https://roda.jeremyevans.net/) 框架来处理 HTTP 请求,并使用 [Sequel](http://sequel.jeremyevans.net/) 访问数据库。我们使用 [Rodauth](http://rodauth.jeremyevans.net/) 管理 Web 认证。我们通过 [net-ssh](https://github.com/net-ssh/net-ssh) 库使用 SSH 与数据平面服务器通信。对于测试,我们使用 [RSpec](https://rspec.info/)。 * **云控制台**:由 Roda 框架服务的服务器端 Web 应用程序。在视觉设计方面,我们使用 [Tailwind CSS](https://tailwindcss.com) 和来自 [Tailwind UI](https://tailwindui.com) 的组件。我们也使用 jQuery 来实现交互性。 如果您想开始使用 Ubicloud 进行开发,获取 Ruby 和 Postgres 版本的任何方法都是可以接受的。如果您对此没有特别偏好,我们的开发团队使用 `mise`,详细信息请参阅 [此处的文档](DEVELOPERS.md)。 [Greptile](https://greptile.com/) 提供了一个对 Ubicloud 源代码进行索引的 AI/LLM,[可以回答关于它的问题](https://learnthisrepo.com/ubicloud)。 ## 常见问题 ### 你们有构建此类东西的经验吗? 我们的创始团队来自 Azure;并且在此之前曾在 Amazon 和 Heroku 工作过。我们也有初创公司经验。我们曾是 [Citus Data](https://github.com/citusdata/citus) 的联合创始人和创始团队成员,[该公司已被微软收购](https://news.ycombinator.com/item?id=18990469)。 ### 这与 OpenStack 有何不同? 我们认为有三点不同。首先,Ubicloud 以托管服务形式提供(而非盒装软件)。这样,您可以在几分钟内(而不是几周)开始使用。由于 Ubicloud 是为多租户设计的,它内置了静态和传输加密、虚拟网络、密钥轮换等功能。 其次,我们最初面向开发人员。这(我们希望)将给我们带来快速的反馈循环,并使我们能够在两年内推出 6 项关键服务的正式版 (GA)。OpenStack 目前仍主要应用于 3 项云服务。 最后,我们追求简单的设计。使用 OpenStack,您需要在 10 种虚拟机监控程序、10 种 S3 实现和 5 种块存储实现之间进行选择。软件需要以所有这些实现彼此兼容的方式运行。这导致了需要咨询顾问才能部署的软件。我们将对 Ubicloud 采取更有主见的方法。
标签:AI推理, AWS替代, Docker, IaaS, IAM服务, NIDS, PostgreSQL, 云基础设施, 云服务, 云计算平台, 块存储, 基础设施即服务, 安全性, 安全防御评估, 容器化, 开源云, 弹性计算, 托管Postgres, 控制平面, 测试用例, 混合云, 网络调试, 自动化, 裸金属云, 负载均衡, 防火墙