A graphical user interface for LXD


LXD UI coming to life
The LXD community has been asking for a graphical user interface for quite some time now. We are happy to announce that we finally have a UI-focused team. A bunch of motivated web developers and designers are currently working on building a user-friendly interface for users to spin up system containers and virtual machines.

Keep your LXD server clean and tidy
Six months on, we have the basics in place and we have managed to introduce the concept of a LXD project. We now allow the user to switch between their different projects while remaining within the same context.

What’s available now?
Every project has its own list of instances and profiles. The user can either start, stop, restart or freeze a single instance or a bunch of them at once.

They can also consult the exhaustive instance configuration, or update it - manually, or by applying changes to the yaml file. Our UI user can also browse the instance’s text shell and console. Browsing the graphical console of a virtual machine is now a piece of cake!

You need to restore to a previous version?
We have also solved that request. You can now manually create snapshots from the UI, edit these later and even restore.

Exciting! What do I get next?
Our next cycle is focused on introducing:

  • Running LXD in clustering mode, managing cluster members and their groups
  • Authentication and authorisation
  • Releasing a first version of networking and storage and allowing the user to manage these via the GUI.

Check out our first tutorial!

Want to contribute? That’s more than welcome!
Start exploring the UI today!
Get back with your feedback or join our upcoming user research sessions!


This looks really good for an early preview! Can we please stop calling virtual machines generic “instances” though? This terminology is really vague, non-specific, and therefore confusing, even though I’ve been in the industry for 20+ years. The term originally came from “EC2 instances” in AWS, but they are really just “virtual machines” or “containers.”

When I hear the term “instance,” my first thought is … “instance of … what?” An apple? An orange? A house? A car? Ohhhhh, you mean an “instance of a virtual machine!”

Please just call them virtual machines, not “instances.” That’s how services like Microsoft Azure or even stand-alone Hyper-V refer to them as, which is much more sensible than the bizarre terminology that AWS uses.

Instances in LXD is the general term used to refer to both virtual machines (that run their own kernel) and containers (which share the host kernel).


Very good project, very much looking forward to it!

1 Like

This is already quite usable. Is there a recommended approach to add this to existing lxd installations? I don’t want to wait for this to be included in stable versions and lxd-ui site has only developer-centric installation instructions with dotrun?


I think you just need to move to the edge snap?

sudo snap refresh lxd --channel=latest/edge
1 Like

I would like to use LXD-UI with a latest/stable snap version (so NOT upgraded to edge snap). If you can use it with restricted projects, it’s already quite usable as is. I could just install it via dev instructions on the lxd-ui GH page, but was asking if there are instructions/recommendations to add gui to regular stable lxd installation used in production environment.

Quick update on this initiative. Starting with LXD 5.14, the LXD UI is now available as an experimental feature in both our stable and edge snaps. To enable it, you now must now do:

snap set lxd ui.enable=true
snap restart --reload lxd

Is there a thought to implementing ACLs? Ie. a developer should have access to an entire project but not configure the server sort of thing?

Yeah, if you use a restricted certificate, it won’t let you modify anything outside of whatever project it’s restricted to. Basically any existing API restriction that exists in LXD also applies here, though the UI isn’t yet aware of what’s allowed or not, so some actions will simply fail and some data will simply be missing.

Awesome! I wasn’t aware of a way to restrict certificates to specific projects. Appreciate the input!

See https://linuxcontainers.org/lxd/docs/latest/howto/projects_confine/ :slight_smile:

1 Like

I installed LXD from the Arch Linux repository without “snap”. And I have it written in my browser:

How do I use “snap set lxd ui.enable=true” if I don’t have it? Is there any other way to enable web ui? I don’t want to set SNAP.

Hi, I had similar question and foud out how this can be done on non-snap installation. I posted instruction here: How to install on production LXD? · Issue #417 · canonical/lxd-ui · GitHub

1 Like