Giter VIP home page Giter VIP logo

lxd-webgui's Introduction

Description

A lightweight web management web interface for LXD.

Written completely in AngularJS. Does not need an application server, database or other backend services. Just serve the static HTML and JS files and go!

Status

This software is beta.

Browser support

Works best in Chrome. Works in Firefox. Safari is currently not supported.

Screenshot

Screenshot

installation

The installation procedure is as follows:

  • Install LXD (if not already happened)
  • Install LXD-WEBGUI
  • Create a client certificate and install it into the browser, and lxd
  • Configure lxd to listen to localhost/network

Install LXD itself

install lxd as described here:

My lxd init looks like this:

$ sudo lxd init
Name of the storage backend to use (dir or zfs): zfs
Create a new ZFS pool (yes/no)? yes
Name of the new ZFS pool: lxdpool
Would you like to use an existing block device (yes/no)? no
Size in GB of the new loop device (1GB minimum): 16
Would you like LXD to be available over the network (yes/no)? no
LXD has been successfully configured.

Install LXD-WEBGUI

Prerequisites

Install npm, bower and a simple http server:

$ sudo apt-get install npm
$ sudo npm install -g bower
$ sudo npm install -g http-server

checkout LXD-WEBGUI

$ git clone https://github.com/dobin/lxd-webgui.git
$ cd lxd-webgui

Dependencies

install web dependencies for lxc-gui:

lxd-webgui$ bower install

HTTP server

create certs for the http server:

lxd-webgui$ openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes

start http server to serve lxd-webgui:

lxd-webgui$ http-server -S -a localhost -p 8000

Of course you can just put the file to be served via Apache (/var/www) or any other web server. They are just static files.

lxd configuration

certs

Create a self-signed cert to authenticate to LXD:

$ cd ~/
$ mkdir lxc-cert
$ cd lxc-cert
$ openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes

Content of certificate (CN, AU etc.) does not really matter, but should contain something like "LXD" so you are able to select the correct cert when prompted.

Convert cert to pkcs12:

$ openssl pkcs12 -export -out cert.p12 -inkey key.pem -in cert.pem

Now, add the PKCS12 cert.p12 to your browser, or your OS:

 Chrome: "Settings" -> "Manage Certificates" ->  "import" -> select the .p12 from above
 Firefox: "Preferences" -> "Advanced" -> "Certificates" -> "View Certificates" -> "(Your Certificates)" -> "Import"

Internet Explorer / Edge and Chrome will use the Windows/OSX certificate store. Firefox has its own certificate store.

lxd configuration

Most importantly, we have the add the above client certificate (~/lxd-cert/cert.pem) into the trusted certs of lxd:

$ sudo lxc config trust add cert.pem

Configure LXD to listen to localhost on port 9000, and allow access from localhost port 8000 (where LXD-WEBGUI lives). We also have to configure LXD to accept the PUT, DELETE and OPTIONS HTTP headers, and fix allowed headers to include "Content-Type". Afterwards, we NEED to restart it atm.

$ sudo lxc config set core.https_address 127.0.0.1:9000
$ sudo lxc config set core.https_allowed_origin https://localhost:8000
$ sudo lxc config set core.https_allowed_methods "GET, POST, PUT, DELETE, OPTIONS"
$ sudo lxc config set core.https_allowed_headers "Origin, X-Requested-With, Content-Type, Accept"
$ sudo lxc config set core.https_allowed_credentials "true"
$ sudo lxd restart

LXD-WEBGUI network access

If you want to access LXD-WEBGUI via the network, configure LXD to listen to the network with:

$ sudo lxc config set core.https_address <your-ip>:9000
$ sudo lxc config set core.https_allowed_origin *

This will allow anyone with a valid client cert to access the LXD API. You'll have to import the client certificate (p12) into the browser which you are using to access LXD-WEBGUI.

You can specify the LXD API server in the "Settings" tab in LXD-WEBGUI.

start

important: try to access lxd API: https://localhost:9000 (and accept the certificate warning)

access LXD-WEBGUI: https://localhost:8000

FAQ

Whats up with all the certs?

LXD provides a REST based API via HTTPS webserver (here :9000). This webserver needs a server certificate.

LXD-WEBGUI is served via HTTPS via a webserver. This also needs a server certificate.

The authentication to the LXD API is performed via a client certificate. This certificate is stored in the browser of the user. LXD-WEBGUI performs HTTP requests to the API, which is authenticated via this client cert.

security considerations

Do not let any other application run on the same domain+port as LXD-WEBGUI.

There is no CSRF protection for the LXD REST service.

lxd-webgui's People

Contributors

dobin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lxd-webgui's Issues

Somehow have the ability to save previous configuration

Hi !
I've successfully installed lxd-webui on our system thanks to your clearer instructions than the initial ones. I wanted lxd-webui to be abble to view in a graphical way the state of the containers hosted on our hosts. The problem is, right now, that each time we want to see what's on a peculiar host, we have to change the settings page, re-chose the desired certificate and so on before we can get the informations we want. Do you plan to add an option somewhere so that we could save the configuration and recall it whenever we want ?

Thanks.

certificate confirmation

Hi!
It's not a bug - its more a question...

i setup everything like specified in documentation... and it works fine!

but every time i create new session (so when I open the browser) it says
Could not get config from server...
and I need to go to settings
Open LXD URL in new Tab
and confirm certificate

sorry if that's naive question - but is there a way to avoid confirmation of certificate every time?

regards,
Michael

Minimum Ubuntu / LXD Version

CORS disable requires current version of LXD, which may be not in ubuntu 16.04. Check since which version it is available, and update README accordingly.

See #31

web interface error Could not get config from server

$ history
  ...
  25 sudo apt-get install npm
  38  sudo npm install -g bower
  39  sudo npm install -g http-server
  41  cd /usr/src
  44  sudo apt install git
  45  cd lxd-webgui
  48  sudo git clone https://github.com/dobin/lxd-webgui.git
  49  cd lxd-webgui
  53  sudo apt install nodejs
  54  sudo ln -s /usr/bin/nodejs /usr/bin/node
  55  sudo apt install nodejs
  58  npm install -g http-server
  59  npm install -g bower
  67  sudo chmod -R a+wr /home/test/.config/configstore
  70  sudo chown test:test /home/test/.config/configstore/
  74  sudo chmod a+rw -R /usr/src
  75  npm install angular
  76  bower install
  77  openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes
  79  http-server -S -a localhost -p 8001
  81  cd ~/
  82  mkdir lxc-cert
  83  cd lxc-cert
  84  openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes
  85  openssl pkcs12 -export -out cert.p12 -inkey key.pem -in cert.pem
  86  sudo lxc config trust add cert.pem
  87  sudo lxc config set core.https_address 127.0.0.1:9000
  88  sudo lxc config set core.https_allowed_origin https://localhost:8001
  89  sudo lxc config set core.https_allowed_methods "GET, POST, PUT, DELETE, OPTIONS"
  90  sudo lxc config set core.https_allowed_headers "Origin, X-Requested-With, Content-Type, Accept"
  91  sudo lxc config set core.https_allowed_credentials "true"
  92  sudo lxd restart
  93  sudo service lxd restart
  95  sudo lxc config set core.https_address 10.0.0.12:9000
  96  sudo lxc config set core.https_allowed_origin *
  97  sudo lxc config set core.https_allowed_origin [::]
  98  http-server -S -a localhost -p 8001
  99  http-server -S -a 10.0.0.12 -p 8001
 100  cd /usr/src/lxd-webgui/
 101  http-server -S -a 10.0.0.12 -p 8001
 102  sudo lxc config set core.https_allowed_origin 10.0.0.12
 103  sudo service lxd restart
 104  http-server -S -a 10.0.0.12 -p 8001
 105  cd ~/
 106  cd lxc-cert
 107  openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes
 108  openssl pkcs12 -export -out cert.p12 -inkey key.pem -in cert.pem
 109  sudo lxc config trust add cert.pem
 110  sudo lxc config set core.https_allowed_credentials "true"
 111  sudo lxd restart
 112  sudo service lxd restart

Loaded page sad: Could not get config from server: https://****:9000, where **** is ip, stored in

sudo lxc config set core.https_address ****

Test LXD and Test LXD Auth returnes error. Opening LXD page returns
{"type":"sync","status":"Success","status_code":200,"operation":"","error_code":0,"error":"","metadata":{"api_extensions":["storage_zfs_remove_snapshots","container_host_shutdown_timeout","container_syscall_filtering","auth_pki","container_last_used_at","etag","patch","usb_devices","https_allowed_credentials","image_compression_algorithm","directory_manipulation","container_cpu_time","storage_zfs_use_refquota","storage_lvm_mount_options","network","profile_usedby","container_push","container_exec_recording","certificate_update","container_exec_signal_handling","gpu_devices","container_image_properties","migration_progress","id_map","network_firewall_filtering","network_routes"],"api_status":"stable","api_version":"1.0","auth":"untrusted","public":false}}
what can be happened?

$ uname -ra
Linux test 4.4.0-62-generic #83~14.04.1-Ubuntu SMP Wed Jan 18 18:10:30 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

Problem with Keyboard char in Terminal

@dobin I'm using a french AZERTY keyboard and to type @ or [, }, \, I will use a combinaison keys like Alt Gr + 8 for \ , Alt Gr + 0 for @ etc...

In the Web Terminal, these keys do not work. I'm not able to type an @ or #.
It's a problem to do an SSH connection like [email protected]

Could you solve it please. Thank you.

Errors When Installing lxd-webGUI

OS: Ubuntu 16.04

Log:

`
root@ubuntu2:/tmp# apt-get install npm -y && npm install -g bower && npm install -g http-server && git clone https://github.com/dobin/lxd-webgui.git && cd lxd-webgui && lxd-webgui$ bower install && lxd-webgui$ openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes && lxd-webgui$ http-server -S -a localhost -p 8000
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
gyp javascript-common libjs-inherits libjs-jquery libjs-node-uuid libjs-underscore libuv1 libuv1-dev node-abbrev node-ansi node-ansi-color-table node-archy node-async node-block-stream
node-combined-stream node-cookie-jar node-delayed-stream node-forever-agent node-form-data node-fstream node-fstream-ignore node-github-url-from-git node-glob node-graceful-fs node-gyp
node-inherits node-ini node-json-stringify-safe node-lockfile node-lru-cache node-mime node-minimatch node-mkdirp node-mute-stream node-node-uuid node-nopt node-normalize-package-data
node-npmlog node-once node-osenv node-qs node-read node-read-package-json node-request node-retry node-rimraf node-semver node-sha node-sigmund node-slide node-tar node-tunnel-agent
node-underscore node-which nodejs nodejs-dev
Suggested packages:
apache2 | lighttpd | httpd node-hawk node-aws-sign node-oauth-sign node-http-signature debhelper
The following NEW packages will be installed:
gyp javascript-common libjs-inherits libjs-jquery libjs-node-uuid libjs-underscore libuv1 libuv1-dev node-abbrev node-ansi node-ansi-color-table node-archy node-async node-block-stream
node-combined-stream node-cookie-jar node-delayed-stream node-forever-agent node-form-data node-fstream node-fstream-ignore node-github-url-from-git node-glob node-graceful-fs node-gyp
node-inherits node-ini node-json-stringify-safe node-lockfile node-lru-cache node-mime node-minimatch node-mkdirp node-mute-stream node-node-uuid node-nopt node-normalize-package-data
node-npmlog node-once node-osenv node-qs node-read node-read-package-json node-request node-retry node-rimraf node-semver node-sha node-sigmund node-slide node-tar node-tunnel-agent
node-underscore node-which nodejs nodejs-dev npm
0 upgraded, 57 newly installed, 0 to remove and 0 not upgraded.
Need to get 5,975 kB of archives.
After this operation, 30.3 MB of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 gyp all 0.1+20150913git1f374df9-1ubuntu1 [265 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 javascript-common all 11 [6,066 B]
Get:3 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 libjs-jquery all 1.11.3+dfsg-4 [161 kB]
Get:4 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 libjs-node-uuid all 1.4.0-1 [11.1 kB]
Get:5 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 libjs-underscore all 1.7.0dfsg-1ubuntu1 [46.7 kB]
Get:6 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 libuv1 amd64 1.8.0-1 [57.4 kB]
Get:7 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 libuv1-dev amd64 1.8.0-1 [74.7 kB]
Get:8 http://us.archive.ubuntu.com/ubuntu xenial-updates/universe amd64 nodejs amd64 4.2.6
dfsg-1ubuntu4.1 [3,161 kB]
Get:9 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-async all 0.8.0-1 [22.2 kB]
Get:10 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-node-uuid all 1.4.0-1 [2,530 B]
Get:11 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-underscore all 1.7.0dfsg-1ubuntu1 [3,780 B]
Get:12 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 libjs-inherits all 2.0.1-3 [2,794 B]
Get:13 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-abbrev all 1.0.5-2 [3,592 B]
Get:14 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-ansi all 0.3.0-2 [8,590 B]
Get:15 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-ansi-color-table all 1.0.0-1 [4,478 B]
Get:16 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-archy all 0.0.2-1 [3,660 B]
Get:17 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-inherits all 2.0.1-3 [3,060 B]
Get:18 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-block-stream all 0.0.7-1 [4,832 B]
Get:19 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-delayed-stream all 0.0.5-1 [4,750 B]
Get:20 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-combined-stream all 0.0.5-1 [4,958 B]
Get:21 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-cookie-jar all 0.3.1-1 [3,746 B]
Get:22 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-forever-agent all 0.5.1-1 [3,194 B]
Get:23 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-mime all 1.3.4-1 [11.9 kB]
Get:24 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-form-data all 0.1.0-1 [6,412 B]
Get:25 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-rimraf all 2.2.8-1 [5,702 B]
Get:26 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-mkdirp all 0.5.0-1 [4,690 B]
Get:27 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-graceful-fs all 3.0.2-1 [7,102 B]
Get:28 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-fstream all 0.1.24-1 [19.5 kB]
Get:29 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-lru-cache all 2.3.1-1 [5,674 B]
Get:30 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-sigmund all 1.0.0-1 [3,818 B]
Get:31 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-minimatch all 1.0.0-1 [14.0 kB]
Get:32 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-fstream-ignore all 0.0.6-2 [5,586 B]
Get:33 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-github-url-from-git all 1.1.1-1 [3,138 B]
Get:34 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-once all 1.1.1-1 [2,608 B]
Get:35 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-glob all 4.0.5-1 [13.2 kB]
Get:36 http://us.archive.ubuntu.com/ubuntu xenial-updates/universe amd64 nodejs-dev amd64 4.2.6
dfsg-1ubuntu4.1 [265 kB]
Get:37 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-nopt all 3.0.1-1 [9,544 B]
Get:38 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-npmlog all 0.0.4-1 [5,844 B]
Get:39 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-osenv all 0.1.0-1 [3,772 B]
Get:40 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-tunnel-agent all 0.3.1-1 [4,018 B]
Get:41 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-json-stringify-safe all 5.0.0-1 [3,544 B]
Get:42 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-qs all 2.2.4-1 [7,574 B]
Get:43 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-request all 2.26.1-1 [14.5 kB]
Get:44 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-semver all 2.1.0-2 [16.2 kB]
Get:45 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-tar all 1.0.3-2 [17.5 kB]
Get:46 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-which all 1.0.5-2 [3,678 B]
Get:47 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-gyp all 3.0.3-2ubuntu1 [23.2 kB]
Get:48 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-ini all 1.1.0-1 [4,770 B]
Get:49 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-lockfile all 0.4.1-1 [5,450 B]
Get:50 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-mute-stream all 0.0.4-1 [4,096 B]
Get:51 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-normalize-package-data all 0.2.2-1 [9,286 B]
Get:52 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-read all 1.0.5-1 [4,314 B]
Get:53 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-read-package-json all 1.2.4-1 [7,780 B]
Get:54 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-retry all 0.6.0-1 [6,172 B]
Get:55 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-sha all 1.2.3-1 [4,272 B]
Get:56 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 node-slide all 1.1.4-1 [6,118 B]
Get:57 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 npm all 3.5.2-0ubuntu4 [1,586 kB]
Fetched 5,975 kB in 1s (3,036 kB/s)
Extracting templates from packages: 100%
Selecting previously unselected package gyp.
(Reading database ... 104057 files and directories currently installed.)
Preparing to unpack .../gyp_0.1+20150913git1f374df9-1ubuntu1_all.deb ...
Unpacking gyp (0.1+20150913git1f374df9-1ubuntu1) ...
Selecting previously unselected package javascript-common.
Preparing to unpack .../javascript-common_11_all.deb ...
Unpacking javascript-common (11) ...
Selecting previously unselected package libjs-jquery.
Preparing to unpack .../libjs-jquery_1.11.3+dfsg-4_all.deb ...
Unpacking libjs-jquery (1.11.3+dfsg-4) ...
Selecting previously unselected package libjs-node-uuid.
Preparing to unpack .../libjs-node-uuid_1.4.0-1_all.deb ...
Unpacking libjs-node-uuid (1.4.0-1) ...
Selecting previously unselected package libjs-underscore.
Preparing to unpack .../libjs-underscore_1.7.0dfsg-1ubuntu1_all.deb ...
Unpacking libjs-underscore (1.7.0
dfsg-1ubuntu1) ...
Selecting previously unselected package libuv1:amd64.
Preparing to unpack .../libuv1_1.8.0-1_amd64.deb ...
Unpacking libuv1:amd64 (1.8.0-1) ...
Selecting previously unselected package libuv1-dev:amd64.
Preparing to unpack .../libuv1-dev_1.8.0-1_amd64.deb ...
Unpacking libuv1-dev:amd64 (1.8.0-1) ...
Selecting previously unselected package nodejs.
Preparing to unpack .../nodejs_4.2.6dfsg-1ubuntu4.1_amd64.deb ...
Unpacking nodejs (4.2.6
dfsg-1ubuntu4.1) ...
Selecting previously unselected package node-async.
Preparing to unpack .../node-async_0.8.0-1_all.deb ...
Unpacking node-async (0.8.0-1) ...
Selecting previously unselected package node-node-uuid.
Preparing to unpack .../node-node-uuid_1.4.0-1_all.deb ...
Unpacking node-node-uuid (1.4.0-1) ...
Selecting previously unselected package node-underscore.
Preparing to unpack .../node-underscore_1.7.0dfsg-1ubuntu1_all.deb ...
Unpacking node-underscore (1.7.0
dfsg-1ubuntu1) ...
Selecting previously unselected package libjs-inherits.
Preparing to unpack .../libjs-inherits_2.0.1-3_all.deb ...
Unpacking libjs-inherits (2.0.1-3) ...
Selecting previously unselected package node-abbrev.
Preparing to unpack .../node-abbrev_1.0.5-2_all.deb ...
Unpacking node-abbrev (1.0.5-2) ...
Selecting previously unselected package node-ansi.
Preparing to unpack .../node-ansi_0.3.0-2_all.deb ...
Unpacking node-ansi (0.3.0-2) ...
Selecting previously unselected package node-ansi-color-table.
Preparing to unpack .../node-ansi-color-table_1.0.0-1_all.deb ...
Unpacking node-ansi-color-table (1.0.0-1) ...
Selecting previously unselected package node-archy.
Preparing to unpack .../node-archy_0.0.2-1_all.deb ...
Unpacking node-archy (0.0.2-1) ...
Selecting previously unselected package node-inherits.
Preparing to unpack .../node-inherits_2.0.1-3_all.deb ...
Unpacking node-inherits (2.0.1-3) ...
Selecting previously unselected package node-block-stream.
Preparing to unpack .../node-block-stream_0.0.7-1_all.deb ...
Unpacking node-block-stream (0.0.7-1) ...
Selecting previously unselected package node-delayed-stream.
Preparing to unpack .../node-delayed-stream_0.0.5-1_all.deb ...
Unpacking node-delayed-stream (0.0.5-1) ...
Selecting previously unselected package node-combined-stream.
Preparing to unpack .../node-combined-stream_0.0.5-1_all.deb ...
Unpacking node-combined-stream (0.0.5-1) ...
Selecting previously unselected package node-cookie-jar.
Preparing to unpack .../node-cookie-jar_0.3.1-1_all.deb ...
Unpacking node-cookie-jar (0.3.1-1) ...
Selecting previously unselected package node-forever-agent.
Preparing to unpack .../node-forever-agent_0.5.1-1_all.deb ...
Unpacking node-forever-agent (0.5.1-1) ...
Selecting previously unselected package node-mime.
Preparing to unpack .../node-mime_1.3.4-1_all.deb ...
Unpacking node-mime (1.3.4-1) ...
Selecting previously unselected package node-form-data.
Preparing to unpack .../node-form-data_0.1.0-1_all.deb ...
Unpacking node-form-data (0.1.0-1) ...
Selecting previously unselected package node-rimraf.
Preparing to unpack .../node-rimraf_2.2.8-1_all.deb ...
Unpacking node-rimraf (2.2.8-1) ...
Selecting previously unselected package node-mkdirp.
Preparing to unpack .../node-mkdirp_0.5.0-1_all.deb ...
Unpacking node-mkdirp (0.5.0-1) ...
Selecting previously unselected package node-graceful-fs.
Preparing to unpack .../node-graceful-fs_3.0.2-1_all.deb ...
Unpacking node-graceful-fs (3.0.2-1) ...
Selecting previously unselected package node-fstream.
Preparing to unpack .../node-fstream_0.1.24-1_all.deb ...
Unpacking node-fstream (0.1.24-1) ...
Selecting previously unselected package node-lru-cache.
Preparing to unpack .../node-lru-cache_2.3.1-1_all.deb ...
Unpacking node-lru-cache (2.3.1-1) ...
Selecting previously unselected package node-sigmund.
Preparing to unpack .../node-sigmund_1.0.0-1_all.deb ...
Unpacking node-sigmund (1.0.0-1) ...
Selecting previously unselected package node-minimatch.
Preparing to unpack .../node-minimatch_1.0.0-1_all.deb ...
Unpacking node-minimatch (1.0.0-1) ...
Selecting previously unselected package node-fstream-ignore.
Preparing to unpack .../node-fstream-ignore_0.0.6-2_all.deb ...
Unpacking node-fstream-ignore (0.0.6-2) ...
Selecting previously unselected package node-github-url-from-git.
Preparing to unpack .../node-github-url-from-git_1.1.1-1_all.deb ...
Unpacking node-github-url-from-git (1.1.1-1) ...
Selecting previously unselected package node-once.
Preparing to unpack .../node-once_1.1.1-1_all.deb ...
Unpacking node-once (1.1.1-1) ...
Selecting previously unselected package node-glob.
Preparing to unpack .../node-glob_4.0.5-1_all.deb ...
Unpacking node-glob (4.0.5-1) ...
Selecting previously unselected package nodejs-dev.
Preparing to unpack .../nodejs-dev_4.2.6dfsg-1ubuntu4.1_amd64.deb ...
Unpacking nodejs-dev (4.2.6
dfsg-1ubuntu4.1) ...
Selecting previously unselected package node-nopt.
Preparing to unpack .../node-nopt_3.0.1-1_all.deb ...
Unpacking node-nopt (3.0.1-1) ...
Selecting previously unselected package node-npmlog.
Preparing to unpack .../node-npmlog_0.0.4-1_all.deb ...
Unpacking node-npmlog (0.0.4-1) ...
Selecting previously unselected package node-osenv.
Preparing to unpack .../node-osenv_0.1.0-1_all.deb ...
Unpacking node-osenv (0.1.0-1) ...
Selecting previously unselected package node-tunnel-agent.
Preparing to unpack .../node-tunnel-agent_0.3.1-1_all.deb ...
Unpacking node-tunnel-agent (0.3.1-1) ...
Selecting previously unselected package node-json-stringify-safe.
Preparing to unpack .../node-json-stringify-safe_5.0.0-1_all.deb ...
Unpacking node-json-stringify-safe (5.0.0-1) ...
Selecting previously unselected package node-qs.
Preparing to unpack .../node-qs_2.2.4-1_all.deb ...
Unpacking node-qs (2.2.4-1) ...
Selecting previously unselected package node-request.
Preparing to unpack .../node-request_2.26.1-1_all.deb ...
Unpacking node-request (2.26.1-1) ...
Selecting previously unselected package node-semver.
Preparing to unpack .../node-semver_2.1.0-2_all.deb ...
Unpacking node-semver (2.1.0-2) ...
Selecting previously unselected package node-tar.
Preparing to unpack .../node-tar_1.0.3-2_all.deb ...
Unpacking node-tar (1.0.3-2) ...
Selecting previously unselected package node-which.
Preparing to unpack .../node-which_1.0.5-2_all.deb ...
Unpacking node-which (1.0.5-2) ...
Selecting previously unselected package node-gyp.
Preparing to unpack .../node-gyp_3.0.3-2ubuntu1_all.deb ...
Unpacking node-gyp (3.0.3-2ubuntu1) ...
Selecting previously unselected package node-ini.
Preparing to unpack .../node-ini_1.1.0-1_all.deb ...
Unpacking node-ini (1.1.0-1) ...
Selecting previously unselected package node-lockfile.
Preparing to unpack .../node-lockfile_0.4.1-1_all.deb ...
Unpacking node-lockfile (0.4.1-1) ...
Selecting previously unselected package node-mute-stream.
Preparing to unpack .../node-mute-stream_0.0.4-1_all.deb ...
Unpacking node-mute-stream (0.0.4-1) ...
Selecting previously unselected package node-normalize-package-data.
Preparing to unpack .../node-normalize-package-data_0.2.2-1_all.deb ...
Unpacking node-normalize-package-data (0.2.2-1) ...
Selecting previously unselected package node-read.
Preparing to unpack .../node-read_1.0.5-1_all.deb ...
Unpacking node-read (1.0.5-1) ...
Selecting previously unselected package node-read-package-json.
Preparing to unpack .../node-read-package-json_1.2.4-1_all.deb ...
Unpacking node-read-package-json (1.2.4-1) ...
Selecting previously unselected package node-retry.
Preparing to unpack .../node-retry_0.6.0-1_all.deb ...
Unpacking node-retry (0.6.0-1) ...
Selecting previously unselected package node-sha.
Preparing to unpack .../node-sha_1.2.3-1_all.deb ...
Unpacking node-sha (1.2.3-1) ...
Selecting previously unselected package node-slide.
Preparing to unpack .../node-slide_1.1.4-1_all.deb ...
Unpacking node-slide (1.1.4-1) ...
Selecting previously unselected package npm.
Preparing to unpack .../npm_3.5.2-0ubuntu4_all.deb ...
Unpacking npm (3.5.2-0ubuntu4) ...
Processing triggers for man-db (2.7.5-1) ...
Processing triggers for libc-bin (2.23-0ubuntu10) ...
Setting up gyp (0.1+20150913git1f374df9-1ubuntu1) ...
Setting up javascript-common (11) ...
Setting up libjs-jquery (1.11.3+dfsg-4) ...
Setting up libjs-node-uuid (1.4.0-1) ...
Setting up libjs-underscore (1.7.0dfsg-1ubuntu1) ...
Setting up libuv1:amd64 (1.8.0-1) ...
Setting up libuv1-dev:amd64 (1.8.0-1) ...
Setting up nodejs (4.2.6
dfsg-1ubuntu4.1) ...
update-alternatives: using /usr/bin/nodejs to provide /usr/bin/js (js) in auto mode
Setting up node-async (0.8.0-1) ...
Setting up node-node-uuid (1.4.0-1) ...
Setting up node-underscore (1.7.0dfsg-1ubuntu1) ...
Setting up libjs-inherits (2.0.1-3) ...
Setting up node-abbrev (1.0.5-2) ...
Setting up node-ansi (0.3.0-2) ...
Setting up node-ansi-color-table (1.0.0-1) ...
Setting up node-archy (0.0.2-1) ...
Setting up node-inherits (2.0.1-3) ...
Setting up node-block-stream (0.0.7-1) ...
Setting up node-delayed-stream (0.0.5-1) ...
Setting up node-combined-stream (0.0.5-1) ...
Setting up node-cookie-jar (0.3.1-1) ...
Setting up node-forever-agent (0.5.1-1) ...
Setting up node-mime (1.3.4-1) ...
Setting up node-form-data (0.1.0-1) ...
Setting up node-rimraf (2.2.8-1) ...
Setting up node-mkdirp (0.5.0-1) ...
Setting up node-graceful-fs (3.0.2-1) ...
Setting up node-fstream (0.1.24-1) ...
Setting up node-lru-cache (2.3.1-1) ...
Setting up node-sigmund (1.0.0-1) ...
Setting up node-minimatch (1.0.0-1) ...
Setting up node-fstream-ignore (0.0.6-2) ...
Setting up node-github-url-from-git (1.1.1-1) ...
Setting up node-once (1.1.1-1) ...
Setting up node-glob (4.0.5-1) ...
Setting up nodejs-dev (4.2.6
dfsg-1ubuntu4.1) ...
Setting up node-nopt (3.0.1-1) ...
Setting up node-npmlog (0.0.4-1) ...
Setting up node-osenv (0.1.0-1) ...
Setting up node-tunnel-agent (0.3.1-1) ...
Setting up node-json-stringify-safe (5.0.0-1) ...
Setting up node-qs (2.2.4-1) ...
Setting up node-request (2.26.1-1) ...
Setting up node-semver (2.1.0-2) ...
Setting up node-tar (1.0.3-2) ...
Setting up node-which (1.0.5-2) ...
Setting up node-gyp (3.0.3-2ubuntu1) ...
Setting up node-ini (1.1.0-1) ...
Setting up node-lockfile (0.4.1-1) ...
Setting up node-mute-stream (0.0.4-1) ...
Setting up node-normalize-package-data (0.2.2-1) ...
Setting up node-read (1.0.5-1) ...
Setting up node-read-package-json (1.2.4-1) ...
Setting up node-retry (0.6.0-1) ...
Setting up node-sha (1.2.3-1) ...
Setting up node-slide (1.1.4-1) ...
Setting up npm (3.5.2-0ubuntu4) ...
Processing triggers for libc-bin (2.23-0ubuntu10) ...
npm WARN deprecated [email protected]: ...psst! Your project can stop working at any moment because its dependencies can change. Prevent this by migrating to Yarn: https://bower.io/blog/2017/how-to-migrate-away-from-bower/
/usr/local/bin/bower -> /usr/local/lib/node_modules/bower/bin/bower
/usr/local/lib
└── [email protected]

/usr/local/bin/http-server -> /usr/local/lib/node_modules/http-server/bin/http-server
/usr/local/bin/hs -> /usr/local/lib/node_modules/http-server/bin/http-server
/usr/local/lib
└─┬ [email protected]
├── [email protected]
├── [email protected]
├─┬ [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ └── [email protected]
├─┬ [email protected]
│ ├── [email protected]
│ └── [email protected]
├── [email protected]
├─┬ [email protected]
│ ├── [email protected]
│ └── [email protected]
├─┬ [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ └─┬ [email protected]
│ └── [email protected]
└─┬ [email protected]
└── [email protected]

Cloning into 'lxd-webgui'...
remote: Counting objects: 599, done.
Receiving objects: 100% (599/599), 958.98 KiB | 102.00 KiB/s, done.
remote: Total 599 (delta 0), reused 0 (delta 0), pack-reused 599
Resolving deltas: 100% (407/407), done.
Checking connectivity... done.
root@ubuntu2:/tmp/lxd-webgui# bower install
/usr/bin/env: ‘node’: No such file or directory
`

Hastebin:

https://hastebin.com/useqitokul.erl

empty gui under ubuntu 16.04

Hello,
I don't now that this is an ubuntu 16.04 issue, but by me the webgui shows only the navigation and the list from "Add Remote Image". But there I'm also not able to clone a image. All other pages are empty.

I have not really useful debug info, but when you tell me how I can help, I'm willing to do what I can.

Cache "remote image list" in local storage

Always waiting for the images to load for ages is no fun. Cache it in local storage.

Update it in the background, in specific time intervals (once a day?). Make it possible to update manually.

Couldn't get config but API access Ok

Hello,

so I have setup the web server with its certificate and a certificate for my browser (on my Mac).
LXD and lxd-webgui are on the same server.
I still get the "couldn't get config from..." but I can access the LXD API trough my browser.

Lxd config :

config:
core.https_address: 10.3.12.1:8443
core.https_allowed_credentials: "true"
core.https_allowed_headers: Origin, X-Requested-With, Content-Type, Accept
core.https_allowed_methods: GET, POST, PUT, DELETE, OPTIONS
core.https_allowed_origin: '*'
core.trust_password: true

I have put the lxd server on debug mode also but no error except a warning for my Mac IP address.
See the 2 screenshots enclosed for details maybe.

Thanks
lxd_2
lxd_1

Test with LXD 2.0

LXD 2.0 is released. Test it, especially:

GET /1.0/containers/NAME for performance reasons no longer returns the detailed container runtime status ("status" key), a separate query to /1.0/containers/NAME/state is now needed

lxd/core: Add a new /logs REST API to containers

More beautiful container details

Currently the container details is not very pretty. It should display all important information quickly and nicely, e.g. ip address.

LXD 2.0: Update containers list view

After one adds a container from console, it does not appear in the list on next update. Only route switching helps. I suppose that it holds true also after one deletes container from console.

Use self-signed CA instead of self-signed certs

Update install to mention to create a CA, and:

  • Create client cert signed by CA
  • Use a valid server CA cert for :8000
  • Import a valid server CA cert for :9000
  • install CA certificate into browsers

To remove or reduce potential network errors. Dont forget to mention CN/hostname for network based operations.

Could not get config from server: https://<my webgui IP address>:8000

I created 3 kvm VMs with the addresses
vm1 - 192.168.122.82
vm2 - 192.168.122.235
vm3 - 192.168.122.70

I installed LXD-WEBGUI onto VM1

I installed the PK key into firefox correctly.

I start the webgui in VM1 using:

http-server -S -a 192.168.122.82 -p 8000

From the Host running Firefox...

If I use the address https://192.168..122.82:8000/
I see..

Could not get config from server: https://192.168.122.82:8000

If I use the address: https://192.168.122.82:9000/

I see...

{"type":"sync","status":"Success", "status_code":200, "operation":"", "error_code":0, "error":"", "metadata":["/1.0"]}

Which seems to indicate the LXD API is reachable? But I'm not knowledgeable enough to know from the above if I am interpreting that correctly or not.

I "think" I followed all of the configuration steps correctly.

Any idea what might be ausing the "Could not get config" error above?

thanks
brian

Cannot download ubuntu 16.04

Downloading official ubuntu 16.04 via simplestreams does not work:

The requested image couldn't be found.

downloading 15.10 and 12.04 works.

Settings section - Open - old config

  1. Change LXD Server host:port in settings section.
  2. Press save.
  3. Press open - opens old url (localhost)
  4. Reload page
  5. Press open - works as expected.

Support multiple LXD server

It should not only be possible to connect to one server, but to multiple servers at once.

Evaluate how much time it would be needed to implement this feature, either:

  • Access all servers at the same time
  • Switch servers (preferred, tab-local storage)

Cannot get this to work with Firefox

System: Ubuntu 16.04.2 LTS

FYI: Works well on Chrome. However my browser of choice is Firefox; hence I'd like it to work there too.

However, no matter what I do, "Test LXD auth" always fails on Firefox:
selection_032

Chrome give me this:
selection_033

Clicking "Open LXD Url in new tab" gives me this (exactly what I see in Chrome too):

    JSON
    Raw Data
    Headers

{
  "type": "sync",
  "status": "Success",
  "status_code": 200,
  "operation": "",
  "error_code": 0,
  "error": "",
  "metadata": {
    "config": {
      "core.https_address": "127.0.0.1:9000",
      "core.https_allowed_credentials": "true",
      "core.https_allowed_headers": "Origin, X-Requested-With, Content-Type, Accept",
      "core.https_allowed_methods": "GET, POST, PUT, DELETE, OPTIONS",
      "core.https_allowed_origin": "*",
      "core.trust_password": true
    },
    "api_extensions": [
      "storage_zfs_remove_snapshots",
      "container_host_shutdown_timeout",
      "container_syscall_filtering",
      "auth_pki",
      "container_last_used_at",
      "etag",
      "patch",
      "usb_devices",
      "https_allowed_credentials",
      "image_compression_algorithm",
      "directory_manipulation",
      "container_cpu_time",
      "storage_zfs_use_refquota",
      "storage_lvm_mount_options",
      "network",
      "profile_usedby",
      "container_push",
      "container_exec_recording",
      "certificate_update",
      "container_exec_signal_handling",
      "gpu_devices",
      "container_image_properties",
      "migration_progress",
      "id_map",
      "network_firewall_filtering",
      "network_routes",
      "storage",
      "file_delete",
      "file_append",
      "network_dhcp_expiry",
      "storage_lvm_vg_rename",
      "storage_lvm_thinpool_rename",
      "network_vlan",
      "image_create_aliases",
      "container_stateless_copy",
      "container_only_migration",
      "storage_zfs_clone_copy",
      "unix_device_rename",
      "storage_lvm_use_thinpool",
      "storage_rsync_bwlimit",
      "network_vxlan_interface"
    ],
    "api_status": "stable",
    "api_version": "1.0",
    "auth": "trusted",
    "public": false,
    "environment": {
      "addresses": [
        "127.0.0.1:9000"
      ],
      "architectures": [
        "x86_64",
        "i686"
      ],
      "certificate": "-----BEGIN CERTIFICATE-----\n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\nxgXadA==\n-----END CERTIFICATE-----\n",
      "certificate_fingerprint": "",
      "driver": "lxc",
      "driver_version": "2.0.7",
      "kernel": "Linux",
      "kernel_architecture": "x86_64",
      "kernel_version": "4.10.0-20-generic",
      "server": "lxd",
      "server_pid": 3705,
      "server_version": "2.13",
      "storage": "dir",
      "storage_version": "1"
    }
  }
}

LXD Auth issue

Hi,

I'm not able to use lxd-webgui on ubuntu 16.04 neither on 14.04. This probably takes its origin from the fact i can't set core.https_allowed_credentials property:
$ sudo lxc config set core.https_allowed_credentials "true"
error: Bad server config key: 'core.https_allowed_credentials'

After that, I'm just able test LXD on Settings tab but not LXD Auth.

Thereafter my config:
$ lxc config show
config:
core.https_address: '[::]:9000'
core.https_allowed_headers: Origin, X-Requested-With, Content-Type, Accept
core.https_allowed_methods: GET, POST, PUT, DELETE, OPTIONS
core.https_allowed_origin: '*'
core.trust_password: true
storage.zfs_pool_name: lxd

Is it possible to get a fix? Thanks in advance.

Common SSL/certificate problems

This whole "no backend server needed" is shooting myself in the foot. Users (and myself) often have problems with certificates, proxy configuration, corporate proxy, browser compatibility etc, self signed certs etc.

  • Put common pitfalls in readme
  • Put FAQ in readme
  • Explain architecture in readme
  • Give the user some more indications what could have gone wrong

LXD-WEBGUI network access - cmd question

On my Ubuntu 16.04 system the following command is not accepted:

$ **sudo lxc config set core.https_allowed_origin ***

It responds with list of lxc config example statements and the error msg that the above command has:
error: wrong number of subcommand arguments

                    = = = = = = = = = = = =

$ sudo lxc config set core.https_allowed_origin
[sudo] password for bmullan:

lxc config device add [:] [key=value...] Add a device to a container.
lxc config device get [:] Get a device property.
lxc config device set [:] Set a device property.
lxc config device unset [:] Unset a device property.
lxc config device list [:] List devices for container.
lxc config device show [:] Show full device details for container.
lxc config device remove [:] Remove device from container.

lxc config get [:][container] Get container or server configuration key.
lxc config set [:][container] Set container or server configuration key.
lxc config unset [:][container] Unset container or server configuration key.
lxc config show [:][container] [--expanded] Show container or server configuration.
lxc config edit [:][container] Edit container or server configuration in external editor.
Edit configuration, either by launching external editor or reading STDIN.
Example: lxc config edit # launch editor
cat config.yaml | lxc config edit # read from config.yaml

lxc config trust list [:] List all trusted certs.
lxc config trust add [:] <certfile.crt> Add certfile.crt to trusted hosts.
lxc config trust remove [:] [hostname|fingerprint] Remove the cert from trusted hosts.

Examples:
To mount host's /share/c1 onto /opt in the container:
lxc config device add [:]container1 disk source=/share/c1 path=opt

To set an lxc config value:
lxc config set [:] raw.lxc 'lxc.aa_allow_incomplete = 1'

To listen on IPv4 and IPv6 port 8443 (you can omit the 8443 its the default):
lxc config set core.https_address [::]:8443

To set the server trust password:
lxc config set core.trust_password blah

error: wrong number of subcommand arguments

I am seeing only setting page. Why?

Menu button not working
1

{"type":"sync","status":"Success","status_code":200,"operation":"","error_code":0,"error":"","metadata":{"config":{"core.https_address":"127.0.0.1:9000","core.https_allowed_credentials":"true","core.https_allowed_headers":"Origin, X-Requested-With, Content-Type, Accept","core.https_allowed_methods":"GET, POST, PUT, DELETE, OPTIONS","core.https_allowed_origin":"https://localhost:8000","core.trust_password":true},"api_extensions":["storage_zfs_remove_snapshots","container_host_shutdown_timeout","container_syscall_filtering","auth_pki","container_last_used_at","etag","patch","usb_devices","https_allowed_credentials","image_compression_algorithm","directory_manipulation","container_cpu_time","storage_zfs_use_refquota","storage_lvm_mount_options","network","profile_usedby","container_push","container_exec_recording","certificate_update","container_exec_signal_handling","gpu_devices","container_image_properties","migration_progress","id_map","network_firewall_filtering","network_routes"],"api_status":"stable","api_version":"1.0","auth":"trusted","public":false,"environment":{"addresses":["127.0.0.1:9000"],"architectures":["x86_64","i686"],"certificate":"-----BEGIN CERTIFICATE-----\nMIIFZDCCA0ygAwIBAgIQfSj+rrNivuuNYB3+XWLzGjANBgkqhkiG9w0BAQsFADA8\nMRwwGgYDVQQKExNsaW51eGNvbnRhaW5lcnMub3JnMRwwGgYDVQQDDBNyb290QGZz\nbS1WaXJ0dWFsQm94MB4XDTE3MDEwOTEyMDMzNFoXDTI3MDEwNzEyMDMzNFowPDEc\nMBoGA1UEChMTbGludXhjb250YWluZXJzLm9yZzEcMBoGA1UEAwwTcm9vdEBmc20t\nVmlydHVhbEJveDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAOD8XOpX\nJ7A9cmdc20+8ta9OzDNJn5muBv1Huy1rE1Mb+vrMfhh5KgLLeGvLEqeDZo+uoRmS\n37Ane/vXKusTqrh0oSE/Airdy67xowHIxZfQx0zvRWxvnlK3waJ4q/tit4/CNsvb\nRL7cfQ5KRP7xlHETOQWy+VxiVcPhmZ+/+i9xUyus/vsMwdwmw7E/H2MxbjIeHJ2W\n0Vsl7lgVXfx7yHiGDaBHIjs2b5el5Nbld+x6ZSiDROg9X7WZS9mDHVrVKvIwYGI+\nxAQMcpZkJ9d0bsCV1YkQVe6ogK0G8A3nX9+9fxdE9H1DclizVvnWAtw1mv3R9yuq\nI0u8z5pV1akP6EXyZJ6dMQkjCtLQYm6IIMS3KTb0FkbSvCH03LzMrW7qnQfo2DGa\nYGwf168qj5Qx/eCEvuaYegGDyMVVE93JOpueIB6Ml2Fgm3HzBl8hHbzS9nf+IzAY\npQalR21PLhmCAeXaaX8HKLKdSTVO2zp176MkoXhRIlZWF6b5FZtdPmjbTjPuKZF/\nOnFhKP3qvX6WierAPBGQTQHlq2nI/9DSU73H5MQerjM05N95+e3Bzqa9AY7xbohr\nfTNWFEQnbppVOidsrqSBDwAUK8Pb0TKVTc1ORBoqE2XEb/nj/un327iURdvOkPPE\nkZYE9pBikNl1HBRtoYUa1gGJjOf9dZjKgBlbAgMBAAGjYjBgMA4GA1UdDwEB/wQE\nAwIFoDATBgNVHSUEDDAKBggrBgEFBQcDATAMBgNVHRMBAf8EAjAAMCsGA1UdEQQk\nMCKCDmZzbS1WaXJ0dWFsQm94hwQKAAIPhwQKAAMBhwSsEQABMA0GCSqGSIb3DQEB\nCwUAA4ICAQCyMTc+PIF5ZfZOOZMxf18dmSmLTAk7+RDUzbo0VUTFg303slfvB1LF\nKNbFoIa4W7d0FPI5Vbs1+rQFLEI+rIucDtvAYAfDOrVMHbpIgWO4gFROEjAIlgrS\nJuV3FMZzmSVZY3EiFKrgwU2g+aVVR0KB1O7wD8OhNaoPhqfG0zoXR4z6J+E7TVGb\nHFbb+5WXl+4IRFPw5yaMaXbNuvt755bARmayQ6wORHLM9CY8qYyzIhZMft7QUhtZ\ntHqQjacRjWsst7b8SPjVQeMl3E3jjplJKvpcYoTFvzzFAfzpgtUIaXGwwGh+Ypnh\nCO3t3an8KBN705G1z/hEEJzNaRkMKDla/+pCWlwlrt7l/NbX8q4BxSZ5jDdEX21g\nbcGZwWkp7eKlwEHyTMWt/gmkB16UK1ywDyAH2NSsJ57a3Qzo1DzPNL4/HRamL+St\nYW7t4rznnmLdhNN0U1XZMH+/HUGfWFFrK8bhmMbpKDzeNgQtJ8LOyTrTu15wx+lr\nzdqGNm/qFdrrLpCKOO/AgR/TdTfyNcR555xRc+CLoE+n7PsccYT/W4DgnZ1ut30d\nScVd4PL6KkmvIE6PobWELA11e9KgPcMbndemNqOEHh5AOzd4S5zekg6sI36RdBP4\nASWy7UxLUS32vH01WaWSR2Jl0fehqUi5/DHRpgyX1GoPCmIwLaAAOg==\n-----END CERTIFICATE-----\n","certificate_fingerprint":"","driver":"lxc","driver_version":"2.0.6","kernel":"Linux","kernel_architecture":"x86_64","kernel_version":"4.4.0-57-generic","server":"lxd","server_pid":30319,"server_version":"2.7","storage":"dir","storage_version":""}}}

Cors error when attempting to access webgui

First time setting this project up, followed the documentation word-for-word several times.

Upon loading into either the webgui or the https://localhost:9000/ endpoint, a certificate warning is issued. The warning can be bypassed and the LXD endpoint returns a 200 with some data.

The webgui also returns a certificate error (ERR_CERT_AUTHORITY_INVALID) along with a cors error (both Chrome and Firefox. I know Chrome is really picky about cors stuff):

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://localhost:9000/1.0. (Reason: expected ‘true’ in CORS header ‘Access-Control-Allow-Credentials’).

Because of this error, I am unable to functionally use webgui

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.