I’ve decided to document the trials, tribulations, and a word that starts with “T” that means “I seriously contemplate suicide because this won’t do the thing I want it to do”. Let’s go with t…fuckingkillme. I’m going to break this down into sections, as each will have a different goal and solution. Keep in mind two things. One, I have no actual training in computers. All I know, I know from a wicked crazy amount of Googling, and flat out clicking things to see what happens. A lot of my struggle has simply been because I have no clue what I’m doing. Second, I’m doing this on a real, full fledged, grown up rack mount server. That is not a requirement. In fact, I would argue, that for what I’m trying to do, a regular computer would be easier, quieter, and less expensive. But I’ve done that before, and wanted to try something new. Plus I can’t have children, so I’ve got money to spend on silly stuff like this. These instructions should still work on a regular desktop computer.
Let’s start with the hardware. Also, quick shout out to Server Monkey. You could probably get this cheaper on eBay or Craig’s List, but Server Monkey does the heavy lifting for you, and their customer service was awesome. The person I talked to, Andrew, was very helpful with customizing the setup for what I wanted, in my price range.
I’m running a Dell R410, with dual Xeon processors, and 32 gigs of RAM (upgradable to 64). It has 4 hard drive bays, but I’m only using 2 (1TB each, mirrored in a RAID1 configuration). Sadly, the RAID controller that mine has can only handle up to 2TB drives. Had I known that, I would have upgraded, but oh well. The server is connected to a rack mounted UPS from CyberPower. But that doesn’t matter.
First, a few things about real servers. They are meant to be headless, that means, without a monitor attached. You need a monitor for the initial setup, but for the most part, we’ll be working on it from remote access. Mainly, you boot up, go through the configuration and make sure everything is working. Set the time, setup a static IP, etc. After you install the OS, you shouldn’t need to connect it to a monitor unless something goes terribly wrong. Also, they are loud. Very loud.
Here are my goals. I want a server that runs headless, hosts VMs, is stable, and has room for expansion. This server is replacing an old homebrew because it got too old. I had a bit of room for upgrades in the old server, but for the price, I might as well go all the way.
Now on to the OS. I chose XenServer because it is free and open source. Well, that and a few other things. There are quite a few options, including KVM, or Proxmox, or Hyper-V. I just randomly picked XenServer. It also has a lovely feature, called “pooling”. You can install XenServer on multiple computers, and it will link each of them and share resources. I won’t be using this for a while, but when I do upgrade, I can add more servers to the pool, and they can be used for redundancy (if one server goes down, the others pick up the slack). Or if you run out of hard drive space, you can use the space on the second server, etc. XenXerver is a “bare metal” OS. It is also “bare bones”. Bare metal, means that it runs directly on the hardware. That’s normal for a host OS. Bare bones means that it doesn’t have a lot of features. You won’t be able to watch YouTube or browse the internet on this. It’s sole purpose is to host virtual machines. That’s it.
A virtual machine is an operating system (guest) inside an operating system (host). With the exception of OSX, which is a pain in the ass, you can install just about any OS inside of a VM. There are a ton of benefits of using VMs. First, they don’t damage your host OS. So you could get a virus on your guest, and it won’t infect your host. You can also take snapshots of your guest VM. For instance, you can take a snapshot right after you’ve installed the OS and run updates. Then, let’s say you catch a virus. Simply restore to the snapshot, and the virus is gone. VMs are great for testing for that reason. If something breaks, just revert to the last known working snapshot.
I’m going to be running multiple VMs. One is going to run my Active Directory, another for piracy… I mean “purchasing” TV shows, etc. We’ll get into those in future segments.
Head over to the XenServer page, and download the latest (6.5 as of 2/13/2016) ISO. You want the Installation ISO, and the Management Console. Either burn the ISO to a DVD, using something like ImgBurn or to a flashdrive using Unetbootin.
I’m going to assume you know how to install an OS. It’s mostly just clicking on “yes/ok” and filling out information. Put the DVD/flash drive in the server and power it on. It should give your prompts to install. You want a static IP. You’ll have to check your router’s settings to make sure that it has one. A static IP doesn’t change. A dynamic IP does. You’ll need the IP address to access the server from the Management Console, so if the IP address keeps changing, you’ll keep having trouble connecting. Setup a static IP. For the sake of argument, let’s go with 192.168.1.101. Once installed, you’ll have to reboot.
Now, from a regular computer, that you’ll be using for the rest of the project, be it laptop or desktop, install and run the Management Console. Click “Add a Server”. Enter the IP address and login credentials you used when installing XenServer. From here, you control your server. You can add, remove, modify, and monitor your VMs.
In the next segment, I’ll show you how to install and setup a guest OS.