<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>RealFin</title><description>Homelab, self-hosting and game servers, written up from a real server in my room. Plus the story of building a Roblox game with AI.</description><link>https://realfin.dev/</link><item><title>Zigbee2MQTT restarted 22,112 times, and Docker never told me</title><link>https://realfin.dev/blog/zigbee2mqtt-restart-loop-docker-network/</link><guid isPermaLink="true">https://realfin.dev/blog/zigbee2mqtt-restart-loop-docker-network/</guid><description>A container that lost its Docker network after a reboot, couldn&apos;t resolve the MQTT broker, and crash-looped for three days. How to spot it and fix it.</description><pubDate>Thu, 15 Oct 2026 12:40:00 GMT</pubDate></item><item><title>My homelab tour: one server, ~30 Docker containers</title><link>https://realfin.dev/blog/homelab-tour-30-containers/</link><guid isPermaLink="true">https://realfin.dev/blog/homelab-tour-30-containers/</guid><description>What runs on my home server, how it&apos;s organised with Docker Compose, and the lessons that shaped it.</description><pubDate>Thu, 15 Oct 2026 12:20:00 GMT</pubDate></item><item><title>Docker logs ate 2.4 GB on my server. Here&apos;s how to cap them</title><link>https://realfin.dev/blog/docker-log-size-limits/</link><guid isPermaLink="true">https://realfin.dev/blog/docker-log-size-limits/</guid><description>Docker&apos;s json-file logs grow forever by default. Two lines in daemon.json fix it, but only for containers created afterwards.</description><pubDate>Thu, 15 Oct 2026 12:00:00 GMT</pubDate></item><item><title>Why Valheim crops don&apos;t grow on a dedicated server when nobody&apos;s online</title><link>https://realfin.dev/blog/valheim-crops-not-growing-empty-server/</link><guid isPermaLink="true">https://realfin.dev/blog/valheim-crops-not-growing-empty-server/</guid><description>I measured the world clock in the server&apos;s save files: it stops about 13 minutes after the last player leaves. Crops, smelters and kilns only progress while someone is connected.</description><pubDate>Thu, 15 Oct 2026 11:40:00 GMT</pubDate></item><item><title>Jellyfin &apos;fatal player error&apos; after an NVIDIA update: the driver/library mismatch</title><link>https://realfin.dev/blog/nvidia-driver-mismatch-jellyfin-transcoding/</link><guid isPermaLink="true">https://realfin.dev/blog/nvidia-driver-mismatch-jellyfin-transcoding/</guid><description>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.</description><pubDate>Thu, 15 Oct 2026 11:20:00 GMT</pubDate></item><item><title>Why &apos;docker stop&apos; before a reboot left my whole homelab down for two days</title><link>https://realfin.dev/blog/docker-stop-before-reboot-mistake/</link><guid isPermaLink="true">https://realfin.dev/blog/docker-stop-before-reboot-mistake/</guid><description>restart: unless-stopped treats an explicit docker stop as &apos;the user wants this off&apos;. A reboot script that stopped containers first stranded every service, including DNS.</description><pubDate>Thu, 15 Oct 2026 11:00:00 GMT</pubDate></item><item><title>After every internet outage, some sites broke for 15 minutes. Blame Unbound&apos;s infra cache</title><link>https://realfin.dev/blog/unbound-servfail-after-internet-outage/</link><guid isPermaLink="true">https://realfin.dev/blog/unbound-servfail-after-internet-outage/</guid><description>Unbound marks unreachable nameservers as down for 900 seconds by default and serves instant SERVFAILs. CDN-heavy sites suffer most. Three settings fixed it.</description><pubDate>Thu, 15 Oct 2026 10:40:00 GMT</pubDate></item><item><title>Ad blocking for the whole house with AdGuard Home + Unbound in Docker</title><link>https://realfin.dev/blog/adguard-unbound-network-adblock/</link><guid isPermaLink="true">https://realfin.dev/blog/adguard-unbound-network-adblock/</guid><description>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.</description><pubDate>Thu, 15 Oct 2026 10:20:00 GMT</pubDate></item><item><title>How my Jellyfin + *arr media stack fits together (Docker Compose)</title><link>https://realfin.dev/blog/jellyfin-arr-stack-docker/</link><guid isPermaLink="true">https://realfin.dev/blog/jellyfin-arr-stack-docker/</guid><description>Jellyseerr → Sonarr/Radarr → Prowlarr → qBittorrent → Jellyfin. How the pieces talk to each other, hardlinks, FlareSolverr and the settings that tripped me up.</description><pubDate>Thu, 15 Oct 2026 10:00:00 GMT</pubDate></item><item><title>Backing up a Docker homelab with one script (and no sudo)</title><link>https://realfin.dev/blog/homelab-backup-script-docker/</link><guid isPermaLink="true">https://realfin.dev/blog/homelab-backup-script-docker/</guid><description>A nightly cron job that tars every app&apos;s config with a throwaway Alpine container, keeps 7 copies and skips caches. Plus what it doesn&apos;t protect you from.</description><pubDate>Thu, 15 Oct 2026 09:40:00 GMT</pubDate></item><item><title>Running a private ChatGPT on a 4 GB GPU: Ollama + Open WebUI + SearXNG</title><link>https://realfin.dev/blog/local-ai-ollama-4gb-gpu/</link><guid isPermaLink="true">https://realfin.dev/blog/local-ai-ollama-4gb-gpu/</guid><description>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.</description><pubDate>Thu, 15 Oct 2026 09:20:00 GMT</pubDate></item><item><title>My homelab has zero open ports. Here&apos;s how I still use it from anywhere</title><link>https://realfin.dev/blog/homelab-security-no-port-forwards/</link><guid isPermaLink="true">https://realfin.dev/blog/homelab-security-no-port-forwards/</guid><description>Why I don&apos;t port-forward anything, how Tailscale replaces it, how to publish a website safely with Cloudflare Tunnel, and the hardening checklist I actually follow.</description><pubDate>Thu, 15 Oct 2026 09:00:00 GMT</pubDate></item><item><title>Clean music tags from YouTube downloads with yt-dlp (for Navidrome)</title><link>https://realfin.dev/blog/yt-dlp-music-metadata-navidrome/</link><guid isPermaLink="true">https://realfin.dev/blog/yt-dlp-music-metadata-navidrome/</guid><description>How I turned &apos;ARTIST - TITLE (OFFICIAL VIDEO) 1998.&apos; into proper artist, title and album tags with yt-dlp&apos;s --parse-metadata and --replace-in-metadata.</description><pubDate>Thu, 15 Oct 2026 08:40:00 GMT</pubDate></item><item><title>Hosting a Valheim dedicated server with Docker (the setup I use)</title><link>https://realfin.dev/blog/valheim-dedicated-server-docker/</link><guid isPermaLink="true">https://realfin.dev/blog/valheim-dedicated-server-docker/</guid><description>A complete docker-compose for a Valheim server: ports, auto-updates only when nobody&apos;s online, hourly world backups, and how friends connect.</description><pubDate>Thu, 15 Oct 2026 08:20:00 GMT</pubDate></item><item><title>Moving a Valheim world to a dedicated server (the new folder save format)</title><link>https://realfin.dev/blog/valheim-import-world-new-save-format/</link><guid isPermaLink="true">https://realfin.dev/blog/valheim-import-world-new-save-format/</guid><description>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.</description><pubDate>Thu, 15 Oct 2026 08:00:00 GMT</pubDate></item><item><title>Fixing Valheim server lag with Better Networking (server-side only)</title><link>https://realfin.dev/blog/valheim-server-lag-better-networking/</link><guid isPermaLink="true">https://realfin.dev/blog/valheim-server-lag-better-networking/</guid><description>Valheim caps how much data it sends per player. On a big base that&apos;s the real bottleneck, not your internet. How Better Networking raises the cap, and why vanilla friends can still join.</description><pubDate>Thu, 15 Oct 2026 07:40:00 GMT</pubDate></item><item><title>Valheim server without a password: use a Steam ID whitelist instead</title><link>https://realfin.dev/blog/valheim-whitelist-instead-of-password/</link><guid isPermaLink="true">https://realfin.dev/blog/valheim-whitelist-instead-of-password/</guid><description>Valheim never remembers server passwords. permittedlist.txt lets only your friends&apos; Steam IDs in, with no password prompt, and it&apos;s arguably more secure.</description><pubDate>Thu, 15 Oct 2026 07:20:00 GMT</pubDate></item><item><title>Valheim mods on a dedicated server: which ones need the server, and which are client-only</title><link>https://realfin.dev/blog/valheim-mods-client-vs-server/</link><guid isPermaLink="true">https://realfin.dev/blog/valheim-mods-client-vs-server/</guid><description>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.</description><pubDate>Thu, 15 Oct 2026 07:00:00 GMT</pubDate></item><item><title>Running a big Minecraft modpack (ATM10) in Crafty Controller with Docker</title><link>https://realfin.dev/blog/crafty-controller-modpack-import/</link><guid isPermaLink="true">https://realfin.dev/blog/crafty-controller-modpack-import/</guid><description>Crafty can&apos;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.</description><pubDate>Thu, 15 Oct 2026 06:40:00 GMT</pubDate></item><item><title>Roblox RemoteEvents: never trust the client (a checklist for AI-written code)</title><link>https://realfin.dev/blog/roblox-remote-events-never-trust-the-client/</link><guid isPermaLink="true">https://realfin.dev/blog/roblox-remote-events-never-trust-the-client/</guid><description>Exploiters can fire any RemoteEvent with any arguments. The validation every remote needs, and the mistakes AI coding assistants make by default.</description><pubDate>Thu, 15 Oct 2026 06:20:00 GMT</pubDate></item><item><title>Roblox DataStores without data loss: retries, UpdateAsync and BindToClose</title><link>https://realfin.dev/blog/roblox-datastore-safe-saving/</link><guid isPermaLink="true">https://realfin.dev/blog/roblox-datastore-safe-saving/</guid><description>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.</description><pubDate>Thu, 15 Oct 2026 06:00:00 GMT</pubDate></item></channel></rss>