Inventory
Stack
The gear, infrastructure, and software I rely on daily — with the reason behind every choice.
01 — Desk
Workstation
| Item | Spec | Why |
|---|---|---|
| Laptop | MacBook Pro 16" — M5 Pro, 64 GB, 2 TB | 64 GB of unified memory runs local databases, Docker containers, and heavy browser instances at once without ever swapping. |
| Display | BenQ EX321UX 32" 4K mini-LED | 4K because macOS font rendering below ~220 PPI is unacceptable; mini-LED local dimming keeps blacks black when editing dark-mode code. |
| Dock | CalDigit TS5 Plus | One Thunderbolt cable from the laptop handles all connectivity. |
02 — Desk
Peripherals
| Item | Spec | Why |
|---|---|---|
| Keyboard | Ajazz mechanical (wireless) | I hate it. It rarely connects, gets stuck sleeping, and needs constant power-cycling. It pushed me to the point of almost buying an Apple Magic Keyboard just to never think about keyboards again. |
| Pointing devices | Logitech MX Master 4 (work) · Logitech G Pro (gaming) · Apple Magic Trackpad | MX Master for long work sessions, G Pro when shape and weight actually matter, and the trackpad for macOS gestures. |
| Audio | Edifier S2000 MKIII speakers — bought second-hand | Big, but great sounding, with Bluetooth built in. Second-hand made them an easy yes. |
03 — Homelab
Server
| Component | Spec | Why |
|---|---|---|
| Chassis | Jonsbo D41 Mesh | Compact case with mesh airflow for a machine that runs 24/7. |
| Motherboard | ASUS TUF Gaming X670E-Plus WiFi — bought second-hand | Second-hand buy. Solid AM5 board with ECC support and the PCIe slots this build needed, without the new-board tax. |
| CPU | AMD Ryzen 9700X | Low power draw at idle, massive burst performance when executing builds or serving heavy queries. |
| RAM | 96 GB DDR5 ECC | ECC because ZFS deserves it; 96 GB leaves headroom for VMs, containers, and the ARC cache. |
Storage — tank | 2× 18 TB Seagate Exos, ZFS mirror | Capacity pool for media, backups, and archival data. Mirrors over RAIDZ here for faster rebuilds. |
Storage — fast | 2× 2 TB WD Black SN850X NVMe, ZFS mirror | Speed pool hosting virtual machines, databases, and Docker container volumes for near-instant I/O. |
| NIC | QNAP QM2-2P10G1TB — 10GbE + 2× M.2 slots | Originally bought for a QNAP NAS I later sold. Works great out of the box — no complaints — and the bonus M.2 slots came free with my 10 gig. |
| OS | TrueNAS SCALE | ZFS-first storage OS; the SCALE variant runs apps and VMs on top of Linux. |
| Hypervisor | Proxmox 8 | I'm migrating my primary hypervisors to Proxmox 8; VMs live on the fast pool. |
| UPS | CyberPower CP900EPFCLCD, 540 W | One of my first serious homelab buys, along with the RB5009 and the QNAP. Still going strong, but it's working double shifts and started giving battery warnings — first in line for replacement, after which it retires to gaming-rig duty. |
04 — Homelab
Networking
| Item | Spec | Why |
|---|---|---|
| Edge router | MikroTik RB5009 | Aggressively configured with strict firewall rules and WireGuard tunnels. One of my first serious homelab buys and still the front door. |
| Core switch | MikroTik CCR2004 | 10GbE switching between the workstation, the TrueNAS server, and the core network. |
| Wi-Fi | UniFi U7 Pro access points | Wi-Fi 7 connectivity for mobile devices and laptops. |
| Mesh VPN | ZTNET (ZeroTier) | A private mesh network for secure remote access to my infrastructure from anywhere. New addition — I'm still learning it, and the controller is hosted on the homelab for now. |
05 — Homelab
Services
What actually runs on the box, as containers on TrueNAS SCALE:
| Service | What it is | Note |
|---|---|---|
| Vaultwarden | Bitwarden-compatible password manager | Passwords are the last thing I want in someone else's cloud. |
| Immich | Self-hosted photo library | Google Photos, but on my own disks. |
| Plex | Media server | Serves the tank pool's media library. |
| qBittorrent | Torrent client | Sits behind Cloudflare Access with Google login, so I can add a new Linux ISO on the go without exposing it. |
| Paperless-ngx | Document management (with PostgreSQL + Redis) | OCRs in Polish and English; every paper document I get gets scanned, tagged, and shredded. |
| Kavita | Ebook and comics reader | Reads straight from the ebooks share on tank. |
| LazyLibrarian | Ebook/audiobook automation | Feeds the library Kavita serves. |
| Homepage | Start-page dashboard | One glance at every service below it on this list. |
| Pingvin Share | File sharing | For sending files to people without WeTransfer. |
| Stirling PDF | PDF toolbox | Stopped most of the time; started when I need to mangle a PDF. |
| Scrutiny | Drive S.M.A.R.T. monitoring | Watches the disks so ZFS doesn't have to surprise me. |
| UniFi controller | Network controller for the U7 Pro APs | Self-hosted instead of a CloudKey. |
| cloudflared | Cloudflare Tunnel daemon | Exposes selected services without opening a single router port. |
| ZeroTier | Mesh VPN node (ZTNET controller) | The homelab end of the mesh network. |
| Watchtower | Automatic container updates | Keeps everything above current without me babysitting it. |
06 — Software
Tools
| Item | Spec | Why |
|---|---|---|
| Editor | VS Code — not heavily customized, Vim keymap | I work across a Mac, an x86-64 Windows box, and an ARM Windows box. VS Code is the only editor that's the same on all three, so I stick to what works. |
| Terminal | PowerShell on Windows, Terminal.app on macOS | Nothing fancy — the defaults are good enough. |
| SSH | Termius | How I connect to my VPSes and servers. |
| Frontend | Astro · Next.js · Vite + React | Astro for content-heavy or static sites (like this one); Next.js or Vite + React for highly interactive SaaS applications. |
| Styling | Tailwind CSS v4 | Exclusively — it avoids context switching between CSS files. |
| Backend | Node.js + TypeScript, Drizzle ORM | Drizzle over Prisma: I prefer writing actual SQL expressions to learning an abstracted query language. |
07 — Services
Deployment & edge
| Item | Spec | Why |
|---|---|---|
| PaaS | Coolify on a Hetzner VPS | Easy to set up and maintain, seamless updates — it hasn't failed me yet. It's hooked up to my Telegram, so promoting to prod gives me instant build and deploy notifications. Uptime has been great; loving it. |
| Edge | Cloudflare | Free and protects everything I run — I use it for all my projects. Also for tunnels and Cloudflare Access to keep services like qBittorrent behind a Google login while staying easy to reach. |
| Mesh VPN controller | ZTNET — self-hosted ZeroTier controller | Keeps control of my mesh network on my own infrastructure. New and still learning it; hosted on the homelab for now. |