πŸ“š Wiki

Step-by-step guides pulled from real homelab projects β€” rewritten for anyone to follow, with internal IPs and account details stripped out. Real gotchas kept in, because that's the useful part.

No guides match that search.

printcheck — Catch the Print That Will Fail Before You Spend the Filament

A free MIT-licensed CLI that reads the two numbers your slicer never shows you — height over footprint, and flat underside floating in mid-air — and diffs new gcode against a print you already know came out right.

3D PrintingTools

Add a Content Security Policy Without Breaking Your Own Site

Copy-pasted CSP headers break real sites, so most people water them down until they do nothing. Inventory what your site actually loads first β€” including the runtime fetch() calls that never appear in your HTML β€” then write a policy that fits it.

SecurityWeb

Phantom Gamepad Input in Games: an RGB Controller Posing as a Joystick

Camera drifting, menus scrolling by themselves, a character that walks without you β€” on Linux it's often a motherboard RGB controller enumerated as a joystick with its axes jammed at full deflection. Prove it in two minutes, then kill it with one udev rule.

Linux GamingHardware

Harden Your QIDI Plus 4 Before It Touches Your Network

A Klipper printer is a small Linux server with a published default password and a trust-everything network posture β€” here's the 20-minute lockdown, with the real commands and the gotchas that make a naive attempt look like it worked when it didn't.

Security3D Printing

QIDI Studio Segfaults on Linux Once You Add a Printer β€” The Real Fix

A WebKitGTK conflict QIDITECH admits to in their own release notes, not a config mistake β€” the dmesg trace, the diagnosis, and the two-setting fix.

3D PrintingLinux

Docker's Install Script Silently Half-Fails in a Fresh LXC Container

Scripting docker-ce onto a fresh LXC or minimal VM over non-interactive SSH can leave the docker group missing and the socket refusing to start β€” here's the exact one-line fix.

DockerProxmox

Never Write Directly to an App-Encrypted Database Column

A raw SQL write to a field an app encrypts at its own layer can succeed silently, then break the app's very next read in a way that looks exactly like data loss.

DatabasesSelf-Hosting

LiveKit WebRTC Gotchas: Muting, Stale Room Events and Device Switching

Voice-activity detection going silent after mute, a stale room-event race, and an iOS-only connection failure traced to Multipath TCP inside the SDK itself.

LiveKitWebRTC

Why rsync Over SSH Fails Against a Synology NAS With "Permission Denied"

DSM's rsync binary is setuid-root, and that specifically breaks non-interactive SSH invocation β€” real hardening, not a bug. Here's the actual workaround.

SynologyMigrations

The Bitwarden CLI Can Report Success While Silently Dropping a Password

A login item created via the bw CLI can report success while the password is never actually persisted server-side β€” reproduced when the item lands in a shared organization collection.

VaultwardenAutomation

Add Checkmk as a Grafana Datasource: Setup and the Field That Breaks It

The official plugin's real request body shape isn't documented anywhere reachable through Grafana's own API β€” plus the one settings field that silently 404s every graph.

GrafanaCheckmk

Auto-Updating Self-Hosted Apps: the Gap unattended-upgrades Leaves

A browser extension auto-updated past what a one-version-behind self-hosted server could support, silently breaking sync while every other client kept working.

AutomationSelf-Hosting

Automate UniFi Controller SSL Certificate Renewal via its Local API

An internal, unauthenticated localhost port answers the exact same routes UniFi's own certificate auto-renewal presumably uses β€” reverse-engineered from the console's own UI.

UniFiAutomation

Kasm Workspaces + Proxmox Autoscale: Findings & Install Guide

Browser-based VDI with Proxmox auto-cloning agent VMs on demand β€” the real permission set, every startup-script gotcha, and a general method for diagnosing a stuck clone/destroy loop from scratch.

KasmProxmoxVDI

Run an Internal CA with step-ca for Real HTTPS on Homelab Services

Running your own internal certificate authority (step-ca) so every admin UI on your LAN gets a real, trusted cert β€” no more click-through security warnings.

PKIDocker

Replace Synology DSM's Reverse Proxy with Caddy

Moving public domains from a vendor NAS's reverse proxy to a dedicated Caddy instance β€” plus the Cloudflare certificate trick you need if you're behind Cloudflare.

CaddyNetworking

Self-Host Vaultwarden (Bitwarden Server) on a Proxmox LXC

Running Vaultwarden (a Bitwarden-compatible server) in its own isolated container, and the safe way to migrate an existing vault without losing sessions or data.

VaultwardenDocker

Control Chrome on Your Desktop From a Headless Server Over SSH

Forwarding a UNIX domain socket over SSH β€” not a port β€” so browser automation running on a headless box can drive Chrome on your workstation, kept alive by a systemd user service.

SSHsystemd

Self-Host Gitea with Docker Compose and Postgres

Headless Docker Compose deployment (no web install wizard), avoiding the SSH-port collision, and mirroring an existing GitHub repo without giving it up as canonical.

GiteaDocker

Replace iCloud/NAS Photos with Immich + Radicale

A self-hosted photo library with real ML search, plus CalDAV/CardDAV for contacts and calendars β€” and how to migrate years of existing data over safely.

ImmichSelf-Hosting

Homelab Vulnerability Scanning with Greenbone OpenVAS, Trivy and ZAP

Three free, complementary scanners β€” network, container images, and web apps β€” set up to run on a schedule and actually get looked at.

SecurityOpenVAS

Sync NetBox to Checkmk Automatically with CMDBsyncer

Wiring your network controller, your hypervisor, an inventory system, and a monitoring stack together so new devices and VMs show up automatically β€” and the silent failure modes to watch for on every leg.

NetBoxProxmoxAutomation

Actually Monitor Docker Containers and Non-Systemd Hosts with Checkmk

A fleet-wide notification rule silently discarding every service alert, plus real Docker container monitoring and a from-scratch agent bootstrap on a non-systemd host β€” every gotcha included.

CheckmkDockerMonitoring

Automatic Updates for Docker Game Servers, Gated on a Verified Backup

A per-game breakdown covering Docker-based servers, raw SteamCMD/systemd servers, and a whole Kubernetes-operator-managed one β€” plus two real bugs a dry "no update available" check would have hidden forever, including a management script that lies about its own exit code.

AutomationGame ServersBackups

Self-Hosting a Public Palworld Dedicated Server

Installing Palworld via SteamCMD, exposing it publicly without a port-forward or leaking your home IP, and two config settings β€” guild-building permissions and PvP damage β€” that silently don't do what their names suggest.

Game ServersSteamCMDNetworking

Self-Hosting Enshrouded: A Docker Networking Gotcha That Looks Like a Tunnel Problem

Running Enshrouded in Docker with split-horizon DNS for fast LAN play β€” and a real docker-compose bug where the container looked perfectly healthy while its port was never actually open to the host.

DockerGame ServersNetworking

Self-Hosting Dune Awakening: Exposure, Tuning, and Keeping It Running

Disabling decay/sandstorms/building limits, exposing a 100+ port UDP range through a VPS relay (and a silent config bug that broke it invisibly), a disk that snuck onto the wrong storage, and an auto-update cron that was failing on something nobody suspected.

Game ServersProxmoxNetworking

Self-Hosting Hytale: Finding the Real Save Among Broken Containers

A self-hosted Hytale migration where the obvious save file was a decoy β€” the real multi-week world was trapped inside a stopped container's writable layer, thanks to a bind-mount path mismatch.

HytaleDockerGame Servers

Self-Hosting Minecraft Bedrock Edition

Moving a long-stopped Minecraft Bedrock world off a general-purpose Docker host onto its own dedicated server β€” the small file-permission gotcha that actually broke it, and why Bedrock needs its own box separate from Java.

MinecraftBedrockDocker

Self-Hosting Minecraft Java With Legacy Forge Mods (1.7.10)

A second Minecraft server built specifically for a Forge mod stuck on 1.7.10 β€” the Java 8 image tag requirement, a CurseForge CDN workaround, and rescuing a player from a mod dimension with no built-in way out.

MinecraftForgeDocker

Self-Hosting Minecraft Java with a Modern Fabric Modpack

Standing up a modded Minecraft Java server on Fabric 1.20.1 β€” avoiding shared-storage I/O contention, resolving a modpack's full dependency tree via the Modrinth API, and a recipe-serializer crash with two completely unrelated causes.

MinecraftFabricGame Servers

Self-Hosting TeamSpeak 6 (Beta) in Docker

Deploying TeamSpeak 6 beta in Docker β€” bootstrapping WebQuery/SSH-query API access past a real chicken-and-egg deadlock, building AFK auto-move/mute yourself, and exposing voice + file transfer publicly without silently breaking the file-transfer half.

Self-HostingTeamSpeakDocker

Google Account Recovery Scam Call: How the Vishing Attempt Works

A real phone call impersonating Google tried to trigger a genuine account-recovery approval prompt β€” not a fake login page, the real thing. How the technique works, the tells, and what actually stopped it.

SecuritySocial Engineering

UniFi RBAC Gap: a Limited Admin Can Still Read Full Site Settings

A precautionary infrastructure audit after an unrelated social-engineering attempt found an over-privileged automation API key β€” and a role downgrade that looked like a complete fix but wasn't. The real gap, how to actually verify a fix, and why to audit standing credentials on a schedule.

SecurityUniFiAccess Control

SSH Hardening: Remove Weak MAC Algorithms Across a Whole Fleet

Fixing weak SSH MAC algorithms across an entire fleet of mixed Linux containers, VMs, and vendor NAS units β€” and how to actually verify the fix worked.

SSHHardening

Set Up Proxmox Backup Server with NFS Storage on a NAS

A dedicated backup target for your whole virtualization fleet β€” including physical Windows PCs, not just VMs β€” plus the permission gotchas that trip up almost everyone on first setup.

ProxmoxBackups

Back Up Docker Config Volumes That Live on an NFS Bind Mount

An NFS bind-mount for a container's config folder is invisible to most backup tools β€” how to check for this silent gap and migrate onto real backed-up storage without losing anything.

DockerBackups

Build an Offsite Proxmox Backup Server Replica on a Cheap VPS

A second, independent backup server on a cloud VPS for genuine 3-2-1 coverage β€” locking it down with a firewall instead of a tunnel, a write-only sync credential, and the honest truth about backup immutability.

BackupsCloud

Back Up DigitalOcean Droplets to Proxmox Backup Server

A cloud droplet isn't a VM your hypervisor manages, so nothing backs it up automatically β€” plus a genuinely obscure Docker/overlay2 bug that can leave backups completely unrestorable while looking perfectly healthy.

BackupsDigitalOceanDocker

btrbk btrfs Backups Silently Stopped: How to Diagnose and Monitor Them

An off-site btrfs backup failed every night for 5 nights with zero alerting β€” the red herring that wasn't the cause, the real version-mismatch root cause, the fix, and closing the monitoring gap so it can't happen silently again.

BackupsMonitoring

Expose a Self-Hosted Game Server Without Port Forwarding (frp Tunnel)

Two approaches β€” a simple single-port tunnel for most games, and a VPS-based tunnel for games that need a whole range of ports β€” plus a subtle bug that can make a tunnel look healthy while being completely broken.

NetworkingGame Servers

PUID and PGID Ignored: Docker UID Mapping in an Unprivileged LXC

PUID/PGID are a LinuxServer.io convention, not a Docker feature. Set them on an image that ignores them, inside an unprivileged LXC that offsets every uid by 100000, and writes to an NFS share fail with permission denied while extraction looks like it succeeded.

DockerProxmoxNFS

Large Downloads Fail Only When You're Away From Home: Cloudflare's 100 MB Cap

Cloudflare's Free plan caps a single proxied response at 100 MB. Streaming survives it because segments are small; full-file downloads don't, and Range-resumed retries fail just as fast. How to confirm it in the origin's logs and route around it.

CloudflareJellyfinNetworking

New Media Never Shows Up in Jellyfin: inotify Can't See Another NFS Client's Writes

Real-time monitoring uses inotify, which can never observe writes made by a different NFS client. It looks enabled and does nothing. Why it's structural, and a debounced poller that triggers a real scan instead.

JellyfinNFSRadarr

Your β€œ10 Gigabit” NFS Mount May Be Running Over the 1 Gigabit Link

NFSv4 trunking detection recognises a server it already has a session with and reuses the old connection, so a new fast path can carry zero bytes while mount, routing and ping all look correct. Plus why nconnect nearly doubled throughput from a VM.

NFS10GbEProxmox

Proxmox Backup Server Retention: keep-daily Buckets by Local Day

keep-daily keeps the newest snapshot per local calendar day, not per 24 hours. Backups running near local midnight collide, and a host with two backups can be pruned to one. Pair it with keep-last, and dry-run everything.

ProxmoxBackups

Proxmox Backup Server Fingerprint Mismatch After a Certificate Renewal

Backup clients pin the server's certificate fingerprint, so a routine renewal breaks every one of them at the same moment β€” and a nightly job that fails is completely silent. How to fix it, where the pins hide, and how to make sure it can't happen quietly again.

BackupsMonitoringProxmox

WireGuard AllowedIPs 0.0.0.0/0 Hijacks All Traffic and Kills SSH

A misconfigured AllowedIPs value doesn't just fail to connect β€” it can hijack all of a host's outbound traffic via policy routing, even while the tunnel itself never connects. How to spot it, fix it, and avoid it from the start.

WireGuardNetworkingSecurity

UniFi VLAN Isolation Firewall Rules Without Locking Yourself Out

Putting a device on its own VLAN doesn't isolate it by default on most routers β€” how to check, fix it properly, and avoid a gotcha that silently breaks the direction you meant to keep working.

NetworkingSecurity

Route a VLAN Through a WireGuard VPN Without Adding Gaming Lag

Protocol and server choices that actually matter, a real gotcha with reused provider configs, and a test suite that goes well beyond a handful of pings.

VPNNetworking

Run a "Windows-Only" Dedicated Server on Plain Linux

Bypassing an official Windows+Hyper-V requirement by finding the real Linux payload underneath β€” plus a real debugging story about a live-service game's hidden cloud dependencies, including two wrong turns before finding the real answer.

Self-HostingGame Servers

Self-Host a OneDrive Alternative with Seafile

A real security incident from one wrong env var name, a Cloudflare mTLS gotcha that broke only the iOS app, and the honest truth about what "automatic sync" can and can't mean on an iPhone.

SeafileSelf-Hosting

Self-Host Umami Analytics Behind Caddy: a Google Analytics Alternative

Discovering a reverse proxy had zero access logging, standing up self-hosted Umami analytics, a dropped-image gotcha, and verifying the whole pipeline with a real simulated pageview instead of just a healthy container.

UmamiAnalyticsDocker

Self-Host Outpost: A Real Discord Alternative

Deploying a self-hosted Discord alternative with real WebRTC voice/video β€” the one-click Docker install, and the TLS gotcha that silently breaks voice chat (not just avatars) if you skip it.

DockerSelf-HostingLiveKit

Send Email From a Custom Domain with Mailgun and Cloudflare DNS

Wiring up Mailgun + Cloudflare DNS so a contact form can actually deliver β€” a per-account domain limit, a brand-new account getting auto-disabled, and a dashboard that lags real DNS by several minutes.

MailgunDNSEmail

Get a Self-Hosted Site Crawled and Indexed: Sitemaps, IndexNow, Search Console

Both classic sitemap-ping URLs have been dead for years, IndexNow is the real replacement for everyone except Google, and how to verify Search Console via a plain DNS record instead of an OAuth grant to your DNS provider.

SEODNSSearch Console

Allow One Device Past a UniFi Category Content Filter

Punching a precise, single-device hole in a network-wide content filtering rule β€” and a real gotcha where the firewall API silently refuses to reorder rules, no matter how convincing the success response looks.

NetworkingFirewall

Use Dedicated Service Accounts for Automation, Not Your Admin Login

Dedicated service/bot accounts over reusing your own login, scoped roles instead of admin convenience, one-time tokens, and a real secret-storage gotcha that quietly drops passwords.

SecurityAutomation