Skip to content
@Workshops-on-Demand

Workshops-on-Demand

hpedevlogo2

WoD frontend

Workshops-on-Demand architecture

What is the goal of the Workshops-on-Demand (WoD) ? Make it easy to register for and run jupyter notebooks you can host yourself thanks to this infrastructure.

100 feet view of the WoD Architecture

The WoD infrastructure comprises 3 differents systems to work, that are usually spread across 3 machines:

  • a wod-backend machine, hosting the Jupyter Hub and the WoD templates to generate the real workshop that a given student will run, witth eir metadata. This machine may also intercat with appliances for WoD neededd one, such as Docker e.g. You may have multiple wod-backend in case of a large setup. Corresponding software on the repos wod-backend, wod-notebooks templates, wod-private optional setup
  • a wod-api-db machine hosting the WoD API service and a PostgreSQL database to store live information about the running platform. Corresponding software on the repo wod-api-db
  • a wod-fronted machine, hosting the Web interface to see the list of available workshops and book one. Corresponding software on the repo wod-frontend

It is built on shoulders of giants Tools used by the WoD infrastructure

The WoD architecture uses REST and MAIL API to allow communication between its nodes REST and MAIL API communications

Before a note book is made available to the user requesting it, there are a certain number of communications happening between machines Ordered communications

Workshops-on-Demand documentation

Here are a series of blogs published on the HPE Developer Community Portal describing the genesis and the architecture of the project. It also covers the deloyment phase of the different components as well as the creation of content.

You can also refer to the various presentations made on this project:

Installing a WoD infrastructure

In order to install a full infrastructure, a set of reliminary steps are required:

  • Install a VM/Physical machine with Ubuntu 24.04 LTS minimal and default setup. (20.04 or 22.04 should still work, while less tested these days).
  • On each VM the user ubuntu is being created and can be used for the initial setup. For access to the machine and account refer to the Ubuntu documentation or how a VM template was set up. Ensure that this user as root access (either via sudo or with password access)
  • Then you have to ensure minimal dependencies are present to run the installation. We only need git. All other dependencies are installed by the installer. So issue on each machine: sudo apt install git
  • Once installed you can use it to clone the installer (part of the backend project) again on each machine: git clone https://github.com/Workshops-on-Demand/wod-backend
  • Then you use the installer to install your WoD infrastructure: cd wod-backend/install ; ./install.sh -h
  • Reading the example for the full infrastructure at the end of the help message should give you the required guidance to set it up.

At the time of this writing, this reads:

Full installation example of a stack with:
- 2 backend servers be1 and be2 using port 8010
- 1 api-db server apidb on port 10000
- 1 frontend server front on port 8000
- all declared on the .local network
- internal postfix server running on port 9000
- e-mail sender being wodmailer@local
- ansible groupname being test
- management user being wodmgr
 
On the be1 machine:
  ./install.sh -a apidb.local:10000 -f front.local:8000 \
  -g test -u wodmgr -p 9000 -s wodmailer@local\
  -b be1.local:8010 -n 1 -t backend \
On the be2 machine:
  ./install.sh -a apidb.local:10000 -f front.local:8000 \
  -g test -u wodmgr -p 9000 -s wodmailer@local\
  -b be2.local:8010 -n 2 -t backend \
On the apidb machine:
  ./install.sh -a apidb.local:10000 -f front.local:8000 \
  -g test -u wodmgr -p 9000 -s wodmailer@local\
  -b be1.local:8010,be2.local:8010 -t api-db \
On the frontend machine:
  ./install.sh -a apidb.local:10000 -f front.local:8000 \
  -g test -u wodmgr -p 9000 -s wodmailer@local\
  -t frontend \

Note that the installer should support Rocky/Alma or Debian fairly easily instead of Ubuntu, but tests have not been fully performed. Contributions welcome.

Popular repositories Loading

  1. wod-notebooks wod-notebooks Public

    Jupyter Notebooks for the Workshop on Demand project

    Jupyter Notebook 3 23

  2. .github .github Public

    Workshops-on-Demand

    1

  3. wod-private wod-private Public

    Potential Private configuration for WoD

    Jupyter Notebook 1

  4. wod-backend wod-backend Public

    Shell 3

  5. wod-frontend wod-frontend Public

    WoD frontend service

    JavaScript 1

  6. wod-api-db wod-api-db Public

    WoD API and Database service

    Jinja 1

Repositories

Showing 7 of 7 repositories
  • wod-backend Public
    Workshops-on-Demand/wod-backend’s past year of commit activity
    Shell 0 Apache-2.0 3 12 0 Updated Apr 1, 2025
  • wod-api-db Public

    WoD API and Database service

    Workshops-on-Demand/wod-api-db’s past year of commit activity
    Jinja 0 Apache-2.0 1 0 0 Updated Mar 28, 2025
  • wod-frontend Public

    WoD frontend service

    Workshops-on-Demand/wod-frontend’s past year of commit activity
    JavaScript 0 MIT 1 3 0 Updated Mar 25, 2025
  • wod-install Public

    Installer of the WoD stack

    Workshops-on-Demand/wod-install’s past year of commit activity
    Shell 0 GPL-2.0 0 2 0 Updated Mar 25, 2025
  • wod-private Public

    Potential Private configuration for WoD

    Workshops-on-Demand/wod-private’s past year of commit activity
    Jupyter Notebook 0 Apache-2.0 1 0 0 Updated Mar 2, 2025
  • wod-notebooks Public

    Jupyter Notebooks for the Workshop on Demand project

    Workshops-on-Demand/wod-notebooks’s past year of commit activity
    Jupyter Notebook 3 CC-BY-SA-4.0 23 2 0 Updated Mar 2, 2025
  • .github Public

    Workshops-on-Demand

    Workshops-on-Demand/.github’s past year of commit activity
    1 GPL-3.0 0 0 0 Updated Mar 2, 2025

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…