Skip to content

Creating a Container or VM

The Create LXC wizard launches one container or one virtual machine on an LXD host, directly. Use it for a scratch box, a test guest, or anything the App Server pipeline would not produce — an App Server is created from Manganese or from the provisioning wizard instead, and takes its size from its plan.

Open it from the Host form of an LXD host: LXD tab → LXCsCreate LXC.

What you fill in

Field What it is
LXC Name The guest's name, and the name of the Host record Muppy will create for it. Starts with a letter, then letters, digits and -, 50 characters at most.
LXC Host The LXD host that will run the guest. Pre-filled with the host you came from.
LXC Profile The LXD profile applied at launch: network mode, cloud-init user data, security.nesting. Pre-filled with the host's default profile.
LXC Image (Text) An image alias, for example ubuntu:24.04. Pre-filled with the host's default image.
LXC Image An image Muppy already knows, chosen instead of the text alias. Filling one clears the other.
Create SSH Proxy, SSH Proxy Port See Reaching the new guest.

Sizing the guest

The Resources group holds four specifications, and they write the LXC launch flags for you:

Field Meaning
Machine Type LXC Container or Virtual Machine.
vCPU A whole number pins that many cores. A fraction between 0 and 1 is a share of one core, containers only.
RAM (GiB) Memory, fractions allowed: 0.5 is 512 MiB.
Disk (GiB) Size of the root disk.

Every change of one of the four rewrites the flags. The flags field stays editable, and a hand edit survives until one of the four changes again — so you can adjust the generated line, or write your own and keep it, as long as you leave the specifications alone.

All sizes are GiB, the unit LXD reserves.

Zero means "no limit"

On a container, 0 in vCPU or RAM sets no cap at all: the guest uses the host's capacity. 0 in Disk leaves the storage pool's own default size. Three zeros produce empty flags, and a guest with no constraint of any kind.

A fraction of a vCPU

Containers only, between 0 and 1. 0.5 gives the guest one visible core and a 50% share of it when the host is under load; on an idle host the guest uses that core fully. This is what makes small guests dense on a modest host, rather than a hard ceiling.

A virtual machine is stricter

A VM boots with a fixed number of CPUs and reserves its memory at boot, so it needs a whole vCPU count, at least 1, and an explicit RAM size. The "no limit" zero is a container-only value, and a fraction is refused. The flags then start with --vm.

When the specifications are refused

The wizard empties the flags, shows an orange warning under them, and Launch refuses:

What you asked for What the warning says
A VM with a fractional vCPU A virtual machine takes whole vCPUs; 0.5 is not one.
A VM with less than 1 vCPU A virtual machine boots with a fixed number of CPUs: give it at least 1 whole vCPU.
A VM with no RAM A virtual machine reserves its RAM at boot: set an explicit RAM size.

Launch is blocked on purpose

Empty flags on a virtual-machine specification would launch a container instead — the --vm flag is what makes a VM a VM. Rather than create the wrong kind of guest, the wizard refuses until the specifications are valid.

Correct the offending field and the warning disappears on the spot, with the flags regenerated.

Reaching the new guest

Create SSH Proxy asks Muppy to add an LXD proxy device on the guest, binding a port of the LXD host to the guest's port 22. The port comes from the host's LXC Port Allocator, or from the SSH Proxy Port you choose.

The two fields disappear when a proxy would be pointless:

  • the host or the profile is bridged — the guest gets an address on your LAN directly;
  • Machine Type is Virtual Machine — a VM has its own address, and LXD refuses a proxy device on it anyway.

After the launch, Muppy polls the host, creates the guest's own Host record and fills in the address and SSH path its mode implies. The guest then appears in the LXCs list of the LXD host.

After you click Launch

The creation runs in the background, as a job named Create LXC '<name>' on host '<host>'. Follow it in the Muppy / Qs / Messages menu. It is idempotent: a guest of that name already on the host is started, not created twice.

Troubleshooting

"LXC containers are not allowed on pool <pool>" — the host's allocator refuses containers. Create a virtual machine instead, or pick a host whose pool allows them.

"Name must start with a letter, only letters, digits and '-', max 50 chars" — the name is cleared as soon as you leave the field. Rename and try again.

"Unable to create ssh proxy … no LXC Port Allocator is defined" — either define a port allocator on the LXD host, or uncheck Create SSH Proxy and reach the guest another way.

The flags are not what you typed — changing any of Machine Type, vCPU, RAM or Disk rewrites them. Make your hand edit last.