Now that my new site is mostly set up, I figure my first official post should be about the history of PCXServer. Though looking back after I had wrote some of this, I see that this could be quite boring for some (all?) to read. Don’t worry, I’ll write some real stuff soon.
Like most great stories, this one begins with the game Unreal Tournament ‘99.
UT99 is a twitch shooter, where you run around in first person view and try to frag the opposing players. When I was introduced to the game by my dad, I instantly fell in love with it, and quickly got all of my friends to play it with me. We would have LAN parties with ten of us playing together at a time. Good times were had.
One of the cool things about the game is that it keeps track of everything that happens in each match. Every item picked up, to every shot fired, to every kill, it was all logged. Conveniently, you could also use an included program to parse these logs and generate an html file that would list cool stats, the idea being you could host these on a server for all to see. The script wasn’t perfect, as it couldn’t handle the custom mods and mutators we were using, so I searched for an alternative. I stumbled upon UTStatsDB, which could handle pretty much any log you could throw at it. The problem was, it was written in PHP, using a MySQL database. I had no idea what any of that meant. And so, my journey to hosting a server began.
My first server was an old HP laptop (sporting a 1024x768 screen and a floppy drive) running Windows XP and the XAMPP stack (Apache server, MySQL, PHP, and Perl). I was able to get a domain name through some free NoIP type thing, and just like that, I had my very own server. It wasn’t great, but it processed and hosted the stats page for the game. Conveniently, since it was still a laptop, I could use it to create new PHP sites, which were used in high school by my peers. I had an ambitious project to create a full webmail experience, which at the time was impressive, but to today’s standards is obviously quite embarrassing.
But that wasn’t enough. I had been reading about something called Linux, which could serve my websites more efficiently. I figured anything could be better than Windows, so I backed up all my files, wiped the hard drive, installed Ubuntu Server… and then proceeded to spend the next day trying to wrap my head around what permissions, SSH, packages, and a terminal were. It’s funny looking back, since nowadays the terminal is my friend and all of that stuff makes complete sense to me. But back then? Someone who grew up using Windows and was used to double clicking things to install other things? I was lost.
Eventually I slogged through one of the many internet articles detailing what packages to install to set up a basic Apache/MySQL/PHP server, and then set up SSH for remotely editing files. That was it. My first true always-on server. A crappy laptop with Ubuntu Server on it. With it I learned a ton of server administration skills, and developed a love for the simplicity of Linux.
Years later, my dad brought home a decommissioned server from his work. In addition to it not being a laptop, it could hold multiple hard drives, and had two server grade processors. With that, I was able to host the Unreal Tournament server (before that I was only sending the logs to the server; I would host it on my own computer when we wanted to play), a Minecraft server, Mumble server (VoIP chat server), Owncloud (self hosted Dropbox like service), my own PHP projects, and many other things. Anything I wanted to do or learn, I could use the server, from anywhere in the world.
Then one day, that old server just stopped responding. My website up-time alerts all went off and I couldn’t figure out how to SSH back into it to see what happened. Maybe the IP address to it changed? Maybe the power went out to it and somehow never came back up? With some debugging over the phone with my dad (he had the server in his basement), we figured out that the power supply on the server itself died. Can’t really fix that. Luckily, I keep many backups, so I hadn’t lost all that much.
That’s about it. For those wondering, my current server is worlds better than those old servers, and is hosting many more services. Most everything is hosted in Docker containers, which is something new I have been messing with. Any new service I want to use or provide to my friends, I can just spin up a container, and it just works. I also think that self hosting is nice, because all of my data is truly mine. I don’t need to rely on a third party with it, and don’t need to wonder if they are doing weird things with it.
Thanks for actually taking the time to read all that. Hopefully my extensive background of working with my server can supply some cool tutorial posts in the future!