Google Calendar

Getting evaluation license

To run Roombelt self-hosted you need an evaluation license that you can get from mateusz@roombelt.com.

Prerequisites

To run Roombelt you need a Ubuntu 20.04 server. As Roombelt is a web application it needs to be accessible from your network over a secure HTTPS connection. Setting up an HTTPS certificate is beyond the scope of this document and can be done e.g. using Apache or NGINX with Let’s Encrypt.

Roombelt is distributed as a single binary. Provisioning it (e.g. running when the Ubuntu server starts and restarting after an application crash) can be done using standard Linux mechanisms (e.g. systemd) and is not covered in this document.

Creating an application in Google Cloud Console

  1. Create a new project using the Create Project button.

  2. In the new project go to API Library and enable the following API-s

    1. Google Calendar API

    2. Google People API

  3. Go to OAuth consent screen, select “Internal” User Type, set Product name shown to users to value Roombelt, and set the developer contact email. Leave the other fields empty.

  4. Go to Credentials and click Create Credentials -> OAuth client ID

    1. Choose Application type to value Web application

    2. Set Authorized redirect URIs to https://<ROOMBELT_URL>/google/oauth_callback

  5. Click Save

  6. Store Client ID and Client secret somewhere - you will need them in a moment.

Roombelt configuration file

Roombelt configuration is done with the roombelt.env configuration file. Set the following fields:

  • GOOGLE_CLIENT_ID to the Client ID that you saved earlier.

  • GOOGLE_CLIENT_SECRET to the Client Secret that you saved earlier.

  • GOOGLE_REDIRECT_URL to the Authorized redirect URIs that you’ve configured in the Google Cloud in the previous steps.

  • (Optionally) GOOGLE_WEB_HOOK_URL to https://<ROOMBELT_URL>/google/web_hook. If this variable is set, Roombelt uses webhooks instead of short polling Google Calendar API. As this is yet another point of failure it’s recommended to not set the variable unless the installation is reaching Google API limits.

There are additional configuration options described in the sample roombelt.env configuration file delivered with Roombelt binary.

Database

By default, Roombelt uses SQLite database which is sufficient for most use cases. If an external database is preferred you can provide a database connection string using the DATABASE_URL variable in the roombelt.env configuration file. Supported databases include PostgreSQL and MySQL.

Roombelt creates and updates the database schema automatically if the UPDATE_DATABASE_SCHEMA variable is set to true in the configuration file. Interrupting the database update process can break the database permanently so it’s highly recommended to:

  1. Start Roombelt for the first time with UPDATE_DATABASE_SCHEMA=true.

  2. Wait about a minute to ensure the database schema is created.

  3. Kill Roombelt, set UPDATE_DATABASE_SCHEMA=false, and restart the application.

Security

There are some optional settings that improve the security of the Roombelt deployment:

  1. Set ALLOWED_EMAILS in roombelt.env configuration file to the email address of the service account used to configure meeting room displays in your organization. This will block access to your Roombelt instance for other users from your organization and users from other organizations.

Final notes

In case of any issues, reach out to mateusz@roombelt.com.

Last updated