Project Overview
This project involved designing, deploying, and maintaining a self-hosted multi-server environment entirely from scratch. While the platform hosted game servers, the technical work involved - virtualization, Linux administration, remote access, network configuration, software development, database integration, and team management - closely mirrors real-world systems administration and cybersecurity work.
I was responsible for the full lifecycle of the environment: provisioning VMs, managing Linux servers remotely, writing and deploying custom software, configuring network exposure, reviewing logs for incidents, and leading a team of administrators.
Infrastructure Architecture
The environment ran on physical servers in a home lab, using XenServer as the virtualization platform to create and manage multiple CentOS virtual machines - each serving a different role in the network.
Each server instance required its own port assignment. BungeeCord acted as a proxy layer - players connected to a single public endpoint and were routed to backend servers. This architecture introduced real concepts around proxy services, backend segmentation, and multi-server application design.
Linux Administration & Remote Management
The majority of server management was done through the Linux command line via SSH. Tools used for remote administration included:
- SSH and PuTTY for remote terminal access to CentOS VMs
- FTP/file transfer utilities for deploying configuration files, plugins, and updates
- Remote desktop for tasks requiring a GUI interface
Day-to-day operations included starting and stopping services, managing directories and permissions, editing configuration files, reviewing server logs for errors, and restarting services after configuration changes. This gave me practical experience with Linux process management, file permissions, service configuration, and operational support in a live environment.
Networking & External Access
To allow external connections, I configured port forwarding rules to map external traffic to internal server ports, and set up a DMZ so the server environment could be reachable from the public internet while partially isolated from the primary home network.
Key networking concepts applied:
- Public vs. private IP addressing and NAT
- Port forwarding rules - mapping external ports to internal service ports
- DMZ configuration - partially isolated zone for public-facing services
- Firewall rules - controlling which ports were accessible
- BungeeCord proxy configuration - port assignments for each backend server
Java Plugin Development
To extend and customize the server environment beyond default capabilities, I wrote custom Java plugins. Plugin development required:
- Working with a server-side Java API (event-driven programming model)
- Writing, compiling, and deploying Java classes and methods
- Reading server console output and log files to debug stack traces
- Identifying and resolving plugin conflicts and configuration issues
- Managing configuration files for each plugin
This gave me practical software development experience in Java within a backend/server-side context. Debugging in a live environment - where errors affected active users - taught me how to read stack traces, isolate issues, and test fixes carefully before redeploying.
SQL & Data Persistence
Some plugins required persistent data storage for player information, permissions, and platform records. I integrated SQL-backed storage for systems that needed to track activity, manage roles, and store plugin-specific data across sessions.
This involved:
- Configuring database connections for Java plugins
- Understanding how application code interacts with SQL databases
- Ensuring reliable read/write operations in a multi-user environment
- Troubleshooting database connectivity and permission issues
Troubleshooting & Operations
Running a multi-server environment with real users required continuous troubleshooting. Common incidents included:
- Server crashes - investigated via log files, identified Java exceptions or configuration errors
- Plugin errors - read stack traces, identified conflicting plugins or bad config files
- Connectivity problems - diagnosed port forwarding issues, firewall rules, and NAT behavior
- Permission issues - reviewed and corrected user, admin, and plugin permission configurations
My approach to every issue: observe the symptoms, collect evidence from logs, isolate the cause, apply a targeted fix, verify stability. This troubleshooting methodology is the same one used in SOC analysis, incident response, and systems administration.
Cybersecurity Relevance
This project directly connects to cybersecurity through several areas:
- Internet-facing service management - understanding the real implications of public exposure
- Access control - managing permissions for users, admins, and automated systems
- Log analysis - reviewing logs to identify errors, unusual behavior, and operational incidents
- Configuration management - small errors in config files can break services or create vulnerabilities
- Network attack surface - first-hand experience with the risks of hosting public services
- Availability and reliability - maintaining uptime while troubleshooting active issues