G4meServerCtrl
- Web interface to control & manage docker containers
Project Summary
A web interface to manage multiple game servers (running as docker containers) with many helpful features to improve and speed up administration.
Project Skills
Project Details
- Monorepo of two "apps". One Angular frontend and one NestJs backend.
- Build and deployment through GitLab and running on a Kubernetes cluster.
- Noteworthy features
- Multi user / role permission system via isomorphic authorization logic (CASL)
- REST API for automation and monitoring
- Control of docker container
- Container performance and other information
- Container log realtime streaming
- Built in RCON Manager
- Built in Mod Manager for SteamWorkshop
- Built in File Viewer and Editor
Project Information
G4meServerCtrl (Game Server Control) started as a prototype and proof of concept to control multiple game servers which are running as docker containers on a bare metal server.
It quickly became a tool used by a few server administrator to handle management and administration. Its features allowed it to improve the workflow of handling updates and configuration and saved a lot of time.
This was an exciting project, because it was the first one where I worked with PrismaJS instead of TypeORM and also used CASL for an advanced permission system.
REST API
Besides offering it's own API, it interacts with the (local) DockerAPI and SteamWorkshop API.
Web interface
Web interface with permission system for multi user.
Docker
The backend communicates directly with the Docker API.
The heart of G4meServerCtrl is to (you guessed it!) control game servers. The backend communicates via the docker api and controls the container.
With the docker API, additional information are bulled like container runtime performance statistics.
Also container information are display, to quickly debug / review environment variables or get information when the container was started.
Of course also the container logs can be viewed (live streamed via websockets to the frontend) and supports basic highlighting (debug, error, warning, critical, ...).
If configured and available, it even can connect to the RCON Server to further control and interact through the web interface with the game server. Only a tiny bit of configuration and a RCON command definition list is needed.
The interaction is streamed via websockets and the commands support autocomplete / select and further parameters (if defined)
If configured and available, mods can be managed through the web interface. Currently only Steam Workshop through it's API is supported.
The list of installed mods is displayed with further links to steam workshop (in case of troubleshooting, etc.)
Super Admins can configure access (read and / or write) to certain server files. This allows users with permission to view, download or update the files.
This is for example very helpful to update the banlist or adminlist quickly.
If a file is writeable and supported, it can be directly updated through the web interface. It is using a web version of VisualStudio (monaco) with support for file syntax highlighting.