IT & InfrastructureVirtualization & Hosting4 min read

Self-Hosted Multi-Server Platform

I designed, deployed, and ran an internet-facing, multi-server environment from scratch: XenServer virtualization on home-lab hardware, CentOS VMs administered over SSH, a BungeeCord proxy in front of the backend servers, port forwarding and a DMZ for external access, custom Java plugins with SQL-backed storage, and a team of 8 to 10 people. The platform hosted game servers; the work was real systems administration.

Role
Owner: design, deployment, development, operations, and team management
Timeline
2018 – 2021
Infrastructure
Physical servers, XenServer, CentOS VMs, BungeeCord proxy
Team
8 to 10 administrators, builders, and moderators

Summary

The challenge

Run a multi-server environment that real users connected to from the internet, keep it available, limit what was exposed, and coordinate a team doing the work alongside me.

What I did

Virtualized physical servers with XenServer, administered CentOS VMs over SSH and PuTTY, put a BungeeCord proxy in front as the single entry point, configured port forwarding, NAT, firewall rules, and a DMZ, wrote Java plugins with SQL persistence, and troubleshot from logs.

The outcome

A live, multi-server platform that served a real user community, and early, first-hand experience with the security trade-offs of exposing services to the internet.

Skills

  • CentOS Linux
  • XenServer
  • SSH & remote admin
  • Port forwarding & NAT
  • DMZ
  • Proxy services
  • Java
  • SQL
  • Log analysis
  • Team leadership
On this page
  1. Overview
  2. Infrastructure architecture
  3. Linux administration & remote management
  4. Networking & external access
  5. Java plugin development
  6. SQL & data persistence
  7. Configuration management
  8. Troubleshooting & operations
  9. Leading the team
  10. Cybersecurity relevance
  11. Skills demonstrated

Overview

This project meant designing, deploying, and maintaining a self-hosted, multi-server environment entirely from scratch.

The platform hosted game servers, but 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: provisioning VMs, managing Linux servers remotely, writing and deploying custom software, configuring network exposure, reviewing logs for incidents, and leading a team of administrators.

Why this belongs in a security portfolio

Managing internet-facing services, configuring port forwarding and a DMZ, controlling access, analyzing logs, and maintaining availability are core security operations skills. This project gave me early, hands-on experience with the thinking cybersecurity requires: understanding systems, identifying weak points, monitoring behavior, and balancing functionality with security.

Infrastructure architecture

The environment ran on physical servers in a home lab, with XenServer as the virtualization platform to create and manage multiple CentOS virtual machines, each serving a different role.

Each server instance needed its own port assignment. BungeeCord acted as the proxy layer: players connected to a single public endpoint and were routed to the backend servers. That gave me hands-on experience with proxy services, backend segmentation, and multi-server application design.

Linux administration & remote management

Most server management happened on the Linux command line over SSH. My remote administration toolkit:

  • SSH and PuTTY for remote terminal access to the CentOS VMs
  • FTP and file transfer utilities for deploying configuration files, plugins, and updates
  • Remote desktop for tasks that needed a GUI

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. That built practical experience with Linux process management, file permissions, service configuration, and operational support in a live environment.

Typical day-to-day tasks
# Review server logs for errors or crashes
tail -f /opt/server/logs/latest.log

# Check service status
systemctl status server-instance-1

# Deploy an updated plugin
scp plugins/myplugin.jar user@server:/opt/server/plugins/

# Restart the service after a change
systemctl restart server-instance-1

Networking & external access

To allow external connections, I configured port forwarding rules that map external traffic to internal server ports, and set up a DMZ so the server environment could be reached from the public internet while staying partially isolated from the primary home network.

  • Public vs. private IP addressing and NAT
  • Port forwarding rules mapping external ports to internal service ports
  • A DMZ: a partially isolated zone for public-facing services
  • Firewall rules controlling which ports were accessible
  • BungeeCord proxy configuration with port assignments for each backend server
Security lesson learned

Exposing services to the internet from a home network creates real attack surface. This gave me early awareness of the risks of public-facing services, such as unauthorized access attempts and DDoS-style disruption, and of the importance of exposing only what’s necessary. Those are the same risk decisions security teams make in production.

Java plugin development

To extend the environment beyond its default capabilities, I wrote custom Java plugins. That required:

  • Working with a server-side Java API and its event-driven programming model
  • Writing, compiling, and deploying Java classes and methods
  • Reading console output and log files to debug stack traces
  • Finding and resolving plugin conflicts and configuration issues
  • Managing a configuration file for each plugin

Debugging in a live environment, where errors affected active users, taught me to read stack traces, isolate issues, and test fixes carefully before redeploying.

SQL & data persistence

Some plugins needed persistent storage for player information, permissions, and platform records, so I integrated SQL-backed storage for systems that track activity, manage roles, and keep plugin data across sessions.

  • Configuring database connections for the Java plugins
  • Understanding how application code interacts with SQL databases
  • Keeping reads and writes reliable in a multi-user environment
  • Troubleshooting database connectivity and permission issues

Configuration management

A large part of the work was configuration: server properties, BungeeCord settings, plugin configs, permissions files, port assignments, and database connection settings.

A small error in any of them could stop a server from starting, break player permissions, make a plugin fail, or block players from connecting. That made me careful about editing configuration and taught me to validate every change by testing the service after deploying it, which is the same discipline behind change management.

Troubleshooting & operations

Running a multi-server environment with real users meant continuous troubleshooting. Common incidents:

  • Server crashes: investigated through log files to find Java exceptions or configuration errors
  • Plugin errors: traced through stack traces to 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 permissions

That loop is the same methodology used in SOC analysis, incident response, and systems administration. I often had to make these calls under pressure, while players or staff were affected by downtime or bugs.

Leading the team

I managed a team of roughly 8 to 10 people who helped operate and build the community. Some built in-game environments; others served as administrators or moderators responsible for keeping order.

As the owner, I assigned responsibilities, managed access, coordinated tasks, set expectations, and made the final technical and administrative decisions. It was leadership experience in a technical environment where both infrastructure reliability and user experience mattered.

Cybersecurity relevance

  • 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 config errors 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

Skills demonstrated

CentOS LinuxXenServerSSHPuTTYFTP / SCPLinux CLIPort forwardingDMZ configurationNAT / routingFirewall rulesBungeeCord proxyJava developmentSQL / database integrationLog analysisConfiguration managementService managementTroubleshootingTeam leadership

Hiring for this skill set? I’m open to SOC, security analyst, and IT roles, and I usually reply within 24 hours.