Are you happy with your logging solution? Would you help us out by taking a 30-second survey? Click here

Statistics on ciao-webui

Number of watchers on Github 19
Number of open issues 43
Average time to close an issue about 2 months
Main language JavaScript
Average time to merge a PR 1 day
Open pull requests 4+
Closed pull requests 2+
Last commit over 2 years ago
Repo Created over 3 years ago
Repo Last Updated about 2 years ago
Size 8.87 MB
Organization / Authorintel
Page Updated
Do you use ciao-webui? Leave a review!
View open issues (43)
View on github
Fresh, new opensource launches 🚀🚀🚀
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating ciao-webui for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

Ciao WebUI

Ciao Web UI is the user interface for Ciao built using the express web framework on top of Node.js, a lightweight JavaScript runtime. It allows user's to take advantage of a simple and friendly design to easily manage a running Ciao cluster.


Running Ciao Web UI requires Node.js v5.9.0 or greater. Third party sofware packages can be found in the package.json file.

Setup Instructions

Install latest stable Node js version.

$ node --version

Fill required information on the ciao_config.json file

The ciao_config.json file is a file in JSON format which contains the information of the ciao-controller and keystone servers the Web UI is going to connect to. The root of the ciao_config.json is the environment, and should match the NODE_ENV environment variable. Then the parameters controller, storage, keystone and ui will follow. Note: an alternate configuration file may be used by running npm start with a config_file parameter.

....npm start -- config_file=Path to configuration file


Refers to the ciao-controller that the Web UI will connect to, it has the following parameters:

  1. host - may be the hostname or ip address of ciao-controller (Ex.
  2. port - port in which the ciao-controller services are reachable.
  3. protocol - lowercase protocol used by ciao-controller (currently only https is supported).
  1. host - may be the hostname or ip address of ciao-controller (Ex.
  2. port - port in which keystone's services are reachable.
  3. protocol - lowercase protocol that keystone uses to provide it's services (http and https are supported).
  4. uri - The uri in which keystone will provide tokens. (this should be /v3/auth/tokens).
  1. host - may be the hostname or ip address of block storage services provider (ciao-controller or cinder) (Ex.
  2. port - port in which block storage services are reachable.
  3. protocol - lowercase protocol that block storage API uses to provide it's services (http and https are supported).

The following fields will determine how the Ciao Web UI will beconfigured.

Note: if https protocol is set on ui options, Web UI will require a signed ssl certificate
with a passphrase.
A self-signed certificate may be generated using the following command:

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365
  1. protocol - the protocol that the Web UI will use to run, this can be http or https. If the protocol used is http, then certificates field isn't required.
  2. certificates - this is field is required for https protocol, pem key and certificate files will also be required.

    • key - this field holds the absolute path to a valid key.pem file.
    • cert - this field holds the absolute path to a valid cert.pem file (must match key.pem).
    • passphrase - the passphrase assign to key.pem file.
    • trusted - array of trusted certificates. Each element in the array must contain the absolute path of a trusted cert.pem file.

    Note: application can be started with this information specified on npm start parameters, see Run application*.

Building application

In order to build application the '' must be executed. This script will intsall dependencies using the npm package manager and also build minified JS scripts used with browser compatibility. Note: this process is only necessary for development as minified scripts and dependencies are already provided by the application.

# install while setting a "development" environment
$ ./ development
# In this case NODE_ENV will be set to "development"

Running application:

In order to run the application use the deployment script ''. Deployment supports using a configuration file located on config/ciao_config. Otherwise, parameters may be passed on to to specify controller, keystone and ui settings. also requires NODE_ENV as a first parameter, and will set it as the environment variable for running the UI (valid values for NODE_ENV are 'development' or 'production'). Usage with valid configuration file:

$ ./ [NODE_ENV]

Usage without configuration file: To run UI with specific set of configuration regardless of ciao_config.json's content, use the following paramters:

  1. protocol: set the protocol(Lowercase) that will be used by application, including controller, keystone and ui. For instance, if https, the UI will run on https, and also controller and keystone are assumed to use this protocol as well.
  2. keystone_addr: Keystone's IP address or hostname reachable within the network.
  3. keystone_port: The port on which Kesytone's services are reachable.
  4. controller_addr: Ciao controller's IP address or hostname reachable within the network.
  5. controller_port: The port on which Controller services are reachable.
  6. key_path: Needed to run over HTTPS, The PATH (absolute or relative) that holds the location for the key.pem file.
  7. cert_path: Needed to run over HTTPS, the PATH (absolute or relative) that holds the location for the cert.pem file.
  8. passphrase: The passphrase or password set on the pem certificates used to run over HTTPS. Usage:

....$ ./ [NODE_ENV] [protocol=protocol] [controller_addr=ip_address] [controller_port=port] [keystone_addr=ip_address] [key_path=pem_file] [cert_path=pem_file] [passphrase=certificate_passphrase]


$ development protocol=https controller_addr= controller_port=8774 keystone_addr= keystone_port=35357 key_path=certs/key-pass.pem cert_path=certs/cert.pem passphrase=asecurepassphrase

App will then run on protocol://localhost:3000 To serve the UI on an alternativa port set the PORT environment variable with the value of the desired port. Example.

$ export PORT=80
$ ./ development
ciao-webui open issues Ask a question     (View All Issues)
  • over 2 years Volumes - Detach modal title says: Attach
  • over 2 years Volumes - Not displaying the UUID of the image that is currently attached
  • over 2 years Missing validations on Create Pool for Subnet and IP
  • over 2 years Volumes - Create button not working [w/workaround]
  • almost 3 years Incorrect image name shown for instance
  • almost 3 years External IP implementation
  • almost 3 years Update readme file with makefile instructions
  • almost 3 years Add External IP API support: list external IPs
  • almost 3 years Implement External IP on Tenant Instance Detail
  • almost 3 years Create New IP Pool page
  • almost 3 years Implement List of Pools in the Admin page
  • almost 3 years Implement Pool Overview Component to the Admin page
  • about 3 years Admin - Number of instances on Machine page not matching with actual instances
  • about 3 years Tenant - Instances table displaying all instances on first page
  • about 3 years Allow Environmnet variable configuration
  • about 3 years Storage - Value from Selects is not editable
  • about 3 years Storage - Labels from Selects are missing
  • about 3 years Image: implement create/upload image functionality (API)
  • about 3 years When selecting volumes to attach, show size as GB
  • about 3 years Image integration
  • about 3 years Data validation prior creating volumes
  • about 3 years Tenant - Placement of Panels from Grouped Instances inconsistent
  • about 3 years Tenant - JS error thrown by Grouped Instances component
  • about 3 years Error handling: properly validate storage API request in volume component
  • about 3 years Admin - Data order always changing in Instances table in Node details page
  • about 3 years Alerts when Controller or Compute node is unavailable
ciao-webui open pull requests (View All Pulls)
  • Fixing missing space (typo)
  • [DO NOT MERGE!] External IPs API implementation pull request
  • Update
  • Issue 234 [DO NOT MERGE]
ciao-webui list of languages used
Other projects in JavaScript