Blog
21 posts about homelab, game servers and Roblox development.
- Homelab
Zigbee2MQTT restarted 22,112 times, and Docker never told me
A container that lost its Docker network after a reboot, couldn't resolve the MQTT broker, and crash-looped for three days. How to spot it and fix it.
- Homelab
My homelab tour: one server, ~30 Docker containers
What runs on my home server, how it's organised with Docker Compose, and the lessons that shaped it.
- Homelab
Docker logs ate 2.4 GB on my server. Here's how to cap them
Docker's json-file logs grow forever by default. Two lines in daemon.json fix it, but only for containers created afterwards.
- Game servers
Why Valheim crops don't grow on a dedicated server when nobody's online
I measured the world clock in the server's save files: it stops about 13 minutes after the last player leaves. Crops, smelters and kilns only progress while someone is connected.
- Homelab
Jellyfin 'fatal player error' after an NVIDIA update: the driver/library mismatch
Ubuntu auto-updated the NVIDIA driver but kept the old kernel module loaded. GPU transcoding broke for weeks. Diagnosis and a reboot script that only reboots when needed.
- Homelab
Why 'docker stop' before a reboot left my whole homelab down for two days
restart: unless-stopped treats an explicit docker stop as 'the user wants this off'. A reboot script that stopped containers first stranded every service, including DNS.
- Homelab
After every internet outage, some sites broke for 15 minutes. Blame Unbound's infra cache
Unbound marks unreachable nameservers as down for 900 seconds by default and serves instant SERVFAILs. CDN-heavy sites suffer most. Three settings fixed it.
- Homelab
Ad blocking for the whole house with AdGuard Home + Unbound in Docker
Network-wide ad and tracker blocking plus your own recursive DNS resolver, with no Google or Cloudflare DNS. Compose file, router setup and the gotchas.
- Homelab
How my Jellyfin + *arr media stack fits together (Docker Compose)
Jellyseerr → Sonarr/Radarr → Prowlarr → qBittorrent → Jellyfin. How the pieces talk to each other, hardlinks, FlareSolverr and the settings that tripped me up.
- Homelab
Backing up a Docker homelab with one script (and no sudo)
A nightly cron job that tars every app's config with a throwaway Alpine container, keeps 7 copies and skips caches. Plus what it doesn't protect you from.
- Homelab
Running a private ChatGPT on a 4 GB GPU: Ollama + Open WebUI + SearXNG
What actually fits on a GTX 1050 Ti, why I baked the context length into the model, and how to give a local LLM web search with self-hosted SearXNG.
- Homelab
My homelab has zero open ports. Here's how I still use it from anywhere
Why I don't port-forward anything, how Tailscale replaces it, how to publish a website safely with Cloudflare Tunnel, and the hardening checklist I actually follow.
- Homelab
Clean music tags from YouTube downloads with yt-dlp (for Navidrome)
How I turned 'ARTIST - TITLE (OFFICIAL VIDEO) 1998.' into proper artist, title and album tags with yt-dlp's --parse-metadata and --replace-in-metadata.
- Game servers
Hosting a Valheim dedicated server with Docker (the setup I use)
A complete docker-compose for a Valheim server: ports, auto-updates only when nobody's online, hourly world backups, and how friends connect.
- Game servers
Moving a Valheim world to a dedicated server (the new folder save format)
Valheim no longer saves worlds as .db + .fwl. Where the new world folder lives, how to get it out of Steam Cloud, and how to load it on a server.
- Game servers
Fixing Valheim server lag with Better Networking (server-side only)
Valheim caps how much data it sends per player. On a big base that's the real bottleneck, not your internet. How Better Networking raises the cap, and why vanilla friends can still join.
- Game servers
Valheim server without a password: use a Steam ID whitelist instead
Valheim never remembers server passwords. permittedlist.txt lets only your friends' Steam IDs in, with no password prompt, and it's arguably more secure.
- Game servers
Valheim mods on a dedicated server: which ones need the server, and which are client-only
Some mods only change your own game, others need every player and the server on the same version. How to tell the difference so vanilla friends can still join.
- Game servers
Running a big Minecraft modpack (ATM10) in Crafty Controller with Docker
Crafty can't import a server from a folder, only from an uploaded zip. The placeholder-and-swap workaround, the Java 21 command for NeoForge and where the memory setting really lives.
- Roblox dev
Roblox RemoteEvents: never trust the client (a checklist for AI-written code)
Exploiters can fire any RemoteEvent with any arguments. The validation every remote needs, and the mistakes AI coding assistants make by default.
- Roblox dev
Roblox DataStores without data loss: retries, UpdateAsync and BindToClose
Player data loss is the bug that kills Roblox games. The patterns that prevent it: UpdateAsync over SetAsync, retry with backoff, saving on shutdown and session locking.