-
My first restore test reported 0 tables and 0 errors
I had checked 49 backup sets for months but never restored one. The first test restored nothing and reported success. How to test Postgres restores safely, and three ways backups and restores quietly lie.
-
A 20-second power cut, an 8-hour outage: LUKS on a home server
My server lost power at 00:31, came back by itself, then waited 8 h 25 min at a hidden LUKS passphrase prompt. How to prove it from systemd timestamps, triage the cold-boot alert storm, and choose an unattended unlock.
-
Backups that lie, and the freshness alarm that catches them
My backup jobs reported OK while 13 of 17 databases had no backup, dumps were truncated and two crons had been dead for months. One freshness check over the artifacts of every backup set now catches all of it.
-
Search Console said 'connection error'. My router had banned Googlebot
Search Console reported connection errors while my web logs showed nothing wrong: my router's auto-ban list had caught two genuine Googlebot addresses. How I found it, and how to allowlist verified crawlers safely.
-
Running Gitea and CI inside the cluster they deploy
Lessons from a self-hosted Gitea in k3s: why git push hits the SSO login page, getting passwords out of 7 remote URLs, a Git server OOM-killed at 512 MiB and 2 GiB, and what act_runner needs before 365 tests pass in 82 seconds.
-
An AI studio that makes films and 3D prints in Blender
My AI agents build printable models and short films in a sandboxed Blender over a tool protocol. The hard part is that a text-only model cannot see its own output, so it ships broken geometry as 'watertight' unless you give it sight.
-
One notification relay instead of 40 copies of a token
The same chat-bot token lived in about 40 places in my lab, some in git. A small relay now holds the credentials once; senders carry only a revocable per-sender token and address channels, not platforms.
-
The test that deleted my home folder
To prove a path-traversal bug existed, an AI coding assistant ran the test against the unfixed code on the host, and the bug deleted everything my user could delete in ten seconds. How I found the exact command on the raw disk, and the boring safeguards that now prevent it.
-
Passwords that only fail after a reboot
Long-lived connections and hard-coded default passwords hid a database password rotation until a routine reboot broke two services. Why it happens, how to find the services that are hiding it, and a fail-closed checklist.
-
The one-second race that hid my nginx config change
A Kubernetes rollout started a new pod one second before its ConfigMap was updated, and a subPath mount kept the old nginx config forever. How kubectl apply order and subPath combine, and the checklist that prevents it.
-
Every attack here makes others safer
A honeypot, behavioural detection, blocking at the edge and a community that shares every verdict: how one machine near Iași turns attacks into protection for strangers.