~/projects · INFRA

Homelab.

A rack at home: self-hosted GitLab with CI/CD and registry, my own OIDC, an LLM gateway and a dozen services.

DockerGitLabProxmoxGrafanaVoidAuthNAS

Physical nodes and virtualisation

  • Orzeł 1Orzeł 1: status
  • SingularitySingularity: status

TinyPack (mini PC cluster)

  • JanuszJanusz: status
  • SebekSebek: status
  • Orzeł 2Orzeł 2: status
  • TytusTytus: status
  • Domino (Dell Wyse)Domino (Dell Wyse): status

Key services and apps

  • HorizonHorizon: status
  • SDRSDR: status
  • MokreNoski-AlphaMokreNoski-Alpha: status
  • GitHubGitHub: status

Why bother?

To some, these are just noisy boxes hidden in furniture. To me, they're the heart of my home infrastructure: a workshop and a proving ground in one. This is where I try out new tools, simulate outages and learn to deal with problems before a similar fire breaks out at work, on infrastructure worth millions.

It isn't a passive shelf of old hardware gathering dust. It's a living, fully working ecosystem with metrics, centralised logging, automated backups and CI/CD pipelines. Even the page you're reading doesn't sit on anonymous shared hosting: it's built and served straight from my home server room.

Hardware, machine by machine

The foundation is a deliberately mixed bag of hardware: home-built PCs, one-litre office minis, and even a thin client repurposed for reliable 24/7 duty.

Orzeł 1: main Proxmox VE host

The workhorse of the virtualisation cluster. It carries most of the compute load and the core services.

  • CPU: Intel Core i5-10400F @ 2.90 GHz (6 cores / 12 threads)
  • RAM: 48 GB DDR4
  • GPU: NVIDIA GeForce GTX 1070
  • Storage:
    • 2× Samsung MZVLW256 NVMe 256 GB: hypervisor system disk
    • ADATA SU750 256 GB SSD + ADATA SU800 256 GB SSD: pooled in LVM for the VMs
    • 2× V-Series SATA SSD 120 GB
    • 4× WD WD5000AAKS 500 GB HDD
    • HGST HTS541010 4 TB 2.5" HDD
  • Role: 3 virtual machines and a dozen-plus LXC containers.

Singularity: backup Proxmox VE host

The second virtualisation node, built on a silent and dependable ex-lease office PC. It takes load off Orzeł and provides redundancy.

  • Platform: Dell OptiPlex 7020
  • Memory: 32 GB DDR3
  • Disk: 256 GB SSD
  • Role: its own set of 3 virtual machines and a dozen-plus LXC containers.

TinyPack: the one-litre division and its quiet helpers

A squad of tiny computers with minimal power draw and zero noise, an ideal base for distributed architecture and containers.

  • Janusz & Sebek (2× Lenovo ThinkCentre M715q): AMD, 16 GB DDR4, 256 GB SSD, 1 GbE
  • Orzeł 2 & Tytus (2× Lenovo ThinkCentre M910q): Intel, 16 GB DDR4, dual 256 GB + 256 GB SSD
  • Domino (Dell Wyse): a thin client I almost forgot about, a tiny, frugal guardian for light helper jobs.
  • Node role: Docker and Kubernetes (k8s) workloads, including GitLab Runner instances that build and test projects on the fly.

Core: local AI and storage

A workhorse and, at the same time, the home's heavy-duty compute centre.

  • CPU: AMD Ryzen 5 3600 (6 cores / 12 threads)
  • RAM: 64 GB DDR4
  • GPU: NVIDIA GeForce RTX 3090 (24 GB VRAM)
  • Disks: 298 GB, 2× 223.5 GB, 931.5 GB and 1863 GB (physically about 320 GB, 2× 240 GB, 1 TB and 2 TB)
  • Used for: day-to-day engineering work, a local LLM runtime (llama.cpp and LM Studio using the card's 24 GB) and local storage.

Network and connectivity

Even the best server is useless without a predictable network. My "server rack" is really a repurposed furniture cabinet, but in terms of topology it holds its own against an office setup.

  • Edge and Wi-Fi: a UniFi Gateway handling routing, the firewall and network segmentation, paired with a UniFi access point.
  • Fast backbone: a dedicated 2.5 GbE switch ("B25") acting as the high-speed data path for the busiest machines.
  • Distribution in the "rack": a managed D-Link DGS-1510 in the cabinet, linked to the B25 switch at 2.5 GbE, handling traffic distribution, trunking and VLANs for everything else.

The homelab in numbers

  • 8 physical machines (5 in TinyPack + Orzeł 1 + Singularity + the Core workstation)
  • 2 Proxmox VE hypervisors working as one organism
  • 6 virtual machines and well over a dozen isolated LXC containers
  • 208+ GB of RAM across the lab
  • 2 NVIDIA GPUs for virtualisation, transcoding and AI inference
  • 120+ active SDR decoders processing radio signals
  • 12 core infrastructure services under constant monitoring

What runs here?

Every service in the lab earns its place. Instead of spinning up containers for the sake of it, I build an environment that genuinely supports my work and projects.

  • Self-hosted GitLab (g.gut.red): a private code repository with extensive CI/CD. Every commit starts here, including changes to bartosik.run, which is deployed automatically through a Dockhand webhook once the tests pass on the runners.
  • Uptime Kuma (uptime.bartosik.run): the engine behind the status badges above. It checks machines and services every minute, watching HTTP endpoints, TCP ports and response times.
  • My own apps and services: including the MokreNoski-Alpha instance and the Horizon dashboard.
  • Matrix node (gut.red): my own federated chat server for secure, independent communication.
  • SDR decoder fleet: over 120 instances decoding radio signals in real time.
  • Local LLMs: an inference setup built on llama.cpp and LM Studio, using the RTX 3090's full 24 GB of VRAM to work with language models locally, without sending data to the cloud.
  • Container orchestration: Docker and Kubernetes clusters on the TinyPack nodes, carrying GitLab Runners and supporting apps, among others.
  • [Service list still being filled in]

House rules (homelab philosophy)

  1. Monitoring comes first. A service with no metrics, health check or alert on failure officially doesn't exist.
  2. A backup you've never restored is just a rumour. A real backup is one you can rebuild the system from, on a blank disk, in the middle of the night.
  3. Every change goes through Git and a pipeline. No ad-hoc config edits over SSH on a live system.
  4. Break things in the lab, never in production. Better to take down my own home cluster on a Saturday morning than a client's infrastructure on a Monday afternoon.