Home Built Server Rack

Finished Product

In order to organize my lab a bit better, I decided to custom build a server rack. This was to be the same height as my desk and also be usable as more work surface area. I determined that a 15u rack would be the the best size, and it would give me some room to grow as well since i only currently have a few things that can fit in the rack (The Fractal Design Define XL R2 is far too big to fit, so its just the vhost, networking equipment and some RPIs). First off, the design, which ended up being slightly incorrect on sizing of one of the components.

Continue reading “Home Built Server Rack”

DNS Structure

The goal of the DNS structure of my lab was primarily to create a very stable foundation. Second to that, was the addition of two services, the first a local DNS server to avoid loopback issues with my ISP, and the second was pihole ad blocking.

To set this up, UCS was chosen as a domain controller/DNS server over FreeIPA. Linux was chosen as the platform of choice as that is what a majority of my systems are, and I don’t have any windows server licenses. UCS was installed to a VM, and a second ubuntu VM was configured with PiHole. These were configured to handle local queries first, then everything else. If one of my local DNS servers is down, the clients won’t notice a change as everything uses Google DNS as backup.

Installing OctoPi on an RPi

3D printers have come a long ways in the past few years. The prices have plummeted for basic units, allowing anyone to buy them. The raspberry pi can be setup alongside a basic 3D printer to enable some amazing functionality. They can allow remote control, management, and monitoring of the printers. When combined with a pi cam, you can even create time lapses of the prints.  To do this, we will be running OctoPi on the raspberry pi.

OctoPi is a Raspberry Pi distribution for 3d printers. Out of the box it includes:

  • theOctoPrint host software including all its dependencies and preconfigured with webcam and slicing support,
  • mjpg-streamer for live viewing of prints and timelapse video creation with support for USB webcams and the Raspberry Pi camera,
  • CuraEngine 15.04 for direct slicing on your Raspberry Pi and
  • the LCD app OctoPiPanel plus various scripts to configure supported displays

Continue reading “Installing OctoPi on an RPi”

Installing MotionEyeOS on an RPi

Raspberry Pis are neat little computers that can be placed just about anywhere assuming there is power and network connectivity nearby. These were made even more convenient with the addition of built in Wi-Fi on the Raspberry Pi 3. One application of these small devices is for home security, as a small motion sensing webcam that can record 24/7, or only when there is motion detected.

There are ways to build up your own system using the basic raspbian distribution and various software packages, or you can use a custom built operating system for this purpose, MotionEyeOS.

MotionEyeOS has everything needed to run a security camera system, or simply a remote webcam monitoring system. This will cover setting up a camera in this tutorial for basic recording and monitoring. This will let us spy on our dog while away at work. Continue reading “Installing MotionEyeOS on an RPi”

VHost Build

I started looking at servers for a new vhost for a few months, trying to determine what I would need, and what I could utilize. I was running out of RAM in my NAS to run virtual machines, and I was running into odd times when I wanted to reboot my NAS for updates, but didn’t want to reboot my entire lab. So I came to the decision to build a new server that would host the virtual machines that were less reliant on the NAS (IRC bots, websites, wiki pages, etc) as well as other more RAM intensive systems.  The new server was to have a large amount of RAM (>32GB maximum), which would give me plenty of room to play. I plan on leaving some services running on the NAS which has plenty of resources to handle a few extra duties like plex, and backups. The new VHost was also to be all flash, the NAS uses a WD black drive as the virtual machine host drive, which ends up slowing down when running updates on multiple machines. I may also in the future upgrade the NAS to a SSD for its cache drive and VM drive.

Here is what I purchased:

Continue reading “VHost Build”

The Side Effects of RAM Issues

I have been fighting failing parity checks for a few months now on my unraid server. I looked into each disk, checked smart stats and even thought I had found the culprit hard drive that was causing the issues. I still had it in my array but with no data on it just in case. This all happened just before another set of problems arose. The VMs on my server started acting up, crashing, and eventually when logging into one VM, everything crashed due to memory problems. I ran memtest and discovered that one of my RAM sticks was at issue, and from there determined that it simply wasn’t seated properly. After reseating the RAM, everything started working properly again. Parity checks come back clean, no more kernel panics, and the VMs are running stably. One partially unseated RAM stick caused all those issues.

Docker Struggles

I was originally excited when docker was going to be included in the next release of unraid, the concept behind it was solid and sounded like it would make management of my server easier. This was the case for months before docker started acting up. Now I’ve been working on a way to remove any need of docker on my NAS, moving it to a VM or another server due to its instabilities. Issues I’ve run into include it not being able to stop running containers, start stopped containers, create new containers, and preventing Linux from shutting down. I could live with all of the above except the shutdown bug. It doesn’t just prevent shutdown from running, but it prevents the kernel from shutting down at all, and well after the user shells are all offline, so there’s no way to manually kill docker to allow the system to shut down safely. This is exceptionally frustrating and has caused unclean shutdowns when I’ve lost power and even when I’m just doing maintenance, since the only way to restart when docker does this is to do a hard reset. I’m not giving up hope on containers, just going to be a bit more careful around docker, they seem to advertise quite well compared to issues people have had with their software.

NAS Build

I started my original NAS build with inexpensive quality consumer components, but by now its become a strange chimera of enterprise and consumer gear. The main goals: low power, quiet, high storage density

With the focus, the main decision was on a case, 8 hdd’s were the minimum number of bays, and having a few 5.25″ bays allowed me to use a 5×3 cage to add more hdd bays. From some research, it can also be found that another stack of hdd cages can be added to the case with relative ease, bringing the total number of disks held to ~21.

Case Fractal Design Define XL R2
CPU Intel Xeon E3-1245 v2
Motherboard Asrock Pro-4m
PSU Antec BP550
RAM Gskill Ripjaws X (32GB total)
HBA LSI 9201-16i
HDD Various
NIC Intel Pro/1000 VT, Chelsio dual port 10G SFP+
Extras Norco 5 x 3.5″ HDD Cage

Continue reading “NAS Build”

Ansible Setup

Having been running short on time to maintain my servers, I decided to look into some automation on that front. I came across Ansible, which allows management of multiple servers configuration and installation using some of the basic software that’s pre-installed: python and SSH.

Setting up ansible is the easy part. This can be done by simply setting up the Ansible host with SSH key based access to all machines that it will be managing. I set it up with root access to those machines so that it could do mass updates without problem or requesting dozens of passwords and because I don’t have Kerberos or a domain based login system. Continue reading “Ansible Setup”