ubicloud is a free, open source databases project written in Ruby and released under AGPL-3.0. It has 12,267 GitHub stars, 587 forks and 95 open issues, and was last pushed 5 hours ago. On this registry it ranks #68 of 143 tracked projects in Databases, with 5 head-to-head comparisons available.

What is ubicloud?

Ubicloud is an open source cloud platform that delivers IaaS features — elastic compute, non-replicated block storage, firewall and load balancer, managed Postgres, Kubernetes, AI inference, and IAM services — on bare metal hardware, for teams that want public-cloud convenience without closed-source lock-in or premium rental pricing.

What it is

Ubicloud is an open source cloud that can run anywhere, written in Ruby and licensed under AGPL-3.0. It follows an established architectural pattern: a control plane manages a data plane, and the data plane leans on open source software. The control plane communicates with Linux bare metal servers over SSH and cloudifies them, using Cloud Hypervisor as the virtual machine monitor. Once a machine is cloudified, operators can provision and manage cloud resources on it. The project lives in the Infrastructure & Operations / Databases category of this registry, and it targets bare metal providers such as Hetzner, Leaseweb, and AWS Bare Metal.

The concrete problem it solves is the trade-off imposed by public cloud providers. AWS, Azure, and Google Cloud are closed source, rent computers at a large premium, and lock customers in. Ubicloud replaces that rented IaaS layer: it reduces costs and returns control of the infrastructure to the operator, without giving up cloud convenience. Rather than chasing the roughly two hundred services AWS offers, the project's stated goal is to implement the 10% of cloud services that make up 80% of consumption, starting with the components listed above.

Key capabilities

  • Elastic Compute, with the control plane driving Linux bare metal servers over SSH and Cloud Hypervisor acting as the VMM.
  • Block storage, explicitly non-replicated as stated in the tagline.
  • Firewall and load balancer services.
  • Managed Postgres, matching the project's PostgreSQL topic and registry category.
  • Kubernetes (K8s) provisioning.
  • AI inference and IAM services.
  • GitHub Actions integration for ephemeral CI/CD workloads, plus a local demo stack composed of the db-migrator, app (web and respirate), and postgresql containers in demo/docker-compose.yml.

Who uses it and how

  • Teams running ephemeral CI/CD pipelines, particularly through the GitHub Actions integration, where the managed cloud is described as roughly 3x cheaper than AWS.
  • Engineers running compute-heavy or memory-heavy test suites that are costly on rented public cloud instances.
  • Organisations that already have bare metal machines sitting somewhere and want to build their own cloud for portability, security, or compliance reasons. Each leased instance is cloudified by running ./demo/cloudify_server.
  • Users who do not want to install anything and instead use the managed service at console.ubicloud.com, passing through the underlying provider's price and location benefits.
  • Self-hosters running the full control plane locally and reaching the cloud console at localhost:3000.

Getting started

Two paths exist. The managed platform at console.ubicloud.com requires no installation. To build your own cloud, clone the repository, run ./demo/generate_env to generate secrets for the demo, then docker-compose -f demo/docker-compose.yml up.

How it compares

AWS, Azure, and Google Cloud are closed source, charge a premium for rented compute, and lock customers in; Ubicloud is AGPL-3.0, can be self-hosted on bare metal leased from providers such as Hetzner or Leaseweb, and returns control of the infrastructure to the operator. Its managed cloud is positioned at roughly 3x cheaper than AWS. Data and infrastructure ownership stay with the self-hoster rather than with the provider.

When to use it — and when not to

A self-hoster must operate the control plane stack (the db-migrator, app, and postgresql containers), lease bare metal, install Ubuntu 24.04 through the provider's rescue system, and run the cloudify script on every instance; VMs receive IPv6 addresses, so an ISP without IPv6 support requires a VPN or a tunnel broker such as Mullvad or Hurricane Electric, or leased IPv4 addresses added to the control plane. It is not the right choice for teams that need a broad service catalogue, because only a small fraction of AWS services is targeted. Block storage is also non-replicated, which rules it out where durable redundancy is a hard requirement.

project readme (upstream, from github) — read inline

Ubicloud CI Build Learn this repo using Greptile

Ubicloud is an open source cloud that can run anywhere. Think of it as an open alternative to cloud providers, like what Linux is to proprietary operating systems.

Ubicloud provides IaaS cloud features on bare metal providers, such as Hetzner, Leaseweb, and AWS Bare Metal. You can set it up yourself on these providers or you can use our managed service.

Quick start

Managed platform

You can use Ubicloud without installing anything. When you do this, we pass along the underlying provider's benefits to you, such as price or location.

https://console.ubicloud.com

Build your own cloud

You can also build your own cloud. To do this, start up Ubicloud's control plane and connect to its cloud console.

git clone [email protected]:ubicloud/ubicloud.git

# Generate secrets for demo
./demo/generate_env

# Run containers: db-migrator, app (web & respirate), postgresql
docker-compose -f demo/docker-compose.yml up

# Visit localhost:3000

The control plane is responsible for cloudifying bare metal Linux machines. The easiest way to build your own cloud is to lease instances from one of those providers. For example: https://www.hetzner.com/sb

Once you lease instance(s), update the .env file with the following environment variables:

  • HETZNER_USER
  • HETZNER_PASSWORD
  • HETZNER_SSH_PUBLIC_KEY
  • HETZNER_SSH_PRIVATE_KEY

To get the user credentials, create a user according to these instructions. The SSH key is the one you set when you created the robot server.

The first thing to make sure is you use the hetzner robot rescue system to install ubuntu 24.04.

Then, run the following script for each instance to cloudify it. Currently, the script cloudifies bare metal instances leased from Hetzner. After you cloudify your instances, you can provision and manage cloud resources on these machines.

# Enter hostname/IP and provider
docker exec -it ubicloud-app ./demo/cloudify_server

Later when you create VMs, Ubicloud will assign them IPv6 addresses. If your ISP doesn't support IPv6, please use a VPN or tunnel broker such as Mullvad or Hurricane Electric's https://tunnelbroker.net/ to connect. Alternatively, you could lease IPv4 addresses from your provider and add them to your control plane.

Why use it

Public cloud providers like AWS, Azure, and Google Cloud have made life easier for start-ups and enterprises. But they are closed source, have you rent computers at a huge premium, and lock you in. Ubicloud offers an open source alternative, reduces your costs, and returns control of your infrastructure back to you. All without sacrificing the cloud's convenience.

Today, AWS offers about two hundred cloud services. Ultimately, we will implement 10% of the cloud services that make up 80% of that consumption.

Example workloads and reasons to use Ubicloud today include:

  • You have an ephemeral workload like a CI/CD pipeline (we're integrating with GitHub Actions), or you'd like to run compute/memory heavy tests. Our managed cloud is ~3x cheaper than AWS, so you save on costs.

  • You have bare metal machines sitting somewhere. You'd like to build your own cloud for portability, security, or compliance reasons.

Status

You can provide us your feedback, get help, or ask us questions regarding your Ubicloud installations in the Community Forum.

We follow an established architectural pattern in building public cloud services. A control plane manages a data plane, where the data plane leverages open source software. You can find our current cloud components / services below.

  • Elastic Compute: Our control plane communicates with Linux bare metal servers using SSH. We use Cloud Hypervisor as our virtual machine monitor (VMM); and each instance of the VMM is contained within Linux namespaces for further isolation / security.

  • Networking: We use IPsec tunneling to establish an encrypted and private network environment. We support IPv4 and IPv6 in a dual-stack setup and provide both public and private networking. For security, each customer’s VMs operate in their own networking namespace. For firewalls and load balancers, we use Linux nftables.

  • Block Storage, non replicated: We use Storage Performance Development Toolkit (SPDK) to provide virtualized block storage to VMs. SPDK enables us to add enterprise features such as snapshot and replication in the future. We follow security best practices and encrypt the data encryption key itself.

  • Attribute-Based Access Control (ABAC): With ABAC, you can define attributes, roles, and permissions for users and give them fine-grained access to resources. You can read more about our ABAC design here.

  • What's Next?: We're planning to work on a managed K8s or metrics/monitoring service next. If you have a workload that would benefit from a specific cloud service, please get in touch with us through our Community Forum.

  • Control plane: Manages data plane services and resources. This is a Ruby program that stores its data in Postgres. We use the Roda framework to serve HTTP requests and Sequel to access the database. We manage web authentication with Rodauth. We communicate with data plane servers using SSH, via the library net-ssh. For our tests, we use RSpec.

  • Cloud console: Server-side web app served by the Roda framework. For the visual design, we use Tailwind CSS with components from Tailwind UI. We also use jQuery for interactivity.

If you’d like to start hacking with Ubicloud, any method of obtaining Ruby and Postgres versions is acceptable. If you have no opinion on this, our development team uses mise as documented here in detail.

Greptile provides an AI/LLM that indexes Ubicloud's source code can answer questions about it.

FAQ

Do you have any experience with building this sort of thing?

Our founding team comes from Azure; and worked at Amazon and Heroku before that. We also have start-up experience. We were co-founders and founding team members at Citus Data, which got acquired by Microsoft.

How is this different than OpenStack?

We see three differences. First, Ubicloud is available as a managed service (vs boxed software). This way, you can get started in minutes rather than weeks. Since Ubicloud is designed for multi-tenancy, it comes with built-in features such as encryption at rest and in transit, virtual networking, secrets rotation, etc.

Second, we're initially targeting developers. This -we hope- will give us fast feedback cycles and enable us to have 6 key services in GA form in the next two years. OpenStack is still primarily used for 3 cloud services.

Last, we're designing for simplicity. With OpenStack, you pick between 10 hypervisors, 10 S3 implementations, and 5 block storage implementations. The software needs to work in a way where all of these implementations are compatible with each other. That leads to consultant-ware. We'll take a more opinionated approach with Ubicloud.

Frequently asked questions

Is ubicloud free to use?

ubicloud is open source under the AGPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does ubicloud do?

Open source alternative to AWS. Elastic compute, block storage (non replicated), firewall and load balancer, managed Postgres, K8s, AI inference, and IAM servic

What is ubicloud written in?

ubicloud is primarily written in Ruby. Its source is publicly available at https://github.com/ubicloud/ubicloud, and it has 12,267 GitHub stars.