Posted on Leave a comment

Version 2.3.0 Release

Version 2.3.0 has just been released and adds a few new features as well as a minor bug fix.

Creating networks and Storage Volumes on clustered hosts require a subset of the configuration be passed to each cluster member before creating the object. In the prior release this functionality was added to the web form, in this release it has now been added when submitting a network or storage volume through JSON code.

If you had collapsed the sidebar menu in the previous versions, it would revert back to the original expanded state on page reloads or when clicking to a new page. Using web browser local storage, the state of the sidebar is now saved retaining the setting through page loads or clicking new pages within the dashboard.

When configuring the memory or CPU options in the the web form of an instance, some options were specific to only container or virtual-machine type instances. These settings have now been disabled depending on which instance type is loaded. This makes it easier for the user to know which settings do not apply to their instance. Also in the back-end PHP code, the processing of these configuration parameters has been restricted based on which type of instance submitted the configuration changes. In the previous release the lack of this code prevented virtual-machine types to update using the web form.

Posted on Leave a comment

Version 2.2.0 Release

Version 2.2.0 continues adding configuration options using forms in the dashboard focusing this time on Storage Pools, Storage Volumes, and Projects. Added functionality for Network configurations in clustered LXD environments has also been added.

Storage Pools

A large set up configurations options have been added to the web form for creating new storage pools. Each type of storage pool (btrfs, ceph, cephfs, dir, lvm, and zfs) all have their own unique set of configuration properties that change when selecting the pool type. Support for storage pools on clustered LXD hosts has also been configured

Storage Volumes

When click on a storage pool, the default list of storage volumes is now filtered by default to show custom type storage volumes. There is a quick link to show all volumes types removing the filter. Configuration options for storage volumes has also been added to the web form when creating a new storage volume.


Support for creating projects using both the a web form or JSON has been added. The web form now includes a large set of configuration properties that allow for greater customization of projects. The list of projects also now includes whether the project features networks in addition to the existing featured options.


Support for creating networks in clustered LXD hosts has been added.

Posted on 4 Comments

Version 2.1.0 Released – Extending Network, Network ACL and Instance Device form options and adding Exec terminal.

Version 2.1.0 is an exciting release that makes it easier to configure LXD servers in many areas. This release has focused on providing enhanced networking options and instance device options. Version 2.1.0 also adds the Exec terminal, offering both Console and Exec interactions with instances. A new “check for updates” button also has been added to ensure your version of the dashboard is up-to-date.

Instance Devices

With this release a user now has the ability to add several device types to an instance configuration file using a web form. These device types include network devices, disk devices, and proxy devices.

The user can choose between using network or nictype property sets for the network device. Each option provides the appropriate configuration properties and hints to guide the user in configuring these properties. Using the network property set, users can add bridge, macvlan, ovn, and sriov network devices to the instance. The nictype property set provides options for bridged, ipvlan, macvlan, p2p, physical, routed, and sriov network devices.

Full property options have also been included for both disk devices and proxy devices. Users can now add and remove devices on their instance without having to directly edit the JSON configuration.

Instance Exec

The console connection has provided a way to interact with instances directly from an xterm interface in the dashboard. Similar to the console connection, the exec connection provides a direct connection to interact with an instance without having to login through the console screen. A user can also choose between using a bash or sh shell. Users with the ADMIN or OPERATOR role assigned will be able to take advantage of this option.


The web form for creating networks has been enhanced to include the configuration options for bridge, macvlan, ovn, physical, and sriov networks. Users can choose to expand the additional configuration properties to aid in setting up more complex networks. Options will populate based on which network type is selected.

Network ACLs

Users have already had the ability to create Network ACLs, but no users an configure both ingress and egress rules for a Network ACL using a web form. After creating a Network ACL, the user can click on the Egress/Ingress rules for that ACL and add or remove rules. This makes it easy to configure complex rule sets and we as simple rule sets.

Users can now check for updates directly from within the LXD Dashboard. A new “Check for updates” button has been added to the About menu. When clicked the dashboard will reach out to GitHub and compare the latest release version with the installed version. A small message will be displayed indicating if a newer version is available.

Form hints

To keep the user interface consistent, user hints have been added to all the forms within the dashboard. Hints also indicate required or non-required fields when creating items in LXD.

Next release

One of the major focuses of the next release will be to continue adding configuration properties to the web forms in the dashboard. Expect to see enhancements in the Storage Pool and Storage Volume forms.

Posted on 2 Comments

Version 2.0.0 Released – Adding Multi-user, RBAC, Terminal, and more

LXDWARE is excited to announce the 2.0.0 release of the LXD dashboard. This new release adds a lot of changes to the underlying code and improvements to the user experience. The LXD dashboard can now be deployed centrally within a network and allows multiple users to connect and manage LXD infrastructure through a single interface.

When deploying a new installation or upgrading from version 1.2.8, a registration page will first be presented to configure the default admin account. Database tables will automatically be converted to support new features when upgrading from version 1.2.8. The installation process has become much simpler, removing the need for most of the configuration. Some dependency packages have been replaced and installation guides have been updated for this release at

User accounts

Past versions of the dashboard used http basic authentication for password protecting the dashboard. This method worked great for a single-user application, but this new release now supports multiple user accounts. The authentication method now stores user accounts in a database and utilizes PHP Session variables. User account password hashes are no longer generated using the Apache htpasswd application, as hashes are now stored using the secure bcrypt hashing algorithm.


The LXD dashboard now also supports the use of groups and role-based access control (RBAC). There are 4 default roles that can be assigned to user groups: ADMIN, OPERATOR, USER, and AUDITOR. The ADMIN role gives access to all controls with the system. The OPERATOR roles give access to all controls used to make changes to LXD servers. The USER role gives access to controls used in basic lifecycle commands of an instance. The AUDITOR role acts as a guest or read-only account giving access to controls that only display LXD resources.

Console Terminal

The Exec option has been replaced with a more robust console terminal. Using xterm.js and web sockets, users can connect to the console of both container and virtual machine instances. This new console emulates the feel of being directly connected to the instance. To login to instances, a user account and password will need to be configured in the virtual instances.

Network ACLs

Network ACLs are now a part of the LXD dashboard. Users can create new access control lists (ACLs) as well as modify their ingress and egress rules.


Previous versions of the dashboard relied on using a compiled LXC binary for generating LXC certificates. Certificates are now created using the built-in OpenSSL libraries within PHP. This allows the application to create certificates as needed rather than relying on users first creating their own certificates when installing the dashboard. Also now through the dashboard interface, users can add additional trusted certificates to a remote LXD host.


Curl connections made to the REST API of remote LXD servers are now made using PHP’s curl implementation rather than using the installed curl application on the host operating system. Changes no longer have to be made to the /etc/sudoers file, helping to reduce configuration problems and improve security. Now all a user has to do is just install the php-curl package on dashboard host system.


Tables are now created automatically from within the dashboard rather than having to manually create them before installation. Database connections now use PDO statements allowing for consistent SQL statements between additional database systems, which are planned for future releases of the application.

Local Web assets

The LXD dashboard uses Google fonts for the web pages. Changes have been made to now use these fonts locally within the application rather than pulling them down from the Internet. All web assets are included within the application allowing the dashboard to work flawlessly within secure isolated network environments.


Support is now built into this release of the application to log all controlled events. This logging of events to the database is planned in a future release of the application.

Posted on 16 Comments

Installing the LXD dashboard in an LXC container – v2.x.x

This how-to guide will take you through the installation steps to run the LXD dashboard in an LXC container on your system. This guide will assume that your system already has LXD installed and configured.

Start by launching a new instance using the official Ubuntu 20.04 image. To launch the new instance and name it lxd-dashboard use the following command:

$ lxc launch ubuntu:20.04 lxd-dashboard

This will create a base container to use to install the LXD dashboard. Once the command finishes the container should be running. Now it is time to connect into the container and setup the software. Use the following command to obtain a bash shell connection to the instance, use the exit command at anytime to leave the shell:

$ lxc exec lxd-dashboard /bin/bash

The following commands will now be run inside the lxd-dashboard container. Verify that the terminal prompt reads root@lxd-dashboard:~# before installing any software. The LXD dashboard uses Nginx and PHP for the webserver platform and SQLite as a database. To install these packages use the following command:

$ apt update && apt install nginx php-fpm php-curl sqlite3 php-sqlite3 -y 

Using wget, the source code for the LXD dashboard can be downloaded from the GitHub repository. For this guide the v2.2.0 release will be used. Check for newer versions on the GitHub page and replace the version number with the latest. To download and extract the source code use the following two commands:

$ wget
 $ tar -xzf v2.2.0.tar.gz

A few web server files will need to moved into place for the web pages as well as the NGINX configuration. To copy these files use the following commands, making sure to change the version number to what was downloaded:

$ cp -a lxd-dashboard-2.2.0/default /etc/nginx/sites-available/
 $ cp -a lxd-dashboard-2.2.0/lxd-dashboard /var/www/html/

There are three main directories that LXDWARE uses to store persistent information for the application. You will need to create these directories and then assign appropriate ownership to the web server. To create the directories use the following commands:

$ mkdir -p /var/lxdware/data/sqlite
 $ mkdir -p /var/lxdware/data/lxd
 $ mkdir -p /var/lxdware/backups

The /var/www/html/lxd-dashboard/ directory, the /var/lxdware/ directory, and the contents within them all need to be owned by the web server user. To set the proper permissions run the following commands:

$ chown -R www-data:www-data /var/lxdware/
 $ chown -R www-data:www-data /var/www/html

The NGINX web server will need to be restarted to apply the web server configuration changes made above. To restart the web server run the following command:

$ systemctl restart nginx

Congratulations! The container is now setup with the LXD dashboard software. Exit from the bash terminal and return to your LXD host server by using the command:

$ exit

Open a web browser and access the LXD dashboard by entering in the IP address of the instance. Use the lxc list command to view a list of the containers and their IP addresses on your LXD server.

Optional Port Forward Configuration

Port forwarding can be used to make the lxd-dashboard instance accessible to others computers outside of the server. The lxd-dashboard listens on port 80 for web traffic. In this how-to guide the host’s port 80 will be forwarded to the instance’s port 80. For more information on port forwarding view the how-to guide Forwarding host ports to LXD instances.

To create a new profile named proxy-port-80 use the following command:

$ lxc profile create proxy-port-80

To configure the profile to forward the port 80 from the host server to port 80 on the instance, use the following command:

$ lxc profile device add proxy-port-80 hostport80 proxy connect="tcp:" listen="tcp:"

To apply the newly created profile to the lxd-dashboard instance and begin forwarding port 80 traffic to your instance run the following command:

$ lxc profile add lxd-dashboard proxy-port-80

Open a web browser and access the LXD dashboard by entering in the IP address of the host server.

Posted on Leave a comment

Version 1.2.8

A new version of the LXD Dashboard has been released adding minor new features. The changes include:

  • added edit and delete actions for storage volumes
  • added action to create new storage volumes, with form options for size and content_type

Posted on Leave a comment

Version 1.2.7

Version 1.2.7 has just now been released. This update is has minor changes that improve the software. The changes include:

  • fixed bug that caused new storage pools to default to size 30GB
  • improved list of disk devices displayed on instance page

Posted on Leave a comment

Version 1.2.6

Version 1.2.6 has just been released. Please pay attention to changes in the installation instructions when building the LXD dashboard in an LXC container, as a new directory /var/lxdware/backups will need to be created and have the permissions changed to all the www-data user write permisions.

Version 1.2.6 brings the following changes:

  • moved local exports of backups to /var/lxdware/backups
  • added compression algorithms options to creating backups
  • added instance_only and optimized_storage options to creating backups
  • modified backup export to provide a download link
  • improved code to reduce PHP notices in error log for undefined variables and arrays
  • added htmlentities() to a few echo statements that where missing it in the PHP code
Posted on Leave a comment

Version 1.2.5

Version 1.2.5 has just been released. This new version brings the following changes:

  • added ability to create an instance from JSON
  • added “instance type” option to replicate cloud instance types from AWS, Azure, and GCE
  • added edit action for configuration and device information of an instance
  • improved delete function of instance. If the instance is not found when deleting, redirect to instance list
  • improved list of cluster members when migrating to include none for non-clustered host
  • added an additional custom notification for updating instance
  • UI improvements to host and project nav menu
  • fixed displaying results from exec in instances within projects other than default
Posted on Leave a comment

Version 1.2.4

Version 1.2.4 has just now been released. Changes in this update include:

  • Fixed bug that did not allow for operations of projects other than default being displayed
  • Fixed bug in display items in projects other than default
  • Fixed bug in actions for instances in projects other than default