osamuaoki / incus-ui-canonical

Incus-UI-Canonical is a a browser frontend for Incus (patched LXD-UI)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Incus-UI-Canonical

Incus-UI-Canonical is a browser frontend for Incus. It enables easy and accessible container and virtual machine management. Targets small and large scale private clouds.

Background

This Incus-UI-Canonical is a forked project of LXD-UI.

This Incus-UI-Canonical is targeted to work with Incus instead of LXD.

LXD has been moved to Canonical and a community fork of LXD, Incus, is now part of the Linux Containers project.

Canonical packages LXD-UI as a part of lxd snap package.

Lead Incus developer zabby is providing his incus deb package at Incus package repository. Zabby bundles patched lxd-ui web page into /opt/incus/ui of his deb package.

When I filed a wishlist bug report to bundle zabby's static web page in Debian's incus package: #1067041 and got a reasonable response that such thing needs to be packaged as a separate package.

Here is my first try to create such package which can work with the official Debian's incus package.

Essential part of package modifications are copied from zabby's workflow and ui-canonical-* patches and sed script.

I realized existence of zabby's code and structure from others packaging this part of code.

Install

For Debain/Ubuntu system (via APT)

Create /etc/apt/sources.list.d/osamuaoki.sources as:

Types: deb
URIs: https://osamuaoki.github.io/debian/
Suites: sid
Components: main
Signed-By:
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 .
 mDMEZZpSFhYJKwYBBAHaRw8BAQdA9T6mXRx7Zc64kQC+dKB2RgxNHK0+KFlCT8b/
 JtFAWRu0HU9zYW11IEFva2kgPG9zYW11QGRlYmlhbi5vcmc+iJIEExYIADsCGwMF
 CwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQTYnmsJtCCYzq8IGrFtbTgJIV9yDQUC
 ZZpXMAIZAQAKCRBtbTgJIV9yDc+YAQDhuq/q76qobfHKi8C2MT83u1qZkg2eCpEF
 UkyvrE59fwD4+d+IbCls19F3MCRuEmyvYQr+sghC82lnUiFOxUq/DbQhT3NhbXUg
 QW9raSA8b3NhbXUuYW9raUBnbWFpbC5jb20+iJAEExYIADgWIQTYnmsJtCCYzq8I
 GrFtbTgJIV9yDQUCZZpVVQIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRBt
 bTgJIV9yDehWAP9lG8DUBwUPl0kCTezQItOxQfDXgJ0Lyhv8dv4B1iWxjgEA8YBv
 gCgDGby+pQmRX/STM7fu5LG62785oIj17HuMaQG4OARlmlIWEgorBgEEAZdVAQUB
 AQdA+q2tgbmHC7MQv5bTHyawYrITRw7Gdg7M0p0+oSRtzS8DAQgHiHgEGBYIACAC
 GwwWIQTYnmsJtCCYzq8IGrFtbTgJIV9yDQUCZZpU3QAKCRBtbTgJIV9yDdz6AQC8
 yC8mQnwkj9D2x84oSdEpAckJ/e47kLDN3y/HIOwXbAD/ZCv2Ek1Exh/7SrxNL65J
 ipPuCsH1vTsxbEE14mEs2Ag=
 =IDSM
 -----END PGP PUBLIC KEY BLOCK-----
# This is written in DEB822-STYLE FORMAT as described in sources.list (5)

This adds my personal APT repository. Then incus-ui-canonical can be installed by

 $ sudo apt update && sudo apt install incus-ui-canonical

or interactively with

 $ sudo aptitude -u

For other system (or for testing)

 $ sudo apt update
 $ sudo apt devscripts yarnpkg npm
 $ git clone https://osamuaoki.github.com/incus-ui-canonical
 $ cd incus-ui-canonical
 $ git remote add canonical https://github.com/canonical/lxd-ui
 $ git remote update
 $ #origtargz
 $ git archive --prefix=incus-ui-canonical-0.6/ --format=tar.gz -o ../incus-ui-canonical_0.6.orig.tar.gz incus-ui-canonical/0.6
 $ git checkout debian
 $ debuild
 $ cd ..
 $ sudo dpkg -i incus-ui-canonical*.deb

The above deb-package build process accesses the external javascript repository site outside of the official Debian package repository.

Thus this generated binary deb package is not ready to be uploaded to the Debian repository.

Configuration of Incus

You need to start the incus daemon while setting its environment with INCUS_UI=/var/lib/incus/ui.

You can set it in /etc/environment until the official incus package support this.

 $ incus config set core.https_address ":8443"

Then start any modern browser with it URL pointing to https://localhost:8443.

LICENSE

See LICENSE and each file. My code is under GPL3.

TODO

  • Update to newer lxd-ui. (0.7)
  • License check and other packaging details including dependencies.
  • Make this build to be compliant for the uploading to Debian repository. (Need help here)

Reference information

Please refer to the guide and references available for LXD-UI.

  • Substitute lxc command with incus command.
  • Substitute lxdbr0 with incusbr0 for network device.
  • Substitute LXD_* environment variables with INCUS_* environment variables.

Please don't report issues of this fork to Canonical.

The followings are quoted from the original LXD-UI by Canonical with section headers made to be subsection headers

LXD-UI

LXD-UI is a browser frontend for LXD. It enables easy and accessible container and virtual machine management. Targets small and large scale private clouds.

Install

Get the LXD snap

   sudo snap install --channel=latest/stable lxd

Or refresh to ensure at least version 5.14 is installed

   sudo snap refresh --channel=latest/stable lxd

Follow the guide to access the LXD web UI.

Contributing

You might want to:

Architecture

LXD-UI is a single page application written in TypeScript and React. See Architecture for details on bundling with LXD and the dev setup.

Examples

Create an instance Instance list Instance terminal
0create 1instance-overview 2instance-term
Graphic console Profile list Cluster groups
3-instance-console profile-list 6cluster
Storage Operations Warnings
5storage operations warnings

About

Incus-UI-Canonical is a a browser frontend for Incus (patched LXD-UI)

License:GNU General Public License v3.0


Languages

Language:TypeScript 74.5%Language:JavaScript 21.9%Language:SCSS 3.2%Language:Makefile 0.2%Language:Shell 0.1%Language:Dockerfile 0.1%Language:HTML 0.0%Language:sed 0.0%