Homelab Setups

What kind of setup are people using? My primary system is on two mini-PC nodes, a couple of macs, a couple of PIs, one ATOM edge as a squeezebox and a Home Assistant green.

The mini-PCs both have ProxMox with seven VMs, several of which run a slew of Podman containers. I moved away from Docker to establish a more secure rootless setup.

My PI4 runs Pi-Hole as a DNS and DHCP server, plus a qdevice to give proxmox a quorum.

My operations are built on Gitea and Ansible, running rootless with a robust set of workflows and playbooks to handle bootstrapping and maintenance. An nginx reverse proxy is the last pieced of infrastructure.

Is this similar to what other people are doing?

Three junked Dell micro PC’s from Ebay (loaded with 32GB memory and mirrored 500GB ssds) running proxmox and a bunch of container/vms running dockers, a 140TB beast that I built myself for storage running Truenas, a Synology DS920+ that gets powered on once a week for backups, and an elderly gaming pc with a 32 inch screen to manage it all. Four adguard-home setups synced with adguard-sync because who wants to be without DNS or with ADS? I had a few PI’s but sold them on Ebay because who want’s to rely on an sd-card? No ansible or playbooks or organised workflow. Just daily backups of /etc and /home/docker in case things go south.

I am currently looking at a couple of proxmox backup servers and integration with Backblaze to automate the backup chores. I like the idea of automatic encryption and de-duplication but am not ready to rely on that just yet.

I am running ProxMox backup server and I am very happy with. One great feature is that you can drill down and restore a single file or folder.

I implemented a backup hook script that rsyncs my ProxMox backup to a cloud server. I don’t like using cloud services, but backup is the one exception.

My backup hook also scans all my VMs and verifies that the firewall is turned on everywhere.

Thanks for the heads up on pbs. I will move it up my homelab chores priority list. All the (somewhat automated) backups are wasting my time. Here is my script for managing docker chores:

#!/bin/bash

cd /home/docker || exit
for dir in * ; do
cfname=“$dir”/docker-compose.yml
if test -f “$cfname” ; then
echo ======= Processing “$dir”
pushd “$dir” || exit
case “$1” in
stop) docker compose stop || exit;;
pull) docker compose pull || exit;;
start) docker compose up -d || exit;;
up) docker compose up -d || exit;;
logs) docker compose logs | tail -5;;
*) echo usage: “$0” “stop|start|logs|pull”; exit 6;;
esac
echo ======= Done with “$dir”
popd || exit
fi
done
echo ======== All operations are successful
exit 0

ProxMox backup is far superior to anything you can cook up on your own.

I’ve also installed Gitea, which is basically a lightweight Github. I take advantage of Gitea workflows, which can be setup to trigger and any push to specified files or folders.

Whenever I push a compose.yaml, the workflow automatically does the docker/podman compose down, up -d sequence.

The gitea workflow looks like this:

name: Unified Fleet Lab Deployment
on:
  push:
    paths:
      - 'stacks/**'
      - 'scripts/**'
  workflow_dispatch:

jobs:
  deploy:
    strategy:
      fail-fast: false
      matrix:
        # 🛠️ STRIPPED & SIMPLIFIED: Added nginx-host directly to your flat execution array
        host_label: [podman-host, ansible-host, vault-host, closet-host, nginx-host]

    runs-on: ${{ matrix.host_label }}
    steps:
      - name: Checkout Source Code
        uses: actions/checkout@v4
        with:
          set-safe-directory: true

      # 🛠️ SHORTENED: Inline execution mapping that sends the loop target straight to your script
      - name: Execute Dynamic Discovery Deployment Engine
        run: ./scripts/deploy_discovered_containers.sh "${{ matrix.host_label }}"

9 Desktop PCs (4th gen i5 and up), written off by the company I work for. Loaded these up with as much RAM as possible (32 GB for most) and everything on SSDs. Did that a few years years ago. These form my Proxmox cluster, where 31 VMs and 19 LXC containers run. A separate Desktop PC acts as the backup server for the VMs and containers. In summer this setup runs on solar alone, in winter there is assistance of the grid. But I am saving up first for a home battery, before I invest in a faster network that allows for centralizing storage.

I built two Proxmox servers and in reading it is highly suggested to not build the Backup servers as a VM, however in a Proxmox doc somewhere they suggested if there aren’t any extra server hardware available to install PBS on the same server as PVE as a side by side installation. I tried that and PBS integrated perfectly with PVE and have been doing backups of my VM’s for over a year with no issues. I also sync the VM’s so each PVE/PBS server so each server has the local VM’s backed up and I sync the other servers local backups. That way each server has all the VM’s available if one server dies. I did create a separate zfs mirror for PBS.

Corporate clients that spend $thousands just for the ProxMox support licence probably don’t mind adding hardware for a backup machine, but in a homelab it is not cost effective.

The thing you need to remember is this: in a worst-case scenario (lightning strikes and burns up all your hardware) you need to replace the backup server before you can restore anything else.