2026-03-18 23:09:44 +00:00
2026-03-18 23:09:44 +00:00
2026-03-16 21:33:15 +00:00
2026-03-17 16:05:32 +00:00
2026-03-17 16:05:32 +00:00
2026-03-16 21:33:15 +00:00
2026-03-17 16:05:32 +00:00
2026-03-16 21:33:15 +00:00
2026-03-17 16:05:32 +00:00
2026-03-18 14:49:17 +00:00

Orchestra

A simple one binary orchestrator for game server hosting, written in Go with a solidjs frontend.

Table of Contents

Project Synopsys

Orchestra is an visual orchestrator that allows you to setup services quickly.

This project is born out a need to host game services and to make it simple for friends and family and to keep it in one binary without the setup hassle. I would like it to be compliant to Pelican/Pterodactyl's Egg system so you can ingest those files and set up the game servers like a breeze.

TODO: Write more.

INFO: Code organization: https://go.dev/doc/modules/layout

User Stories (Functionalities)

All marked user stories are implemented, those that are not are WIP.

User

  • As a user I want to access my service through a website to be able to see my services.
  • As a user I want to register myself (If OAuth is disabled) through the website to be able to see my services.
  • As a user I want to set 2FA myself through the website to be able to see my services.
  • As a user I want to login to the service to setup a server.
  • As a user I want to login to the service through my OAuth2 provider to setup a server.
  • As a user I want to have a dashboard to see all assigned services that I own.
  • As a user I want to start/stop a service.
  • As a user I want to connect to SSH and browse my containers filesystem to check mods.
  • As a user I want to import a Pelican/Pterodactyl Egg to setup a new service.
  • As a user I want to setup a new service like the above egg setup.
  • As a user I want to export a newly made egg so I can share it with a friend.
  • As a user I want to access my game server through \$URL/\$USER/\$GAME-UNIQUE-ID

Admin

  • As an administrator I want to invite a user to a service if OAuth is disabled.
  • As an administrator I want to recover a user if OAuth is disabled.
  • As an administrator I want to assign a service to a user.
  • As an administrator I want to see who is using the resources on the server.
  • As an administrator I want to set default limits so people can't abuse the service.
  • As an administrator I want to change limits so I can grant extended limits to friends.
  • As an administrator I want to access a service
  • As an administrator I want to disable a service
  • As an administrator I want to remove a service.

Service owner

  • As the owner of the service I want to host services on Docker/Podman/K3s/K8s.
  • As the owner of the service I want to make Orchestra use terraform to spawn services independently of backend.
  • As the owner of the service I want to select how to login and register, local or OAUTH2.
  • As the owner of the service I want to be able to register an account without OAuth2 authorizor.
  • As the owner of the service I want to restrict sign-ups.
  • As the owner of the service I want to have Orchestra make use of a public or private OAuth2 authorizor.
  • As the owner of the service I want to use Caddy as my reverse proxy.
  • As the owner of the service I want to make it simple to deploy on my own server via a container.
  • As the owner of the service I want to be able to check the logs for any suspicious behaviour with services.
  • As the owner of the service I want to ban access from countries/vpns that are known for hacking services.

Other

  • As an {$ACTOR} I want {$FUNCTION} because {$REASON}

Q & A

S
Description
A simple one binary orchestrator for game server hosting, written in Go
Readme 159 KiB