dobin / lxd-webgui Goto Github PK
View Code? Open in Web Editor NEWA lightweight web frontend for LXD
License: Apache License 2.0
A lightweight web frontend for LXD
License: Apache License 2.0
Currently the container details is not very pretty. It should display all important information quickly and nicely, e.g. ip address.
@dobin I want to change the default address that the LXD WebGUI search because, when I clean web cache, the LXD WebGUI return to search on https://127.0.0.1:9000. I want to have an other default IP Address.
How can I do that ? Thanks
Steps to reproduce:
lxc publish
I propose to allow applying multiple profiles to container. Where it may be needed? - To follow steps from the article you must apply both default
and docker
profile.
I propose to allow renaming when container is offline.
LXD Server host:port
in settings section.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.
Propose to add Images aliases to images section.
The ReadMe doesn't say but does lxd-webgui support both local server LXD containers as well as remote LXD containers via the REST API like the LXD cli does ?
thanks
brian
renaming a container while its running just silently breaks stuff.
@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.
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.
There're link to third party client on this page. How about to add a web GUI there? What do you think?
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
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:
{"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":""}}}
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
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]dfsg-1ubuntu4.1 [3,161 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
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]dfsg-1ubuntu4.1 [265 kB]
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
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 ...dfsg-1ubuntu1) ...
Unpacking libjs-underscore (1.7.0
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 ...dfsg-1ubuntu4.1) ...
Unpacking nodejs (4.2.6
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 ...dfsg-1ubuntu1) ...
Unpacking node-underscore (1.7.0
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 ...dfsg-1ubuntu4.1) ...
Unpacking nodejs-dev (4.2.6
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) ...dfsg-1ubuntu4.1) ...
Setting up libuv1:amd64 (1.8.0-1) ...
Setting up libuv1-dev:amd64 (1.8.0-1) ...
Setting up nodejs (4.2.6
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) ...dfsg-1ubuntu4.1) ...
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
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:
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
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.
Downloading official ubuntu 16.04 via simplestreams does not work:
The requested image couldn't be found.
downloading 15.10 and 12.04 works.
Implement pre-container log viewer.
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.
I propose to add IP address to containers list like lxc list
does. Also I haven't found IP addr in container details. I see only mac there. I use bridged networking with dhcp on my router.
64 chars max, ASCII, no slash, no colon and no comma
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.
When starting or stopping another container the embedded terminals are closed and their content lost.
Update install to mention to create a CA, and:
To remove or reduce potential network errors. Dont forget to mention CN/hostname for network based operations.
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
Remote images has wrong header set.
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.
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
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
$ git clone https://github.com/dobin/lxd-webgui.git
$ cd lxd-webgui
lxd-webgui$ bower install
gives an error about not finding "node"
system is ubuntu 16.04 x64
Show a status bar, and say what's going on, instead of letting the user wait for a long time.
$ 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
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:
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"
}
}
}
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.
Reload image list periodically, so a downloaded image appears.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.