Category Archives: General

Information and overviews of a general nature.

Effective Strategies for Using Git in Your Home Lab

Estimated reading time: 2 minutes

Once you get beyond the basics of setting up your Home Lab and some basic services, you’ll face new challenges. You’ll need to preserve and document your setup.

Configuration Management

Visual Studio Code - A Tool for Application/Configuration Development and Maintenance
Visual Studio Code – A Tool for Application/Configuration Development and Maintenance

We’ve been using a combination of Visual Studio Code, Git, and GitHub. These tools allow us to save configuration information, protect Secrets, and keep the ability to roll back to earlier configurations.

Understanding Git

Central to our workflow is Git. We use it to track changes. It helps us create variations for testing and bug fixing. It also maintains official production versions of the configuration files for our Home Lab. Additionally, the video above is one of the best. We have found it invaluable for understanding the concepts behind Git branches and trunks. This helps us use them properly in our workflows.

Strategies for Applying Git

Once you have the concepts behind Git, you’ll face a decision. You need to choose your approach for using it in your workflows. The answer to this question is not easy. It depends on the nature of your projects and your desires. It also depends on the capabilities of the team that you are working with.

The video above covers some commonly used Git Workflows. Most of our Home Lab projects and apps result in the latest version of an application. This version or configuration runs in production. Given this, can you guess what Git Workflow we use? Watch the video and see if you can figure it out.

Key Takeaways

  • Home Lab setups need careful documentation and configuration management to overcome challenges.
  • We use Visual Studio Code, Git, and GitHub to save configurations and manage Secrets.
  • Understanding Git is essential for tracking changes and maintaining production versions in our Home Lab.
  • Choosing a Git workflow depends on the project’s nature, the team’s capabilities, and personal preferences.

Something New – We’ve added a Blog!

Estimated reading time: 3 minutes

We have several new projects underway for our Home Lab and the services it provides. We’re adding a Home Lab Blog to share current projects and information! We are doing this to help our readers follow our progress and learn about our projects.

We are also enabling our readers to comment on our Blog. This enables us to answer questions and allows our readers to shape the direction of our Home Lab.

Projects We Are Working On

We have several new projects that we are working on, including:

  • An enterprise-level upgrade to our Core Network that enables high-availability and expanded capacity in our core network and Internet connectivity
  • Enhancements to our Proxmox Test Node to create a second 3-node high-availability Proxmox Cluster for staging and testing.
  • A new Artificial Intelligence-based Camera system
  • A rebuild of our fiber network to improve patching, capacity, and reliability
  • Several software development projects that use Artificial Intelligence and Agentic Engineering to create new applications
  • We are expanding our support for the Amateur Radio Emergency Data Network (ARDEN). This expansion covers the New England region in the United States.
  • Expanding our Home Automation Capabilities.

Project Previews

Here are a few images from our in-progress projects.

We hope that you’ll check our Home Lab Blog often and follow/comment on our progress!

Raspberry Pi NAS 2

Raspberry Pi NAS 2
Raspberry Pi NAS 2

We’ve built a second NAS and Docker environment using another Raspberry Pi 5. This NAS features four 2.5 in 960 GB SSD drives in a RAID-0 array for fast shared storage on our network.

Raspberry Pi NAS Hardware Components

Raspberry Pi 5 Single Board Computer

We use the following components to build our system –

I had five 960 GB 2.5″ SSD drives from a previous project available for this project.

The following video covers the hardware assembly –

We used a 2.5 GbE USB adapter to create a 2.5 GbE network interface on our NAS.

2.5 GbE USB Adapter
2.5 GbE USB Adapter

The configuration of the Fan/Display HAT top board is covered here.

FAN/Display Top Board
FAN/Display Top Board

This board comes as a kit that includes spaces to mount it on top of the Raspberry Pi 5/SSD Drive Interface HAT in the base kit.

Software Components and Installation

We installed the following software on our system to create our NAS –

CassaOS

CasaOS Web UI
CasaOS Web UI

CasaOS is included to add a very nice GUI for managing each of our NUT servers. Here’s a useful video on how to install CasaOS on the Raspberry Pi –

Installation

The first step is to install the 64-bit Lite Version of Raspberry Pi OS. This is done by first installing a full desktop version on a flash card and then using Raspberry Pi Imager to install the lite version on our SSD boot drive. We did this on our macOS computer using the USB to SATA adapter and belenaEtcher.

We used the process covered in the video above to install CasaOS.

Creating a RAID

We choose to create a RAID-0 array using the four SSD drives in our NAS. Experience with SSD drives in a light-duty application like ours indicates that this approach will be reasonably reliable with SSD drives. We also backup the contents of the NAS daily to another system via Rsync to one of our Synology NAS drives.

RAID-0 Storage Array
RAID-0 Storage Array

CasaOS does not provide support for RAID so this is done using the underlying Linux OS. The process is explained here.

File Share

CasaOS makes all of its shares public and does not password-protect shared folders. While this may be acceptable for home use where the network is isolated from the public Internet, it certainly is not a good security practice.

Fortunately, the Debian Linux-derived distro we are running includes Samba file share support, which we can use to protect our shares properly. This article explains the basics of how to do this.

Here’s an example of the information in smb.conf for one of our shares –

[Public]
    path = /DATA/Public
    browsable = yes
    writeable = Yes
    create mask = 0644
    directory mask = 0755
    public = no
    comment = "General purpose public share"

You will also need to create a Samba user for your Samba shares to work. Samba user privileges can be added to any of the existing Raspberry Pi OS users with the following command –

# sudo smbpasswd -a <User ID to add>

It’s also important to correctly set the shared folder’s owner, group, and modes.

We need to restart the Samba service anytime configuration changes are made. This can be done with the following command –

# sudo systemctl restart smbd