Self-Hosted Multi-Server Platform with Linux, Virtualization & Networking
Designed and operated a multi-server environment using virtual machines, Linux administration, a BungeeCord proxy, port forwarding, DMZ configuration, Java plugin development, SQL-backed persistence, and log-based troubleshooting, while managing a team of 8 to 10 people.
| Category | Systems Administration · Linux · Networking · Java Development |
| Infrastructure | Physical servers, XenServer virtualization, CentOS VMs, BungeeCord proxy |
| Tools | XenServer, CentOS, SSH, PuTTY, FTP, Java, SQL, Port Forwarding, DMZ |
| Role | Owner across the full lifecycle: design, deployment, development, operations, and team management |
| Team | 8 to 10 administrators, builders, and moderators |
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 closely mirrors real-world systems administration and cybersecurity: virtualization, Linux administration, remote access, network configuration, software development, database integration, and team management.
I owned 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.
↓
XenServer Hypervisor · VM management platform
↓
CentOS Virtual Machines · multiple instances, separate roles
↓
BungeeCord Proxy · central entry point, proxies to backend servers
↓
Port Forwarding / DMZ · external access from the internet
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 gave me hands-on experience with 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 and 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 that map external ports to internal service ports
- DMZ configuration, a partially isolated zone for public-facing services
- Firewall rules that control which ports were accessible
- BungeeCord proxy configuration with 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 and 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 and 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 to identify Java exceptions or configuration errors
- Plugin errors, traced through stack traces to find conflicting plugins or bad config files
- Connectivity problems, diagnosed by checking port forwarding, firewall rules, and NAT behavior
- Permission issues, reviewed and corrected across 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 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