Technical Requirements
This page gives a brief overview of the Metro Retro architecture and system requirements.
Metro Retro is a dynamic, real time application providing users a rich interactive environment to work in collaboratively. It is primarily deployed into a virtual private cloud operated by Deqo Software Ltd and provided in the form of Software as a Service.
This article describes the new On Premises version of Metro Retro currently under pilot and it's technical requirements for installation.
Metro Retro is exposed to customers as a single page web application. Behind this, there are a number of services working in synergy to provide a working service. From a logical perspective (ignoring hardware), these are:
Service | Product / Provider | Role |
---|---|---|
Web Gateway | Caddy | Acts as reverse proxy and load balancer. |
Content Delivery Network | BunnyCDN | Provides edge cache for static assets & SPA build files. |
App Server | NodeJS Application | Application API (HTTP based) and Auth/Login UI. |
Podopolis | Elixir Application | Socket server that enables the real time collaboration functionality. |
Main Database | Postgres | Stores all system data except for board contents. |
Object Database | MongoDB | Stores board contents. |
Cache | Redis | Provides a cache and short term storage solution. |
Message Queue | Rabbit MQ | Enables inter-service communication between components. |
File Store | S3 Compatible Storage | Stores static assets & user uploaded data. |
App Worker | NodeJS Application | Background job processor for various system tasks/functionality. |
Snapper | NodeJS Application | Generates board preview images via Puppeteer. |
The diagram below shows the logical topology layout including the data transfer routes. Blue lines are one way transfers, purple lines are bi-directional transfers.

From a physical perspective, there are flexible options for deployment. Within the main cloud deployment, we utilize Digital Ocean with the following:
- Ubuntu VMs for App Server, App Worker, Snapper, Podopolis, Rabbit MQ, Redis & Caddy
- Digital Ocean Managed Postgres & MongoDB instances
- Digital Ocean Spaces (S3 Compatible Storage)
- Bunny CDN as the external CDN provider
Each component runs directly on a dedicated VM of a size applicable for the current system load.
The on-premises version of Metro Retro is intended to be run as an unmanaged service on private infrastructure. E.g. beyond initial installation we do not provide day to day operations or servers. The exact compute requirements will depend on the expected peak user count, which can be discussed as part of your engagement.
That aside, it is possible to run Metro Retro on a single machine, utilizing Linux containers, in a deployment that can easily support a few hundred users, potentially more. We use such a deployment for our test system and have an ongoing pilot at an institution with a similar setup.
We use mostly open Open Source Software for external dependencies (e.g. Rabbit, Redis, etc). The components that are exceptions to this are the CDN and S3 Compatible Storage. For CDN, a private CDN can be used, or alternatively the system is able to run without one. For S3, we recommend using MinIO, though a purely file based solution is possible (but not recommended).
We support OpenStack. We don't currently support Kubernetes, but are open to doing so in the future.
Last modified 9mo ago