CategorySystems Administration · Linux · Networking · Java Development
InfrastructurePhysical servers, XenServer virtualization, CentOS VMs, BungeeCord proxy
ToolsXenServer, CentOS, SSH, PuTTY, FTP, Java, SQL, Port Forwarding, DMZ
RoleOwner - full lifecycle: design, deployment, development, operations, team management
Team8–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 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.

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

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.

Physical ServerHome lab hardware
XenServer HypervisorVM management platform
CentOS Virtual MachinesMultiple instances, separate roles
BungeeCord ProxyCentral entry point, proxies to backend servers
Port Forwarding / DMZExternal 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 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.

Common operational tasks
# Review server logs for errors or crashes tail -f /opt/server/logs/latest.log # Check service status systemctl status server-instance-1 # Deploy updated plugin via SCP scp plugins/myplugin.jar user@server:/opt/server/plugins/ # Restart service after change systemctl restart server-instance-1

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
Security lesson learned: Exposing services to the internet from a home network creates real attack surface. This experience gave me early awareness of the risks of public-facing services: unauthorized access attempts, DDoS-style disruption, and the importance of only exposing what is necessary. These are the same risk decisions that security teams make in production environments.

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

Skills Demonstrated

CentOS Linux XenServer SSH PuTTY FTP / SCP Linux CLI Port Forwarding DMZ Configuration NAT / Routing Firewall Rules BungeeCord Proxy Java Development SQL / Database Integration Log Analysis Configuration Management Service Management Troubleshooting Team Leadership