I Tried MicroCloud and It Might Be Canonical’s Most Interesting Home Lab Project Yet

Microcloud home lab 2

I am always looking at solutions that can be considered as serious platforms for not only self-hosted solutions but also for production environments. In looking at what is out there, lately there is a name that is coming up more often and that is a solution from Canonical, called Microcloud. Canonical has quietly built a platform that combines virtualization, containers, software-defined networking, and distributed storage into a single private cloud stack that you can deploy in the home lab totally free. It approaches infrastructure differently than many of the tools we are familiar with. Rather than focusing on traditional virtualization first, it focuses on building a cloud environment from the ground up. Let’s take a look at Microcloud and why I think it is a strong contender in the home lab and even production space.

What is MicroCloud?

MicroCloud is Canonical’s lightweight private cloud platform. So, instead of requiring administrators to assemble a lot of different infrastructure components and put these together manually, MicroCloud combines several Canonical projects into a unified deployment workflow that makes standing it up super easy as we will see..

What components are included in Microcloud?

  • LXD – for virtual machines and system containers
  • MicroCeph – for distributed storage
  • MicroOVN – for software-defined networking
  • Ubuntu – as the underlying operating system
Microcloud overview of architecture
Microcloud overview of architecture

The goal of the project is to provide a cloud-like experience using a small number of servers while it lets you avoid much of the complexity around large and complex private cloud deployments. One of the most interesting distinctions when you compare MicroCloud to other solutions out there, it is not trying to be a hypervisor. It is trying to be a complete infrastructure platform.

That distinction matters. When most home labbers think about infrastructure, they often start with a hypervisor and then add storage, networking, clustering, backups, and automation later. MicroCloud starts from the opposite direction. It assumes you want all those components working together from the beginning, which is nice so you don’t have to circle back around to bolt things on later.

Installing MicroCloud

Let’s now look at the steps for installing MicroCloud to see what this involves. First, you will use the following command to install all the needed components on EVERY microcloud node that you plan to add to the cluster:

sudo snap install microcloud lxd microceph microovn
Running the snap command to install microcloud on a node
Running the snap command to install microcloud on a node

Next, you need to initialize the MicroCloud cluster. To do that, run the command:

sudo microcloud init
Running the microcloud init command
Running the microcloud init command

Joining cluster nodes in MicroCloud

The next step is joining your cluster nodes in MicroCloud. We can do that with the command on the other nodes:

sudo microcloud join

You will use the join passphrase that is displayed on the first node that you ran the microcloud init command on.

Joining additional nodes to microcloud
Joining additional nodes to microcloud

Select both of the nodes using the SPACE bar and then press ENTER to confirm.

Joining two more nodes to the microcloud cluster
Joining two more nodes to the microcloud cluster

Now, we should see all three nodes (I am installing 3 but you will see the number you are installing here). Note the next question and configuration is Would you like to set up local storage? (yes/no). Here I am answering no. I want to use another disk that I have provisioned on my MicroCloud cluster nodes for distributed storage, not local storage.

Not setting up local storage as using ceph instead
Not setting up local storage as using ceph instead

Here is what that screen (next screen) looks like after the local storage question. We answer yes to the Would you like to set up distrubuted storage? (yes/no).

Setting up distributed storage in microcloud
Setting up distributed storage in microcloud

Below, I am finishing out the MicroCloud cluster configuration by answering the questions that are presented. These include networking questions around the public and private Ceph networks.

Finishing out the microcloud installation
Finishing out the microcloud installation

To view the LXD nodes and also access the MicroCloud UI which is functionally the same as the LXD UI, you can run the command:

sudo lxc cluster list

Now, to manage your MicroCloud environment, you can navigate to these links on any of your nodes there. As you can see, you can access this on port:

https://<node IP or FQDN>:8443
Listing the lxd cluster nodes and management urls
Listing the lxd cluster nodes and management urls

Requirements for logging in are special

Now, to be able to access the LXD UI, the login requirements are a bit specialized since it uses mutual TLS for server client-server authentication. So, your browser must have a client certificate installed and selected to proceed with authentication. When you access the LXD port, it will ask you to validate your TLS certificate.

It will autodetect the browser you are using. Here I am on Microsoft Edge. Click the Generate certificate button to download the .PFX certificate you will need to access your LXD UI.

Generate a certificate to import into the browser
Generate a certificate to import into the browser

Import the .PFX certificate into the Current User > Personal > Certificates folder.

Lxd certificate imported in windows to access in a browser
Lxd certificate imported in windows to access in a browser

If you get asked to also validate using a token after you have selected your certificate in the browser session, you can generate the token it needs with the following command:

sudo lxc auth identity create tls/lxd-ui --group admins
Creating a token for accessing the lxd management console in a browser
Creating a token for accessing the lxd management console in a browser

After you validate the token, you will choose which certificate you want to use to authenticate. Here I am choosing the LXD UI certificate imported with the PFX:

Choosing the imported certificate for access
Choosing the imported certificate for access

After validating your certificate and choosing it for login, you will be taken to the LXD UI.

After successfully accessing with the certificate imported
After successfully accessing with the certificate imported

Microcloud operations

Below, you can see the storage view where you see the Ceph and CephFS storage in the cluster.

Viewing storage in the lxd cluster
Viewing storage in the lxd cluster

You can click on the Members menu option and you will see all the available cluster members in the MicroCloud cluster.

Viewing cluster members in lxd ui
Viewing cluster members in lxd ui

The Networking menu shows you all the available networks and their configurations.

Viewing cluster networking in microcloud
Viewing cluster networking in microcloud

Uploading an ISO for loading a virtual machine

You can add ISOs for installing operating systems in virtual machines. Click the Custom ISOs menu:

Uploading custom isos to microcloud
Uploading custom isos to microcloud

This opens the Upload custom ISO dialog box. Choose the ISO image you want to use. Then choose the Storage pool where you want it to be stored. Click Upload.

Uploading an iso image for installing a virtual machine
Uploading an iso image for installing a virtual machine

Here we see the Ubuntu Server 26.04 live server ISO uploaded successfully.

Viewing the uploaded iso image in microcloud
Viewing the uploaded iso image in microcloud

Creating a new “instance” in MicroCloud

An instance can be a VM or a container running in MicroCloud. I like the nomenclature of how they designate things here as it “feels” like it is more “public cloud” oriented than a hypervisor like Proxmox. You give the instance a name, description (optional), define a cluster group (again can leave defaults here).

Creating a new instance in microcloud
Creating a new instance in microcloud

If you edit the Disk configuration, you can set a size for the disk and also the storage used.

Creating root storage for a new instance in microcloud
Creating root storage for a new instance in microcloud

Also, it is nice to see the MicroCloud supports GPU passthrough as this is a big feature that many home labbers are interested in.

Gpu passthrough in microcloud
Gpu passthrough in microcloud

New virtual machine instance is created successfully.

New instance created successfully in microcloud
New instance created successfully in microcloud

Powering on and starting to load Ubuntu Server 26.04.

Booting ubuntu server 26.04 installation in microcloud
Booting ubuntu server 26.04 installation in microcloud

LXC containers

You can also quickly spin up a new container “instance” in MicroCloud. If you don’t supply an ISO image, it assumes you are going to provision a container. You can choose to pull a base image from the existing catalog. Think about this like Proxmox allows us to do. You can search for the image you want and select it to be used for the new container instance.

Viewing the base images for new lxd containers in microcloud
Viewing the base images for new lxd containers in microcloud

After selecting the image and creating the new container instance. The LXC container image pulls down and starts.

Downloading new container image in microcloud
Downloading new container image in microcloud

Below, I have logged into the LXC container and looking at the networking configuration.

Logged into a new lxc container instance in microcloud
Logged into a new lxc container instance in microcloud

How MicroCloud differs from Proxmox

I thnk we have already alluded to one of the biggest differences when comparing MicroCloud and Proxmox. Proxmox is a hypervisor first and a private cloud second. MicroCloud is a private cloud first and a hypervisor second.

MicroCloud instead of centering everything around the Proxmox hypervisor, it centers things around LXD as the engine. LXD provides both system containers and virtual machines through its unified management platform. It is by design a more cloud-native solution than a traditional virtualization environment.

So think of Proxmox like a modern virtualization platform with cloud features added and then MicroCloud is a cloud platform that happens to run virtual machines.

For most home labs, I think Proxmox is going to remain the virtualization platform of choice as it is easier to understand and manage. It feels more like what we are used to with VMware vSphere and has a HUGE ecosystem and community around it.

But, if your goal is learning private cloud technologies and distributed systems, MicroCloud is a really great platform that fits in with that. Especially if you are learning Kubernetes, this follows along with the modern approach to deploying apps.

Challenges and potential downsides

I think there are a few downsides to thinking about using MicroCloud in the home lab. Note just a few of these that I can think of when considering using it:

DownsideImpact
Smaller communityFewer guides and troubleshooting resources
LXD learning curveUnfamiliar for many virtualization admins coming from something like VMware vSphere
Ceph complexityDistributed storage still requires expertise that can be intimidating for day to day maintenance and admin work
More moving partsTroubleshooting can be more involved
Platform depthUnderstanding the underlying stack is important

Wrapping up

I think the reason that more home labbers are starting to talk about MicroCloud is fairly simple. It fills a pretty interesting space for spinning up a “private cloud” compared to just spinning up a hypervisor. It has all the pieces and parts built-in that make this feel like what you see in public cloud offerings. The workflows feel familiar and have the same “as a service” type feel. I don’t think MicroCloud will replace something like Proxmox. But, some may prefer it in their home labs. It is built on a tried and true tech stack, including MicroCeph, LXD, MicroOVN, etc. Let me know in the comments if you have tried this out yet and what your thoughts are on MicroCloud as a home lab platform.

Google
Add as a preferred source on Google

Google is updating how articles are shown. Don’t miss our leading home lab and tech content, written by humans, by setting Virtualization Howto as a preferred source.

About The Author

Brandon Lee

Brandon Lee

Brandon Lee is the Senior Writer, Engineer and owner at Virtualizationhowto.com, and a 7-time VMware vExpert, with over two decades of experience in Information Technology. Having worked for numerous Fortune 500 companies as well as in various industries, He has extensive experience in various IT segments and is a strong advocate for open source technologies. Brandon holds many industry certifications, loves the outdoors and spending time with family. Also, he goes through the effort of testing and troubleshooting issues, so you don't have to.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted