The 35-Watt Roommate (Part 8): Umami Analytics, or How a Password with Special Characters Broke Everything
How I self-hosted Umami Analytics, why PostgreSQL hated my password, and what Cloudflare Access does to tracking endpoints.
27 posts in total
How I self-hosted Umami Analytics, why PostgreSQL hated my password, and what Cloudflare Access does to tracking endpoints.
How to get Java JVM metrics from Denodo on ECS Fargate into CloudWatch using the Prometheus JMX Exporter when the native JMX integration won't work.
How to manage Docker Secrets with SOPS, age and Portainer properly, instead of manually typing passwords into the UI after every deploy.
Using Cloudflare Access to put private services behind authentication without exposing them to the public internet. Here's how it works and why it's worth the setup.
How I replaced my Fritz!Box 7690 with a Ubiquiti Cloud Gateway Ultra. WAN configuration, VLAN setup, and whether the ISP even notices.
How I built a macOS prank app that locks the screen with transparent overlays, blocks all input, and trolls anyone who touches your computer.
How I turned AdGuard Home into a network-wide ad and tracking blocker with Docker Macvlan, dual-stack IPv6, and Traefik integration.
How do you keep an eye on your homelab, what does CPU load actually look like, and who exactly is non-stop knocking on my virtual front door?
How I rescued my Gitea setup from a massive Docker mistake surgical data recovery from Proxmox backups.
How an Intel i219-LM network card in power-saving mode brought down the entire LAN and how I fixed it with kernel tuning.
How I securely expose my self-hosted services to the internet using Cloudflare Tunnels, without opening a single port on my router.
How a memory problem on my NAS led me to build an energy-efficient home lab with a Lenovo ThinkCentre M920q.
Why Conway's Game of Life captivates me and what emergence teaches us about complexity arising from simplicity.
A free web tool that helps lottery players visualize their spending, track losses, and compare what their money could have earned in investments instead.
Set up a private Git instance and media server on a Synology NAS with secure Cloudflare Tunnel access no port forwarding needed.
How I created a Go-based tool that uses SCP to solve Let's Encrypt HTTP-01 challenges for web hosts without API access.
Discover how I used CadQuery, a Python-based CAD scripting framework, to design a garden house, overcoming the complexities of traditional CAD software.
A practical Python script to analyze Eurojackpot lottery tickets and illustrate why playing the lottery is a losing game.
Discover how I enhanced my daughter's Mupibox media server experience by adding cover art to her favorite audiobooks and music.
Learn how I used a Python script to recover the lost PIN code for my RNS 510, saving a deal and bringing old tech back to life.
A VS Code launch configuration for live debugging of Streamlit applications.
How to export Go code as a C-Library and write a Python wrapper to reuse Go functionality in Python.
When to pass a type by value vs pointer in Go, with benchmarks and practical advice.
A workaround for decrypting Travis CI encrypted files using FTP/SFTP.
How to block traffic between FritzBox and OpenWrt guest WiFi network using firewall zone configuration.
How to flash OpenWrt on a TP-Link Archer C6 v2 using TFTP recovery.