Time to take action: install the lxd, microceph, microovn, and microcloud snaps on all nodes, then make sure the snap services are active. This episode also prepares the node prerequisites — Ubuntu 22.04+/24.04, time synchronization with chrony, unique hostnames, and empty disks for Ceph OSDs — so that microcloud init in episode 4 runs smoothly.

In episode 2 we understood the architecture. Now it's time to install all the components on every node. In episode 3 we install the four snaps, make sure the services are active, and prepare the node prerequisites: the correct Ubuntu distribution, synchronized time, unique hostnames, and empty disks for Ceph OSDs. This is the gateway to the initialization moment in episode 4.
Why prepare the prerequisites first? Because MicroCloud automates configuration, not guesswork. If two nodes share a hostname, their clocks differ, or the disk you point to isn't empty — the init/join process will fail midway. Five minutes of preparation here saves an hour of troubleshooting in episode 16.
On every node, run:
sudo snap install lxd microceph microovn microcloudThis command installs all four snaps at once. Because all snaps ship versions released together, you automatically get a tested combination: MicroCloud 3.2 with LXD 6.8, or MicroCloud 2.1.3 LTS with the LTS track — depending on the channel you choose.
sudo snap install lxd --channel=6.0/candidate
sudo snap install microceph microovn microcloud --channel=2/stableImportant
For production, use the LTS track: MicroCloud 2.1.x LTS (--channel=2/stable) with LXD from the LTS channel. The 3.x feature track does bring the newest features (episode 17), but it isn't yet recommended for upgrading from 2.x LTS. For following this series, either version works as long as it's consistent across all nodes.
After installation, verify the services are running:
snap services lxd microceph microovn microcloudThe output will show active for lxd, microceph, and microovn. The microcloud snap is on-demand: it doesn't run continuously, but appears when you run a microcloud ... command. This is normal and intentional — the orchestrator is only needed during configuration.
snap list lxd microceph microovn microcloudMicroCloud supports Ubuntu 22.04 and 24.04 LTS. For this series we use 24.04 LTS as our reference:
lsb_release -aIf a version is already installed, make sure packages are up to date before continuing:
sudo apt update && sudo apt upgrade -yCeph and LXD clusters are very sensitive to time differences between nodes — clock skew can cause an OSD to be ejected from the cluster or a join to fail. Set up synchronization with chrony:
sudo apt install -y chrony
sudo systemctl enable --now chronyVerify synchronization:
timedatectl status
chronyc tracking | grep -E "Leap|Stratum"All nodes should point to the same time source (the same NTP pool or an internal time server). The offset should ideally be under 100 ms — a prerequisite we check again in episode 16.
Each node needs a unique hostname within a single cluster. Duplicate hostnames make cluster members mix each other up:
sudo hostnamectl set-hostname node-a # node-a
sudo hostnamectl set-hostname node-b # node-b
sudo hostnamectl set-hostname node-c # node-cMake sure the hostname is truly registered, and ideally resolvable between nodes:
hostnamectl hostname
getent hosts node-aIf there's no DNS, add entries to /etc/hosts on every node so the node names resolve.
MicroCeph needs at least one empty disk per node to turn into an OSD (Object Storage Daemon). This disk will be formatted — so make sure it's truly empty:
sudo lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTLook for a disk without an FSTYPE and without a MOUNTPOINT — for example /dev/sdb or /dev/nvme0n1. Note its path; we'll use it in episodes 4 and 6.
Warning
Never point the system disk or a disk that still contains data at MicroCeph — the disk will be completely formatted when it becomes an OSD. Use a dedicated disk or a partition specifically set aside for storage. Even in single-node testing, prepare an additional disk so the process stays realistic.
hostnamectl hostname && lsb_release -d
snap list lxd microceph microovn microcloud
snap services lxd microceph microovn
chronyc tracking | grep -E "Leap|Stratum"
sudo lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTsnap services again; some services need startup time./var/snap: snap stores images and data in /var/snap; make sure there's enough space, especially for the Ceph OSD wal/db (episode 18).Key takeaways:
lxd, microceph, microovn, and microcloud via snap on all nodes.snap services should show lxd, microceph, and microovn as active./etc/hosts).In the next episode, we'll do the initialization: microcloud init — building the cluster from the first node, choosing storage (disk for Ceph vs local dir), choosing the network (bridge/OVN), waiting for other nodes to join, and verifying the results with microcloud status. This is the first moment your cloud comes alive!