Project Concluded: N/A
DB Reference: asl_mc
Last Updated: September 26, 2023
I have been hosting Minecraft servers for a decade since 2012. From version 1.5.2 to 1.20.1, the gaming infrastructure envolves a lot. This project is the very first one that introduced me to computers, and eventually lead to my life-long decision of majoring in Computer Science.
The most valuable aspect of this project isn't the game server itself, but rather the vast amount of knowledge I've gained through my ten years of exploration. I've learned how to manage game servers using console commands, how to perform port forwarding and basic network operations to set up my own server, how to operate Linux to improve hardware utilization, how to use reverse proxy for better connectivity, how to create webpage for server advertisement, how to use self-host control panels to manage multiple servers, and how to utilize databases for integrated authentication. These skills have expanded my understanding of a broad range of computing fields, and I'm eager to delve deeper into these areas in the future.
As of April 2023, the system has the following specification:
Control Panel: 1 * 4 Core CPU & 4G Memory Virtual Server(Debian)
Hardware: 2 * 12 Core CPU & 16G Memory High-Performance Virtual Server(Debian 11)
Hardware: 2 * 24 Core CPU & 32G Memory VIrtual Server(Debian 11)
Software: MCSManager(as control panel) + Minecraft (multiple versions & modded proxies)
This project is comprised of a control system, four dedicated nodes, four to five Minecraft game servers, a web page, a web forum, an in-game skin management system, a database, and a status page. It took several years to develop all of these systems. For a detailed account of the entire development process, please refer to the history section.
The Minecraft server was hosted for our social club ASL(Aurora Studio League). If you are not familar with ASL, you can read more about it here.
To manage multiple game servers, a centralized control system was necessary. We utilized an open-source project called MCSManager to create a distributed control panel. Each virtual machine (node) was deployed with an agent capable of accepting commands, and a dedicated controller was deployed on a separate virtual machine along with a web panel. This enabled centralized management of multiple game servers through a single web interface. I heavily customized this software to meet my specific requirements. In 2022, with the successful deployment of the reverse proxy and load balancer, the control panel was separated and secured with an SSL-enabled frontend.
At present, there are four to five Minecraft servers hosted on four different nodes. Since players may become bored with the same type of content, we periodically replace servers with new ones featuring different mods and versions. As a result, the number of servers is not fixed. We have a lobby server that supports multiple versions and acts as a proxy to direct players to their destination servers. We also have a Vanilla server that's intended to keep saves forever and several mod servers that rotate on a regular basis.
At present, there are four dedicated virtual machines (VMs) for Minecraft servers. These servers are not only for my personal use (ASL), but also for some friends. The four VMs, consisting of two high-performance and two general performance servers, serve different roles:
- General performance VM A: Hosting servers like lobby or BungeeCord Proxy, where performance is not matter.
- General performance VM B: A parking server. For those servers that are ready to retire (only a few active players).
- High performance VM A: Hosting servers for all vanilla type: survival, creative, mini-games, etc.
- High performance VM B: Hosting all active modded servers.
The official web page for ASL. I have integrated minecraft servers with our other highlights like video editing. You take a look at it at: https://www.asleague.org.
The place where latest information was released and discussed (including Minecraft). For more information, take a look at the Web forum Project.
This system allows players to manage their skins from a single location, and provides game authentication that functions identically to the official Mojang services, using the same account as the web forum.
This system is built on a MariaDB database and a self-hosted open-source project called BlessingSkinServer. In conjunction with the web forum, we've created a fully self-sufficient environment for a complete gaming experience. This setup can be particularly useful when access to official services is unreliable.
As the project's complexity has increased, players have occasionally experienced connectivity problems with some of the services. It's challenging to manually address these issues every time, particularly since most problems arise from the user's end. To alleviate this issue, we've introduced a self-hosted status page using Uptime Kuma.
Rather than creating a separate status page solely for Minecraft servers, we've included all ASL services on the same page. Additionally, we've implemented a similar status page for the genetic analysis project.
For more information, please refers to Services & Status
- 2012: First Minecraft server. A single one based on rented services for roughly $2 per month.
- 2013: Establishment of ASL
- 2013: Minecraft server migrated to a Raspberry Pie.
- 2013: First Website(aurorabnds.com), hosted on the Raspberry Pie.
- 2014: Minecraft server migrated back to hosted service due to performance issue.
- 2016: Minecraft server migrated to self-hosted hardware (My first X86 server, with dual Xeon X5672)
- 2016: Multiple Minecraft servers hosted behind a BungeeCord proxy.
- 2018: Minecraft servers migrated to an upgraded hardware (Supermicro X10QBL with Quad Xeon E7-8895V2)
- 2018: Web Forum created.
- 2018: Primary domain changed to asleague.org
- 2018: Deployment of Control Panel
- 2019: Web Forum reloaded with enhanced security.
- 2022: Hardware migrated to my dedicated mini datacenter.
- 2022: Structure chagned and all things go distributed: multiple nodes, distributed control agent, reverse proxy for web, etc.