Skip to content

Latest commit

 

History

History
66 lines (40 loc) · 5.03 KB

deploying-the-project.md

File metadata and controls

66 lines (40 loc) · 5.03 KB

Deploying the project

This is intended for first-time technical users unaffiliated with the University of Nottingham. Dominic Price maintains the local Cobot Maker Space deployment and Microsoft Azure app.

1. Domain and HTTPS configuration

The system must be deployed using HTTPS, as modern browsers do not allow access to the MediaDevices interface over unencrypted HTTP.

Currently server.js is configured to serve HTTPS to your domain via Greenlock. If your usage complies with the Let's Encrypt Subscriber Agreement, you can reconfigure this for your requirements.

Simply set the constant at server.js#L2 to your email address, then use the following command from the root directory to add your domain(s).

npx greenlock add --subject example.com --altnames example.com

A full Greenlock start guide can be found here if the above is oversimplified.

Alternative HTTPS deployment methodologies would require server.js to be refactored.

2. Microsoft Azure app registration

In order to enable Microsoft Teams features, the system queries the Microsoft Graph API on behalf of an authenticated user via a Microsoft Azure app.

You must register an app within the Microsoft Organization intended for deployment and give the system its details. Full instructions for app registration are here.

Once registered, the constant at ms-queries.js#L1 must be set to the Application (client) ID and ms-queries.js#L2 must be set to a generated client secret. These can be found and generated respectively via the configuration page for the app on the Microsoft Azure website.

3. Microsoft account configuration

This system uses the Microsoft Identity Platform for account management, profile integration (e.g., display pictures), and to authenticate the associated Microsoft Azure app.

Organization assignment

Currently, each deployment of the system will only work with one Microsoft Organization at a time (and its instantiated robots, smart actions, etc.).

If an Organization is not defined in db.json (the default), you must enter the Microsoft Tenant ID and your chosen display name of the intended Organization into the relevant object in db.json before deployment.

The easiest way to find this is to login to Microsoft Azure, and navigate to Azure Active Directory via the sidebar. The Tenant ID of the Organization associated with your account is listed here.

Admin accounts

Admins can access an additional interface from the Robot Select screen, via the cog icon, which allows GUI configuration of much of the system.

Picture of the admin cog

If there are no admins defined in db.json (the default), the first user who logs in will be automatically set as an admin (as well as a driver).

Further admins can be defined by entering their Microsoft account GUID in the relevant array in db.json.

Driver accounts

Any Microsoft account within the defined Organization can login and use the system to drive robots.

First-time users will be required to allow certain data access permissions, listed below, and explained here.

  • User.ReadBasic.All
  • Presence.Read.All
  • Chat.Read
  • Chat.ReadBasic
  • Chat.ReadWrite
  • ChatMessage.Send

Please note that non-admin users can allow these permissions in Microsoft Organizations by default, but Organization administrators can manually limit non-admin permissions, which would prevent access to the system in its current state.

4. Starting the server

Broadly speaking, the system consists of a NodeJS server serving Embedded JavaScript to the user (and robots), using ExpressJS for routing. Packages are managed via npm.

Using a standard npm workflow, you should simply be able to install NodeJS and npm, navigate to the directory, and run sudo npm start to deploy.

Alternatively, run the following command for live development. This will restart the server whenever there are file changes.

sudo npm run dev

The project only has precedent on a Ubuntu server but it is, in principle, multi-platform.