Skip to content
This repository has been archived by the owner on Dec 25, 2024. It is now read-only.

Architecture

DaMarine edited this page Mar 29, 2021 · 36 revisions

Introduction

Our game servers are hosted on a dedicated Ubuntu server in Canada, rented through SoYouStart. In order to configure and manage our game servers, we utilise Pterodactyl.

Game Servers

Pterodactyl runs all of our game servers in isolated Docker containers. We can then manage these game servers through the Pterodacyl UI panel, as well as the SFTP access it provides. Pterodactyl

We use two BungeeCord servers, referred to as our Proxy server, to connect several servers together. These Proxies makes maintaining our whitelist easy across all these servers, and Proxy 1 plays an instrumental role in the Resource World experience. This is explained further below.

While all these servers sit alongside each other, the diagram below represents the visual hierarchy that takes place.

Game Servers

Proxy Servers

Our proxy servers handle connections to all other game servers that sit 'below' them in the hierarchy. Proxy Servers

Both Proxy servers utilise a shared set of MySQL databases for a number of use cases:

  • Whitelist database
    • Writes to this database to whitelist new players.
    • Reads from this database to authenticate connections.
  • AdvancedBan database
    • Reads from this database to prevent banned members connecting.
  • LuckPerms database
    • Reads from this database to synchronise permissions across the Bungee network.
  • PremiumVanish database
    • Reads from this database to synchronise staff members vanished status across the Bungee network.

For all of our databases, phpMyAdmin provides a useful web interface for access and administration.

Main Network

Our main network handles the survival and resource world, and collectively is considered to be our "Main" server. In addition to the Proxy Databases, we use more MySQL databases in the main network for the following use cases:

  • Resource World Gatekeeper database
    • Writes to this database to save entity data before transferring servers
    • Reads from this database to load entity data upon transferring servers
  • CoreProtect database
    • Writes to this database to log player progression and history
    • Reads to this database to restore previous server data
  • Plan database
    • Writes to this database to log player analytics

Complete Network

While the above diagrams are broken down for easy visual reference and explanation, below is the complete network of all technical aspects of our community servers. Please note this is for completeness, rather than acting as aesthetic or extensive documentation, but should you have any questions feel welcome to ask us directly.

Rendered with Diagrams by mingrammer

Clone this wiki locally