<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Blog – Bogusław Witek</title><description>Posts on Kubernetes, Linux, CI and running my own production cluster: what worked, what did not and why. Always with a terminal session or a screenshot.</description><link>https://www.bwitek.dev/en/blog/</link><language>en-GB</language><item><title>GhostPizza: a restaurant site with Lighthouse 100 and no JavaScript on public pages</title><link>https://www.bwitek.dev/en/blog/ghostpizza-lighthouse-100/</link><guid isPermaLink="true">https://www.bwitek.dev/en/blog/ghostpizza-lighthouse-100/</guid><description>I rewrote a pizzeria&apos;s website from Laravel to Bun and Hono so that the owner would notice no visual change and a customer&apos;s phone would notice all of them.</description><pubDate>Wed, 04 Nov 2026 00:00:00 GMT</pubDate><category>Bun</category><category>Hono</category><category>TypeScript</category></item><item><title>Moving a control plane without drama: etcd to a new node</title><link>https://www.bwitek.dev/en/blog/moving-the-control-plane/</link><guid isPermaLink="true">https://www.bwitek.dev/en/blog/moving-the-control-plane/</guid><description>Before the contract on my production cluster&apos;s two small machines ran out, I moved etcd and everything else onto a single dedicated server without rebuilding the cluster. The move took one night, and two surprises along the way taught me more than the plan did.</description><pubDate>Wed, 04 Nov 2026 00:00:00 GMT</pubDate><category>Kubernetes</category><category>Talos Linux</category><category>etcd</category></item><item><title>An old TV as a clean screen: debloat instead of landfill</title><link>https://www.bwitek.dev/en/blog/old-tv-debloat/</link><guid isPermaLink="true">https://www.bwitek.dev/en/blog/old-tv-debloat/</guid><description>A 2015 Samsung UE60J6240 still has an acceptable panel, but its own software turned it into e-waste: slow, with ads in the interface and sending telemetry to the manufacturer. Instead of binning it, I stripped the factory system down to a single job: picture and sound over HDMI, with no ads and no telemetry.</description><pubDate>Wed, 04 Nov 2026 00:00:00 GMT</pubDate><category>Linux</category><category>Reverse engineering</category><category>Home Assistant</category></item><item><title>Cilium instead of the default network: network policies that actually work</title><link>https://www.bwitek.dev/en/blog/cilium-network-policies-hubble/</link><guid isPermaLink="true">https://www.bwitek.dev/en/blog/cilium-network-policies-hubble/</guid><description>My cluster accepted network policies without complaint and enforced none of them. Swapping the network for Cilium on both clusters is a story about why &quot;Synced&quot; in Argo CD is not proof.</description><pubDate>Wed, 04 Nov 2026 00:00:00 GMT</pubDate><category>Cilium</category><category>Kubernetes</category><category>Talos Linux</category></item><item><title>GitOps in practice: Gitea Actions, the image tag in git and Argo CD with manual sync</title><link>https://www.bwitek.dev/en/blog/gitops-gitea-actions-argo-cd/</link><guid isPermaLink="true">https://www.bwitek.dev/en/blog/gitops-gitea-actions-argo-cd/</guid><description>For me a deployment is a commit that changes one image tag, followed by a deliberate click on sync. Here is how that loop works, why nothing deploys itself, and what Renovate added to it.</description><pubDate>Wed, 04 Nov 2026 00:00:00 GMT</pubDate><category>Gitea Actions</category><category>Argo CD</category><category>Renovate</category></item><item><title>Talos Linux: a server without SSH, and why that is good</title><link>https://www.bwitek.dev/en/blog/talos-linux-without-ssh/</link><guid isPermaLink="true">https://www.bwitek.dev/en/blog/talos-linux-without-ssh/</guid><description>After two weeks with k3s I rebuilt my home cluster from scratch on Talos Linux, an OS you cannot log in to. Three virtual machines became one, and its whole configuration fits in one file in git.</description><pubDate>Wed, 04 Nov 2026 00:00:00 GMT</pubDate><category>Talos Linux</category><category>Kubernetes</category><category>IncusOS</category></item><item><title>Kubernetes from zero at home: k3s, Helm, Argo CD and Sealed Secrets</title><link>https://www.bwitek.dev/en/blog/kubernetes-from-zero-at-home/</link><guid isPermaLink="true">https://www.bwitek.dev/en/blog/kubernetes-from-zero-at-home/</guid><description>Kubernetes was the biggest gap in my skills, so instead of reading about it I ran it on my home server and set up copies of real services on it. A few days later the whole cluster could be rebuilt from one repository, passwords included.</description><pubDate>Wed, 04 Nov 2026 00:00:00 GMT</pubDate><category>Kubernetes</category><category>Helm</category><category>Argo CD</category><category>Sealed Secrets</category></item><item><title>The raid on the Playergency server and the script that unbanned everyone</title><link>https://www.bwitek.dev/en/blog/playergency-raid-mass-unban/</link><guid isPermaLink="true">https://www.bwitek.dev/en/blog/playergency-raid-mass-unban/</guid><description>In October 2024 someone kicked and banned the members of the Discord server of a community whose bot I have been building for years. Discord had no &quot;unban all&quot; button, so I wrote one myself in discord.js.</description><pubDate>Wed, 04 Nov 2026 00:00:00 GMT</pubDate><category>discord.js (Discord bots)</category><category>JavaScript and Node.js</category></item></channel></rss>