{"id":13419799,"url":"https://github.com/ubicloud/ubicloud","last_synced_at":"2025-05-12T15:29:18.819Z","repository":{"id":165624466,"uuid":"590158156","full_name":"ubicloud/ubicloud","owner":"ubicloud","description":"Open source alternative to AWS. Elastic compute, block storage (non replicated), firewall and load balancer, managed Postgres, and IAM services in public beta.","archived":false,"fork":false,"pushed_at":"2025-05-07T19:13:05.000Z","size":9162,"stargazers_count":5070,"open_issues_count":58,"forks_count":184,"subscribers_count":35,"default_branch":"main","last_synced_at":"2025-05-07T19:41:54.634Z","etag":null,"topics":["bare-metal","cloud","github-actions","hosting","linux","managed-cloud","open","opensource","portable","postgresql","ruby"],"latest_commit_sha":null,"homepage":"https://ubicloud.com","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ubicloud.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-01-17T19:29:00.000Z","updated_at":"2025-05-07T17:22:09.000Z","dependencies_parsed_at":null,"dependency_job_id":"e3b6a8c9-70cd-4cfc-9363-cb16025827e0","html_url":"https://github.com/ubicloud/ubicloud","commit_stats":{"total_commits":2149,"total_committers":19,"mean_commits":"113.10526315789474","dds":0.7691949744067008,"last_synced_commit":"29f830bde05daef5f8a836b9e60b0bd0f0c5f3cd"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubicloud%2Fubicloud","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubicloud%2Fubicloud/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubicloud%2Fubicloud/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubicloud%2Fubicloud/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ubicloud","download_url":"https://codeload.github.com/ubicloud/ubicloud/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253765452,"owners_count":21960730,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bare-metal","cloud","github-actions","hosting","linux","managed-cloud","open","opensource","portable","postgresql","ruby"],"created_at":"2024-07-30T22:01:21.051Z","updated_at":"2025-05-12T15:29:18.795Z","avatar_url":"https://github.com/ubicloud.png","language":"Ruby","funding_links":[],"categories":["Ruby","Repos","cloud","语音识别与合成_其他"],"sub_categories":["资源传输下载"],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/779e73bd-c260-4729-8430-c630628f1b6b\"\u003e\n\u003c/p\u003e\n\n\n# Ubicloud [![CI](https://github.com/ubicloud/ubicloud/actions/workflows/ci.yml/badge.svg)](https://github.com/ubicloud/ubicloud/actions/workflows/ci.yml) [![Build](https://github.com/ubicloud/ubicloud/actions/workflows/build.yml/badge.svg)](https://github.com/ubicloud/ubicloud/actions/workflows/build.yml) \u003ca href=\"https://app.greptile.com/repo/ubicloud/ubicloud\"\u003e\u003cimg src=\"https://img.shields.io/badge/learn_with-greptile-%091B12?color=%091B12\" alt=\"Learn this repo using Greptile\"\u003e\u003c/a\u003e\n\nUbicloud is an open source cloud that can run anywhere. Think of it as an open alternative\nto cloud providers, like what Linux is to proprietary operating systems.\n\nUbicloud provides IaaS cloud features on bare metal providers, such as Hetzner, Leaseweb, \nand AWS Bare Metal. You can set it up yourself on these providers or you can use our \n[managed service](https://console.ubicloud.com).\n\n## Quick start\n\n### Managed platform\n\nYou can use Ubicloud without installing anything. When you do this, we pass along the \nunderlying provider's benefits to you, such as price or location.\n\nhttps://console.ubicloud.com\n\n### Build your own cloud\n\nYou can also build your own cloud. To do this, start up Ubicloud's control plane and \nconnect to its cloud console.\n\n```\ngit clone git@github.com:ubicloud/ubicloud.git\n\n# Generate secrets for demo\n./demo/generate_env\n\n# Run containers: db-migrator, app (web \u0026 respirate), postgresql\ndocker-compose -f demo/docker-compose.yml up\n\n# Visit localhost:3000\n```\n\nThe control plane is responsible for cloudifying bare metal Linux machines.\nThe easiest way to build your own cloud is to lease instances from one of those\nproviders. For example: https://www.hetzner.com/sb\n\nOnce you lease instance(s), run the following script for each instance to cloudify\nthe instance. By default, the script cloudifies bare metal instances leased from \nHetzner. After you cloudify your instances, you can provision and manage cloud \nresources on these machines.\n\n```\n# Enter hostname/IP and provider, and install SSH key as instructed by script\ndocker exec -it ubicloud-app ./demo/cloudify_server\n```\n\nLater when you create VMs, Ubicloud will assign them IPv6 addresses. If your ISP \ndoesn't support IPv6, please use a VPN or tunnel broker such as Mullvad or Hurricane \nElectric's https://tunnelbroker.net/ to connect. Alternatively, you could lease\nIPv4 addresses from your provider and add them to your control plane.\n\n## Why use it\n\nPublic cloud providers like AWS, Azure, and Google Cloud have made life easier for \nstart-ups and enterprises. But they are closed source, have you rent computers \nat a huge premium, and lock you in. Ubicloud offers an open source alternative, \nreduces your costs, and returns control of your infrastructure back to you. All \nwithout sacrificing the cloud's convenience.\n\nToday, AWS offers about two hundred cloud services. Ultimately, we will implement \n10% of the cloud services that make up 80% of that consumption.\n\nExample workloads and reasons to use Ubicloud today include:\n\n* You have an ephemeral workload like a CI/CD pipeline (we're integrating with\nGitHub Actions), or you'd like to run compute/memory heavy tests. Our managed\ncloud is ~3x cheaper than AWS, so you save on costs.\n\n* You want a portable and simple app deployment service like \n[Kamal](https://github.com/basecamp/kamal). We're moving Ubicloud's control plane\nfrom Heroku to Kamal; and we want to provide open and portable services for\nKamal's dependencies in the process.\n\n* You have bare metal machines sitting somewhere. You'd like to build your own\ncloud for portability, security, or compliance reasons.\n\n## Status\n\nYou can provide us your feedback, get help, or ask us questions regarding your\nUbicloud installations in the [Community Forum](https://github.com/ubicloud/ubicloud/discussions).\n\nWe follow an established architectural pattern in building public cloud services. \nA control plane manages a data plane, where the data plane leverages open source \nsoftware.  You can find our current cloud components / services below.\n\n* **Elastic Compute**: Our control plane communicates with Linux bare metal servers\nusing SSH. We use [Cloud\nHypervisor](https://github.com/cloud-hypervisor/cloud-hypervisor) as our virtual\nmachine monitor (VMM); and each instance of the VMM is contained within Linux\nnamespaces for further isolation / security.\n\n* **Networking**: We use [IPsec](https://en.wikipedia.org/wiki/IPsec) tunneling to\nestablish an encrypted and private network environment. We support IPv4 and IPv6 in\na dual-stack setup and provide both public and private networking. For security,\neach customer’s VMs operate in their own networking namespace. For\n[firewalls](https://www.ubicloud.com/blog/ubicloud-firewalls-how-linux-nftables-enables-flexible-rules)\nand [load balancers](https://www.ubicloud.com/blog/ubicloud-load-balancer-simple-and-cost-free),\nwe use Linux nftables.\n\n* **Block Storage, non replicated**: We use Storage Performance Development Toolkit\n([SPDK](https://spdk.io)) to provide virtualized block storage to VMs. SPDK enables\nus to add enterprise features such as snapshot and replication in the future. We\nfollow security best practices and encrypt the data encryption key itself.\n\n* **Attribute-Based Access Control (ABAC)**: With ABAC, you can define attributes,\nroles, and permissions for users and give them fine-grained access to resources. You\ncan read more about our [ABAC design here](doc/authorization.md).\n\n* **What's Next?**: We're planning to work on a managed K8s or metrics/monitoring\nservice next. If you have a workload that would benefit from a specific cloud\nservice, please get in touch with us through our [Community\nForum](https://github.com/ubicloud/ubicloud/discussions).\n\n* Control plane: Manages data plane services and resources. This is a Ruby program\nthat stores its data in Postgres. We use the [Roda](https://roda.jeremyevans.net/)\nframework to serve HTTP requests and [Sequel](http://sequel.jeremyevans.net/) to\naccess the database. We manage web authentication with\n[Rodauth](http://rodauth.jeremyevans.net/). We communicate with data plane servers\nusing SSH, via the library [net-ssh](https://github.com/net-ssh/net-ssh). For our\ntests, we use [RSpec](https://rspec.info/).\n\n* Cloud console: Server-side web app served by the Roda framework. For the visual\ndesign, we use [Tailwind CSS](https://tailwindcss.com) with components from\n[Tailwind UI](https://tailwindui.com). We also use jQuery for interactivity.\n\nIf you’d like to start hacking with Ubicloud, any method of obtaining Ruby and Postgres \nversions is acceptable. If you have no opinion on this, our development team uses `asdf-vm` \nas [documented here in detail](DEVELOPERS.md).\n\n[Greptile](https://greptile.com/) provides an AI/LLM that indexes\nUbicloud's source code [can answer questions about\nit](https://learnthisrepo.com/ubicloud).\n\n## FAQ\n\n### Do you have any experience with building this sort of thing?\n\nOur founding team comes from Azure; and worked at Amazon and Heroku before that.\nWe also have start-up experience. We were co-founders and founding team members \nat [Citus Data](https://github.com/citusdata/citus), [which got acquired by \nMicrosoft](https://news.ycombinator.com/item?id=18990469).\n\n### How is this different than OpenStack?\n\nWe see three differences. First, Ubicloud is available as a managed service (vs boxed\nsoftware). This way, you can get started in minutes rather than weeks. Since Ubicloud\nis designed for multi-tenancy, it comes with built-in features such as encryption \nat rest and in transit, virtual networking, secrets rotation, etc.\n\nSecond, we're initially targeting developers. This -we hope- will give us fast feedback \ncycles and enable us to have 6 key services in GA form in the next two years. OpenStack \nis still primarily used for 3 cloud services.\n\nLast, we're designing for simplicity. With OpenStack, you pick between 10 hypervisors, \n10 S3 implementations, and 5 block storage implementations. The software needs to work \nin a way where all of these implementations are compatible with each other. That leads\nto consultant-ware. We'll take a more opinionated approach with Ubicloud.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fubicloud%2Fubicloud","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fubicloud%2Fubicloud","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fubicloud%2Fubicloud/lists"}