Infrastructure

Introduction

The purpose of these documents are to provide an overview of the infrastructure used to operate the Mastodon instance and ancillary services that make up vmst.io. It should explain how the various services interact and how "the magic" happens when our users open the Mastodon app on their phone or enter our address into their web browser.

Unfortunately, it's not really magic, but rather a series of databases and services from various open-source vendors running in a number of different best-in-class public cloud providers.

Architecture Goals

  • Be highly available for all critical components.
  • Be scalable both vertically and horizontally.
  • Provide a highly performant experience for our users.
  • Maintain a stable endpoint on the ActivityPub network.

Layout

Server Layout

Core Services

Our core service is the Mastodon platform located at vmst.io.

DigitalOcean is our primary hosting provider for this service. Our primary data centers are TOR1 and NYC3, with Toronto holding the bulk of the computing workloads and New York for the object storage.

Required Components

The following reflect the required software components to have a functional deployment of Mastodon:

Additional Components

Most Mastodon deployments leverage one or more additional components to provide additional functionality.

Some of them include:

Core Elements

Virtual Machines

We use an all virtual architecture using DigitalOcean "Droplets" as Kubernetes nodes. These Droplets are provisioned automatically by the Kubernetes control plane. There are typically multiple nodes with 4 vCPU and 16 GB of memory each, and can be scaled up or down based on demand.

Kubernetes

We use the DigitalOcean managed Kubernetes service.

Load Balancing

We use DigitalOcean managed load balancer objects to distribute user traffic across our frontend reverse proxies.

Reverse Proxies

We use Nginx as our reverse proxy software. In our Kubernetes environment this is in the form of the Nginx Ingress Controller.

Our Nginx reverse proxies provide TLS/SSL termination.

Reverse Proxy Diagram

Documentation

Our documentation website docs.vmst.io runs on the Netlify app platform as a static website.

It is a Docus website. It's automatically generated anytime there is a push event to the underlying Git repository. It uses an integrated CDN provided by Netlify.

If you would like to edit or contribute to the documentation on this site, you may fork the site and submit pull requests to our staging branch.

Please review our contribution guide for more information.

Naming Conventions

Our servers are named after characters and actors from the original Star Trek series, and other 23rd century derivatives.

Live long and prosper.