Skip to content

gabrielmiller/homelab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Home Lab

I run a home lab to self-host a handful of services. My goal in doing this is to own my data and pick up some basic IT/Networking/Ops experience. My home lab lives on a single network. It spans several devices and services. This document outlines things at a high-level. Deeper in this repo you'll find configuration for the network, machines, and services.

Network

Devices

  1. Verizon FiOS ONT - This is the WAN network ingress/egress
  2. Gigabit wired router - I use a gigabit wired router. It's a mikrotik RB760iGS.
  3. Switch x2 - I have two gigabit wired switches. These are both mikrotik rb260gs units.
  4. Wireless AP x2 - I run two ubiquiti gigabit wireless access points on different sides of my house. There's a masonry column in the middle of my house that forms a wifi shadow if I only run one access point. I run one on each side of it for better coverage. Both emit the same SSID but on different channels.
  5. Uninterruptible power supply x2 - All noted equipment resides on UPS runs, through a mixture of power cords and PoE. There's enough in the batteries for several hours of power loss.

Devices

Low-power server

This is the heart of my home lab setup. I have a Orange Pi 5 Plus running linux. The hardware is low power so I am content leaving it running 24/7. This is also on one of the UPS runs so it won't be interrupted by intermittent power losses.

I opted to install a UEFI on the system in order to be able to run a generic ARM mainline linux. Kernel 6.15 is when most of the necessary drivers for the orange pi 5 plus became available. You can read details about that here. That limits your OS options unless you're willing to build your own kernel, which I am not. I decided to run fedora and plan to eventually use debian when kernel 6.15 is in it. A useful reference for initially configuring the hardware can be read here.

I run a number of services on this machine:

  1. Portainer is a web ui and management system for containerized workloads. I use it to orchestrate all of the services noted. I'm generally happy with it. I like that you can point it at compose files in web-hosted git repositories. That lets me keep my compose files in this repository and reduces the amount of manual setup required. I use the podman flavor of it.
  2. Pi Hole is a dns server that swallows requests to known ad networks, making it serve as a network-wide adblocker. Internally I use static IPs. This makes for easy setup of internal dns records.
  3. Photoprism is a server that catalogs images. There a few services under its umbrella, including a WebDAV server where you can sync files to/from your devices, workers that index and run machine learning algorithms against your photos, and a webapp to actually view the images.
    • I use Photosync on both android and ios to push my photos from mobile devices. This works like a cheapo version of cloud consumer photo syncing.
    • I wrote my own public photo-sharing capabilities into my personal website a few years ago. Photoprism has since added their own capabilities, but I still kind of prefer the way I went about it.
  4. Home Assistant is a service that records and serves metrics on devices. I use it to record power usage of my devices. I use several plugs that utilize esphome firmware so that I have greater control of the data being collected by these devices.
  5. A reverse proxy for a couple websites. I'm running caddy so that it auto-renews TLS certificates.
  6. A web-application to remotely start and stop the GPU server machine and chatterbox service on it. This is a little bespoke application.

GPU workload server

In June 2025 a text to speech(TTS) AI model named chatterbox was released. I stumbled upon a project that packaged it in a compose file alongside a webserver. After a little tinkering I had my own server running and I quickly found myself getting a kick out of generating ai voice material. Soon after I built this machine with dedicated hardware to run chatterbox. Services:

  1. Chatterbox-TTS is the original repo for this project. I made a couple little alterations to it for convenience, in the various branches in my fork here.

Future plans

  • Add a more robust way to manage when the GPU server should be turned on and off. Right now I have to remember to turn it off when I'm done using it.
  • I don't have a great backup solution for my photos. I currently make a couple copies every december 31 on various hard drives and I also burn a blue ray disc with that year's worth of photos. I intend to set up a cron to regularly sync these files to a service like S3 to have more peace of mind.
  • It would also be nice to hook up more automation between photoprism and my personal photo sharing site so as to not have to manually do a number of steps to deploy new content.
  • Consider ways to further automate container orchestration with portainer. There's a terraform provider for it, which I could use to reduce manual configuration steps whenever I next make changes to my network topology or devices.

About

My home lab setup

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors