The Expanding Home Server

The reason I built my server was simple. I’m switching careers and have no professional IT experience under my belt, aside from computers being a part of my hobby. I figured I had to have something to show for other than just the basic IT certifications. A piece of paper saying you studied and memorized something is “cool” but how do you demonstrate your knowledge in the field? Well, building this server was one way I chose to do that.

RAID 1 (MDADM)

               I wanted to effectively stop paying for a cloud service for my personal media backup but it’s hard to beat their reliability. Not once have I had any downtime, or any loss of data when using those platforms. I thought, well why can’t I create the same service for myself? The problem is, cloud storage is very reliable, easily scalable, secure, and has great uptime. So for now, it is still more convenient.

Samba Fileshare (SMB)

  • I also wanted to have a local Fileshare server that can be used across multiple devices, operating systems, and users. I had this setup at my previous job and it worked flawlessly.

Headless + XRDP

  • At this point, I was tired of sharing peripherals between my gaming PC and server. The server also used WiFi instead of Ethernet because of my router’s location. Though as convenient as WiFi is, dropping packets is not ideal for a dedicated server environment, so I had to look up how to solve this. XRDP was one that stood out. In my home, I have 4 Windows Machines, an iPhone and a Samsung device, all of which I can use Microsoft’s RDP protocol to remote into my Linux machine.

Static IP

  • When using RDP, if on a LAN, you enter the machine’s internal IP and port number (if different from the default). I noticed one day after rebooting the Linux machine, I couldn’t RDP into it anymore. After some basic research, I was led to check the internal IP and it turned out that my original IP of (192.168.1.X) had changed to (192.168.1.Y).
  • So easy, right? Just enter the new IP address and port and it worked. I knew immediately this would be annoying to check every time and would be a problem down the road when I want to actually host things. Luckily Ubuntu makes this process easy, and I was able to change it from the GUI menu in the top right.

Virtual Machines

  • Okay everything is working perfectly at this point and I know Linux can be incredibly fragile if not configured correctly, so I didn’t want to “practice” deploying new software to my operational machine. One solution to this was Virtual Machines.
  • So I downloaded the free version of VirtualBox and installed another copy of Ubuntu, a copy of Windows 11, and MacOS Ventura.
  • Most new of the new complex software programs that I download are appropriately configured on the Ubuntu VM first before deploying it to my operational machine.

SSH

  • XRDP used too much bandwidth and my inputs were slightly delayed when typing and using the mouse cursor. I wanted something a bit simpler. I wanted to use a terminal from any machine without worrying about bandwidth considerations and whether RDP was installed. Also… security….
  • Late to the game, I discovered SSH would solve this.

Plex Media

  • Another problem I wanted to solve was plugging the plugging and unplugging of my external hard drive to transfer media for consumption. Not only that, I could share media with friends and family, not to mention, stream it from my phone while abroad!
  • Plex was pretty easy to set up and configure and only took about 30 minutes to fully configure

OpenVPN Server

  • Of course every home server should have a VPN to encrypt internet traffic and conceal their IP address. I wanted something open source and “free of charge”. OpenVPN was exactly that… well almost exactly. I just had to pay for a platform for hosting.

FilezillaFTP

Since Samba was a local area storage solution, I needed something to access my files from anywhere in the world via FTPS.

Resource/Service Monitor

  • A visual dashboard of my Linux resource/service usage

Docker

  • VMs were fun to play around with but required its own share of hardware resources and a completely new OS to run different services.
    • Docker Compose
      • WordPress (and mysql) – Running this website you see right now!
      • NGINX – Used as a reverse proxy