This is post two in a development diary I am writing on setting up a new homelab in my home office. In the last post I discussed the reasons why I decided to go with the homelab route as opposed to some far simpler routes to handle my current needs. This time I wanted to discuss the steps I believe I need to take to meet my initial goal:

A containerized database server for my larger (> 10 GB) development databases in a homelab environment.

Step 1: The development diary

I wanted to ensure that I was recording my reasoning and process for the system as I went along through the process. Therefore, you are reading the product of step 1 of my process - the development diary site. At the moment, I am hosting this in Github, but I may mirror this locally in my homelab at a point in the near future.

Step 2: The virtualization server

The core of any homelab seems to be a virtualization server, at least initially. This server should be able to host both full virtual machines (essentially a part of a computer that is walled off and treated as if it was running on its own hardware) and containers (lean virtual machines that run a pared down version of a full VM).

A better description of a virtual machine can be found at VM Ware.
This company has been in the business for a very long time and, in my professional experience knows what they are talking about. However, I can’t afford the VMWare software for my home computer.

The big player in the container space is Docker and that is what I plan on using.

As for a homelab virtualization server, it seems that Proxmox is the current choice for most homelab builders right now. Specifically, the community version of Proxmox VE is what is used right now.

Step 3: A container host

There is just one major issue with Proxmox - it does not support Docker containers. Instead, they use LXC (pronounced Lex Cee) for thier containers which limits the options somewhat. So, I need a VM hosting a container server. There seem to be two options here:

For my use, it seems that I should use Portainer for now. However, that is the advantage of a homelab - if you don’t like one thing, try another.

Step 4: A control center

Since setting up a service to contain links to all my services is not difficult once the container host is setup, that is what I plan on doing next. My thought is to stick with the community favorite: Heimdall.

Step 5: The database server

At this point, I can setup the actual database server as a container. The one trick is allocating enough resources to the server (specifically disk space and memory) to handle the larger databases I have to deal with.

Future steps

  • DNS: Despite having Heimdall setup, I would still like to be able to reference my services by name. This may help.
  • PiHole: Getting my network setup through PiHole might be useful. It is certainly a favorite to prevent unwanted tracking and ads
  • Project tracking: Either through Azure DevOps or through something like Trello