I maintain a home server stack to mainly to experiment with development tools and self hosted web services.

Core Technologies

Consul

Provides central service registry, health checks, and DNS lookups for nodes and services. Makes clustering nomad agents more straightforward.1

Nomad

Orchestrate deploying services by executing nomad job specs. Currently managed with a combination of terraform, shell scripts, levant templating, code generation, Makefiles, and a Gitlab CI Pipeline on a locally hosted Gitlab instance. This is where I’m trying to clean things up, mainly for the sake of my own sanity.2

Terraform

Currently used to create virtual machines in Proxmox. Maintain a custom module to abstract most default configuration out.3

For example, to create a new VM with 8GB of ram and 8 CPU cores, I would add this block to my main.tf file.

module "newdevbox" {
  count  = 1
  source = "./modules/ubuntu-vm"

  name            = "newdevbox"
  vmid            = 120
  cores           = 8
  mem             = 8196
  ip_address      = "10.1.100.100"
}

Ansible

Mainly used to provision virtual machines. Maintain a number of custom roles that handle different pieces of the configuration. Various playbooks handling executing roles on specific targets.4

For example, to provision a new cluster of VMs I could run this short playbook (after tweaking some IP address values in some of the role files).

---
- name: Setup cluster
  hosts:
    - servers
    - workers
  roles:
    - hashi
    - consul
    - nomad
    - docker
  tags:
    - setup

Hardware

Servers

These two Dell servers run LXC containers and VMs and are the main compute resource.

Apollo - Dell R620 - Proxmox VE 7.2-11
32 x Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz (2 Sockets)
64GB
8 x 600GB
Artemis - Dell R620 - Proxmox VE 7.2-11
32 x Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz (2 Sockets)
64GB
10 x 800GB

Storage

These two Synology NAS units store most of everything, they’re also configured to back eachother up. Provide shared folders accessed elsewhere via NFS.

Vault - Synology DS920+ w/ Expansion - DSM 7
4 x INTEL Celeron J4125 @ 2GHz
8GB
10.5TB - 4 x 4TB @ RAID5 w/ 1TB SSD Cache
14TB - 5 x 4TB @ RAID5 w/ 1TB SSD Cache
Knossus - Synology RS422+ - DSM 7
2 x AMD Ryzen R1600 @ 2.60GHz
2GB
31.4TB - 4 x 12TB @ HYBRID(SHR)

MISC

The NUC provides a compute resource not running Proxmox.

Nucky - Intel NUC 11 - Ubuntu 22.04 LTS
4 x Intel Celeron @ 2.0GHz
8GB
100GB