kroskinski.com (~$)
jerry@homelab:~

jerry@homelab:~$ whoami

I am a programmer & developer who builds automation tooling on top of a self-hosted homelab — Linux, open-source software, and containerization all the way down. When I'm not writing the next integration for my Signal bot, you'll find me skateboarding.

🛡️ Level Up Unlocked: Secure Auth

Recently integrated Authelia for secure single sign-on (SSO) and two-factor authentication across my self-hosted services. Read the architecture breakdown.

🤖 Shipped: task-bot

Built a Signal-controlled automation hub (FastAPI) to run my homelab from my phone — a dozen-plus integrations across Pi-hole, Immich, Paperless, Minecraft, and more. No third-party cloud, no app to install. One favorite detail: wrote a Source RCON client from scratch after a PyPI library turned out to be thread-incompatible with the async request handling.

jerry@homelab:~/task-bot$ git log --oneline -4

fix(minecraft): swapped a PyPI RCON library for a hand-rolled Source RCON client — it used SIGALRM-based timeouts that silently break outside the main thread, and every command handler runs in a threadpool.

fix(badlands): containers reporting healthy with unpublished ports — a startup race between Docker and Tailscale, fixed with a systemd drop-in.

security: caught an accidental git add . as root that staged SSH host keys and a signing secret — rotated both before anything shipped, tightened .gitignore project-wide.

debug: a location check-in silently found nothing for hours — turned out one endpoint wanted Unix timestamps, a sibling endpoint on the same API wanted ISO8601.

(Paraphrased from my actual commit history and debugging sessions — not a literal copy-paste.)

jerry@homelab:~$ ssh wasteland 'docker compose ps'

🤖 task-bot
🏃 act-runner
🌐 caddy
🦊 forgejo
🏠 homepage
📸 immich
📝 memos
🪨 mc-oneblock
📰 miniflux
🔄 nebula-sync
📄 paperless
🛑 pihole
🔌 portracker
💬 signal-api
⚡ wol-sender
📊 gatus
🔑 vaultwarden

jerry@homelab:~$ ssh badlands 'docker compose ps'

🏃 act-runner-bl
💳 wallos
💰 actual-budget
🧭 adventurelog
🗺️ dawarich
🔁 vert
🎥 metube
🔗 hawser
👁️ changedetection
🧰 it-tools
🎮 minecraft-bot
🔌 portracker
📅 radicale

jerry@homelab:~$ ssh website 'docker compose ps'

🔗 hawser
🔌 portracker

jerry@homelab:~$ ssh uptimekuma 'docker compose ps'

📊 gatus (ext)
🔗 hawser
🔌 portracker

jerry@homelab:~$ ssh rpihole 'docker compose ps'

jerry@homelab:~$ cat ~/.config/uses.yml

daily driver: Windows, VS Code, PuTTY/SSH for everything on the homelab

wasteland: Intel NUC12WSKi5 — primary server, most of what's above

badlands: Intel NUC10i5FNKN2 — secondary server

networking: Tailscale mesh, Caddy, Authelia SSO — no service is bound to 0.0.0.0, ever

backups: restic, staggered local + offsite, four copies across three locations, a dead man's switch on every run

why self-host: I'd rather learn by breaking something on a Tuesday night than click through a SaaS dashboard

not pursued: tools I evaluated and said no to, including one I fully built then fully tore back down

jerry@homelab:~$