Skip to content
@w3term

w3term

Purpose

This project is a mlulti-tabs web terminal, that can be embedded in any website. Each tab is connected to the same base VM, but can be connected to nested VM is the base VM has this capability.
It was developed for online workshops or when following tutorials, but can be used in many other use cases.

This article illustrates the usage of Multipass nested VM on Exoscale instances

Overall Architecture

The following schema is an overview of the architecture.

Architecture

The flow is as follows:

  • A user connects to the terminal using his GitHub account
  • In the backend a virtual machine is created on the Exoscale cloud provider
  • A multi-tab terminal is returned to the user. Each terminal has a shell connected via SSH to this VM

This project contains the following GitHub repositories:

  • terminal: the UI part which, once packaged, can be embedded in a website.
  • instances: manager in charge of creating Exoscale instances (VM) on demand. This service is developed in Go.
  • wss: a web socket server which proxies the user input to the underlying VMs. This service is developed in Node.js.
  • auth: manages user authentication via GitHub. This service is developed in Go.
  • stack: documentation (still WIP) explaining how to run the application (either locally for testing, and in a Kubernetes cluster).

This application uses:

  • NATS message broker as the communication layer
  • Postgres database to store the VMs statuses

Running this projects

Follow this documentation to run the application on your local machine or in a Kubernetes cluster.

Status

This is a work in progress, more documentation and examples will be added soon.

Popular repositories Loading

  1. wss wss Public

    websocket server

    JavaScript

  2. auth auth Public

    Github authentication

    Go

  3. instances instances Public

    Manage Exoscale instances

    Go

  4. terminal terminal Public

    JavaScript

  5. .github .github Public

  6. stack stack Public

Repositories

Showing 7 of 7 repositories

Top languages

Loading…

Most used topics

Loading…