IT-Tools on Bletchley
Deploying IT-Tools on Bletchley: self-hosted dev utilities running as non-root behind Traefik and cert-manager, with a restricted PodSecurity context
Deploying IT-Tools on Bletchley: self-hosted dev utilities running as non-root behind Traefik and cert-manager, with a restricted PodSecurity context
Adding central authentication to the Bletchley cluster with Authelia: ForwardAuth for Longhorn and Traefik, one session cookie for all services.
Importing Longhorn, Kubernetes, and resource dashboards onto the Bletchley cluster — and fixing the scrape config that was only collecting from one of four nodes.
Installing Forgejo on Bletchley: self-hosted git, infra/apps repo structure, accidentally committing secrets, SQLite WAL, and a two-layer backup to Garage S3.
Testing the backup chain: etcd encryption with age, and a full Grafana PVC delete-and-restore to confirm Longhorn backups actually work.
Exposing Garage S3 via Traefik, why Synology Cloud Sync failed, and how rclone solved the offsite backup problem instead.
Building the local backup layer for the Bletchley cluster: ZFS mirror on rock3's SATA SSDs, Garage S3, NFS, and Longhorn recurring backups.
Adding TLS to the Bletchley cluster with cert-manager, TransIP DNS-01 challenges, Let's Encrypt staging and production issuers, and automatic HTTP→HTTPS redirects.
Adding MetalLB and Traefik to Bletchley: real IPs for LoadBalancer services, hostname-based routing, and a reader-suggested improvement that preserves source IPs from day one.
Adding Grafana to the Bletchley cluster: Longhorn-backed storage, pre-configured Prometheus datasource, and the Node Exporter Full dashboard showing live node metrics.
Installing Prometheus and node exporter on Talos Linux: namespace labelling, values files, the duplicate pod gotcha, and confirming all four nodes are being scraped.
The decisions behind the Longhorn installation: why 2 replicas on a 1Gb cluster, how version pinning protects reproducibility, and when to upgrade.
Longhorn
Installing Longhorn distributed storage on a Talos Linux cluster: NVMe preparation, Helm install, and why the namespace label matters before anything else.
Talos Linux
How I discovered a missing system extension before it caused problems, and upgraded all four Bletchley cluster nodes in 15 minutes. Plus: what changes when you have running workloads.
TuringPi
Complete guide to installing Talos Linux v1.12.4 on TuringPi 2 RK1 modules — VLAN configuration, HA control plane, and every command along the way.
Talos
Documentation isn't optional. How I lost access to my working Talos cluster and why I'm reinstalling from scratch with proper documentation.
PostgreSQL
PostgreSQL 12 reached EOL in November 2024. Here's how I upgraded to PostgreSQL 18 using the dump-and-restore method on RHEL 8.
Lessons Learned
Seven lessons from installing Umami analytics: database compatibility, EOL software risks, Docker isolation, and why documentation is as valuable as code.
TuringPi
Three years from Kickstarter backing to complete build: documenting my TuringPi 2 cluster with 4x RK1 modules, storage strategy, and lessons learned.
Umami
Privacy-friendly analytics without Google: how I deployed Umami with PostgreSQL in Docker after learning hard lessons about database compatibility.
Ghost
Setting up Ghost for technical content: Prism.js syntax highlighting with autoloader, SEO optimization, Google Search Console, Giscus comments, and GDPR compliance. Complete code injection configuration included.
Ghost
Complete guide to installing Ghost CMS on Red Hat Enterprise Linux 9.7 with remote MariaDB, Apache reverse proxy, and SELinux. Includes all commands, troubleshooting, and lessons learned.