Server Setup
Primarily, my home lab is designed around two main servers, but a small cluster of Raspberry Pi computers is also used to provide an environment for tinkering.
Hardware Setup
My home network consists of two distinct sections: an area that allows users a typical home environment, and a more secure area that allows access to services provided by my servers. Nothing much of note happens with the regular section of the network, so it will not be discussed. Most of my homelab resides within the secured section, as it needs higher levels of security.
What makes this area more secure is that it is behind a pfSense firewall. The firewall blocks malicious and unwanted network connections. Within the secured area, there is a WIFI access point that allows users to connect to the secured area and access content that is inaccessible in the unsecured section.
The servers, named Ruby and Yang, provide most of the services, with Ruby being the primary server. The main service that Ruby provides is a NAS, or network attached storage, which allows users to store and access files on the server from their personal computer. I keep most of my files on this machine, and I frequently back up files here. Several other services are available on Ruby, such as Pi-hole to filter ads, and a MySQL database server. Yang, on the other hand, provides fewer services and is mostly used to back up the data on Ruby, in case the data is corrupted or wrongly deleted. Data stored on both servers is kept in a RAID6 storage pool, which means that multiple storage drives are used in combination, and up to two of these drives can fail without damage to the data occurring.
Finally, there is also a set of five Raspberry Pi Computers. These machines are kept mainly for learning, and are expendable as they do not host any major services. This way, I can experiment with new software and clustering without worrying about taking down an important service.
Software Setup
Primarily, the servers Ruby and Yang host the most important services. Both Ruby and Yang run the hypervisor Proxmox, which means they are able to host multiple computers on one machine by emulating the needed hardware. They are also clustered together, so access and communication between the servers is simplified. Most services are hosted on a virtual machine, an emulated computer, on Ruby that runs Docker. This Docker instance is managed by another virtual machine on Yang that is running Portainer. Outside of the virtual machines, Ruby also provides the NAS, and Yang provides backup services by pulling the data to its own storage pool from Ruby’s NAS.
The Raspberry Pi computers are not doing much at the moment, but I plan to cluster them and use them for learning specific technologies that I am interested in. Hadoop and Kubernetes are the two main plans I have for the Raspberry Pi computers, with Hadoop being focused on distributed data analytics, and Kubernetes being focused on container orchestration.