~/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.

Physical nodes and virtualisation
TinyPack (mini PC cluster)
Key services and apps
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)
- Monitoring comes first. A service with no metrics, health check or alert on failure officially doesn't exist.
- 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.
- Every change goes through Git and a pipeline. No ad-hoc config edits over SSH on a live system.
- 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.