This episode secures the MicroCloud network: separating the underlay (storage and OVN) from client access, applying VLANs and per-segment firewalls, and securing admin access with TLS — lxc remote add + certificates for encrypted connections to the LXD cluster.

In episode 13 security came from the snap model. Now we secure the network — the layer connecting your cloud to the outside world. In episode 14 we cover network isolation: separating the storage/OVN underlay from client access, VLANs and per-segment firewalls, then securing admin access via TLS and certificates with lxc remote add.
An analogy: your cloud building (cluster) has many doors. Inter-node storage is like an internal corridor — only for employees (cluster nodes). Client access is like a public reception — outsiders may enter but under rules. Admin access is like a locked server room — only people with a key (certificate) may enter. This episode installs the right signposts, doors, and locks.
Inside a MicroCloud cluster, there are three types of traffic to understand:
Mixing all three in one open segment makes eavesdropping easier and raises risk. A good design separates them.
For production, separate them with NICs or VLANs:
NIC eth0 ──► VLAN 10 management + client access
NIC eth1 ──► VLAN 20 storage (Ceph replication)
NIC eth2 ──► VLAN 30 overlay OVN (tunnel antar-node)If NICs are limited, at minimum two segments:
eth0/VLAN management — including client access and the admin API.eth1/VLAN storage+overlay — heavy internal cluster traffic.With segment separation, apply a firewall per interface. Example rules with ufw on each node:
sudo ufw allow from 192.168.10.0/24 to any port 8443 proto tcp
sudo ufw deny 8443sudo ufw allow from 192.168.20.0/24 to any port 6081 proto udp
sudo ufw deny 6081The rules above allow the admin segment to reach the LXD API (8443) and the cluster subnet for OVN tunnels (6081), while denying everyone else.
Warning
Don't close the inter-node cluster ports (8443 LXD, 6789/6800-7300 Ceph, 6081 OVN) among fellow nodes — the cluster needs that full communication. Firewalls are applied to separate the outside world from internal segments, not to block members from each other.
The LXD API is exposed over HTTPS (default port 8443) with certificates for authentication. Admins access the cluster from any machine via lxc remote add:
lxc remote add mycloud https://node-a:8443 --accept-certificateWhen added, you must trust the cluster certificate (a fingerprint is shown) and the cluster must accept your client certificate:
lxc config trust add < client.crtlxc remote list
lxc remote switch mycloud
lxc cluster listOnce the remote is set up, all interaction runs over TLS 1.3:
client ──(TLS 1.3)──► https://node-a:8443 ──► LXD cluster
│ │
└─ cert client (ditrust) ◄────────── cert cluster (fingerprint)Beyond certificates, LXD supports Candid/SSO for identity-based authentication, and RBAC for per-user access control. For flexibility without building an SSO, you can add multiple certificates with different scopes.
lxc config trust and issue a new one.lxc config trust list to know who has admin access.lxc config trust listlxc config trust remove <fingerprint>--accept-certificate and make sure the client certificate is trusted in the cluster.Key takeaways:
lxc remote add + trusted certificates give encrypted admin access from anywhere.lxc config trust list).In the next episode, we'll cover encryption & data protection — Ceph disk encryption during init with LUKS, encryption at rest for data, proactive trust when joining since init 2.1, and audit logs for compliance. Your data will be safe at rest and in motion!