From 37f11dd4dd64381cb1ac44948db59d4c3d69ceb1 Mon Sep 17 00:00:00 2001
From: Paul Buetow
Date: Thu, 5 Feb 2026 17:49:01 +0200
Subject: Update content for html
---
about/resources.html | 206 +++++++--------
...5-12-07-f3s-kubernetes-with-freebsd-part-8.html | 281 --------------------
gemfeed/atom.xml | 283 +--------------------
index.html | 2 +-
uptime-stats.html | 2 +-
5 files changed, 106 insertions(+), 668 deletions(-)
diff --git a/about/resources.html b/about/resources.html
index 12650683..f319550f 100644
--- a/about/resources.html
+++ b/about/resources.html
@@ -50,112 +50,112 @@
In random order:
-
The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional
+
Seeking SRE: Conversations About Running Production Systems at Scale; David N. Blank-Edelman; eBook
+
C++ Programming Language; Bjarne Stroustrup;
Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson
-
The KCNA (Kubernetes and Cloud Native Associate) Book; Nigel Poulton
-
Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press
-
Higher Order Perl; Mark Dominus; Morgan Kaufmann
+
Site Reliability Engineering; How Google runs production systems; O'Reilly
+
The Pragmatic Programmer; David Thomas; Addison-Wesley
Leanring eBPF; Liz Rice; O'Reilly
-
Systemprogrammierung in Go; Frank Müller; dpunkt
-
Seeking SRE: Conversations About Running Production Systems at Scale; David N. Blank-Edelman; eBook
-
Go Brain Teasers - Exercise Your Mind; Miki Tebeka; The Pragmatic Programmers
+
Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall & Jon Orwant; O'Reilly
+
Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications
+
Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O'Reilly
+
The Docker Book; James Turnbull; Kindle
+
Perl New Features; Joshua McAdams, brian d foy; Perl School
+
100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications
+
The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible
+
DNS and BIND; Cricket Liu; O'Reilly
+
Ultimate Go Notebook; Bill Kennedy
+
Raku Recipes; J.J. Merelo; Apress
+
DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible
+
Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press
Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O'Reilly
-
Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner
Learn You Some Erlang for Great Good; Fred Herbert; No Starch Press
-
The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible
-
97 things every SRE should know; Emil Stolarsky, Jaime Woo; O'Reilly
-
Developing Games in Java; David Brackeen and others...; New Riders
+
The Practise of System and Network Administration; Thomas A. Limoncelli, Christina J. Hogan, Strata R. Chalup; Addison-Wesley Professional Pro Git; Scott Chacon, Ben Straub; Apress
Programming Ruby 3.3 (5th Edition); Noel Rappin, with Dave Thomas; The Pragmatic Bookshelf
-
The Kubernetes Book; Nigel Poulton; Unabridged Audiobook
+
Tmux 2: Productive Mouse-free Development; Brain P. Hogan; The Pragmatic Programmers
+
Raku Fundamentals; Moritz Lenz; Apress
+
Developing Games in Java; David Brackeen and others...; New Riders
+
Higher Order Perl; Mark Dominus; Morgan Kaufmann
+
Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner
+
Effective awk programming; Arnold Robbins; O'Reilly
Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt
-
Raku Recipes; J.J. Merelo; Apress
Modern Perl; Chromatic ; Onyx Neon Press
-
Funktionale Programmierung; Peter Pepper; Springer
+
Go Brain Teasers - Exercise Your Mind; Miki Tebeka; The Pragmatic Programmers
+
Terraform Cookbook; Mikael Krief; Packt Publishing
+
Pro Puppet; James Turnbull, Jeffrey McCune; Apress
+
The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional
+
Effective Java; Joshua Bloch; Addison-Wesley Professional
Clusterbau mit Linux-HA; Michael Schwartzkopff; O'Reilly
+
Concurrency in Go; Katherine Cox-Buday; O'Reilly
+
Data Science at the Command Line; Jeroen Janssens; O'Reilly
+
Funktionale Programmierung; Peter Pepper; Springer
+
The Kubernetes Book; Nigel Poulton; Unabridged Audiobook
+
97 things every SRE should know; Emil Stolarsky, Jaime Woo; O'Reilly
Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O'Reilly
-
Ultimate Go Notebook; Bill Kennedy
-
Effective awk programming; Arnold Robbins; O'Reilly
-
Terraform Cookbook; Mikael Krief; Packt Publishing
-
Chaos Engineering - System Resiliency in Practice; Casey Rosenthal and Nora Jones; eBook
+
The KCNA (Kubernetes and Cloud Native Associate) Book; Nigel Poulton
+
Java ist auch eine Insel; Christian Ullenboom;
21st Century C: C Tips from the New School; Ben Klemens; O'Reilly
-
Data Science at the Command Line; Jeroen Janssens; O'Reilly
-
Concurrency in Go; Katherine Cox-Buday; O'Reilly
-
Effective Java; Joshua Bloch; Addison-Wesley Professional
-
DNS and BIND; Cricket Liu; O'Reilly
-
Perl New Features; Joshua McAdams, brian d foy; Perl School
+
Chaos Engineering - System Resiliency in Practice; Casey Rosenthal and Nora Jones; eBook
Polished Ruby Programming; Jeremy Evans; Packt Publishing
-
Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall & Jon Orwant; O'Reilly
-
C++ Programming Language; Bjarne Stroustrup;
-
The Docker Book; James Turnbull; Kindle
-
Tmux 2: Productive Mouse-free Development; Brain P. Hogan; The Pragmatic Programmers
-
100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications
-
DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible
-
The Practise of System and Network Administration; Thomas A. Limoncelli, Christina J. Hogan, Strata R. Chalup; Addison-Wesley Professional Pro Git; Scott Chacon, Ben Straub; Apress
-
Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O'Reilly
-
Site Reliability Engineering; How Google runs production systems; O'Reilly
-
The Pragmatic Programmer; David Thomas; Addison-Wesley
-
Java ist auch eine Insel; Christian Ullenboom;
-
Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications
-
Raku Fundamentals; Moritz Lenz; Apress
-
Pro Puppet; James Turnbull, Jeffrey McCune; Apress
+
Systemprogrammierung in Go; Frank Müller; dpunkt
Technical references
I didn't read them from the beginning to the end, but I am using them to look up things. The books are in random order:
-
Go: Design Patterns for Real-World Projects; Mat Ryer; Packt
-
Implementing Service Level Objectives; Alex Hidalgo; O'Reilly
BPF Performance Tools - Linux System and Application Observability, Brendan Gregg; Addison Wesley
-
The Linux Programming Interface; Michael Kerrisk; No Starch Press
-
Understanding the Linux Kernel; Daniel P. Bovet, Marco Cesati; O'Reilly
Relayd and Httpd Mastery; Michael W Lucas
-
Groovy Kurz & Gut; Joerg Staudemeier; O'Reilly
Algorithms; Robert Sedgewick, Kevin Wayne; Addison Wesley
+
The Linux Programming Interface; Michael Kerrisk; No Starch Press
+
Groovy Kurz & Gut; Joerg Staudemeier; O'Reilly
+
Implementing Service Level Objectives; Alex Hidalgo; O'Reilly
+
Understanding the Linux Kernel; Daniel P. Bovet, Marco Cesati; O'Reilly
+
Go: Design Patterns for Real-World Projects; Mat Ryer; Packt
Self-development and soft-skills books
In random order:
-
The Off Switch; Mark Cropley; Virgin Books (RE-READ 1ST TIME)
-
The Power of Now; Eckhard Tolle; Yellow Kite
-
The Good Enough Job; Simone Stolzoff; Ebury Edge
-
Solve for Happy; Mo Gawdat (RE-READ 1ST TIME)
-
101 Essays that change the way you think; Brianna Wiest; Audiobook
Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press
+
Soft Skills; John Sommez; Manning Publications
+
Staff Engineer: Leadership beyond the management track; Will Larson; Audiobook
Never Split the Difference; Chris Voss, Tahl Raz; Random House Business
-
Eat That Frog!; Brian Tracy; Hodder Paperbacks
-
Deep Work; Cal Newport; Piatkus
-
The Courage to Be Disliked; Ichiro Kishimi and Fumitake Koga; Audiobook
-
The Complete Software Developer's Career Guide; John Sonmez; Unabridged Audiobook
-
Ultralearning; Anna Laurent; Self-published via Amazon
-
Psycho-Cybernetics; Maxwell Maltz; Perigee Books
+
The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select
Eat That Frog; Brian Tracy
+
The Off Switch; Mark Cropley; Virgin Books (RE-READ 1ST TIME)
Coders at Work - Reflections on the craft of programming, Peter Seibel and Mitchell Dorian et al., Audiobook
-
Slow Productivity; Cal Newport; Penguin Random House
-
Time Management for System Administrators; Thomas A. Limoncelli; O'Reilly
+
Eat That Frog!; Brian Tracy; Hodder Paperbacks
+
The Software Engineer's Guidebook: Navigating senior, tech lead, and staff engineer positions at tech companies and startups; Gergely Orosz; Audiobook
+
Meditation for Mortals, Oliver Burkeman, Audiobook
+
Search Inside Yourself - The Unexpected path to Achieving Success, Happiness (and World Peace); Chade-Meng Tan, Daniel Goleman, Jon Kabat-Zinn; HarperOne
So Good They Can't Ignore You; Cal Newport; Business Plus
-
97 Things Every Engineering Manager Should Know; Camille Fournier; Audiobook
-
Soft Skills; John Sommez; Manning Publications
-
The Joy of Missing Out; Christina Crook; New Society Publishers
-
The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd
-
Staff Engineer: Leadership beyond the management track; Will Larson; Audiobook
-
Atomic Habits; James Clear; Random House Business
-
The Bullet Journal Method; Ryder Carroll; Fourth Estate
The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books
-
Search Inside Yourself - The Unexpected path to Achieving Success, Happiness (and World Peace); Chade-Meng Tan, Daniel Goleman, Jon Kabat-Zinn; HarperOne
-
The Software Engineer's Guidebook: Navigating senior, tech lead, and staff engineer positions at tech companies and startups; Gergely Orosz; Audiobook
-
Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing
Stop starting, start finishing; Arne Roock; Lean-Kanban University
-
The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select
+
Getting Things Done; David Allen
+
The Power of Now; Eckhard Tolle; Yellow Kite
+
The Complete Software Developer's Career Guide; John Sonmez; Unabridged Audiobook
+
97 Things Every Engineering Manager Should Know; Camille Fournier; Audiobook
+
101 Essays that change the way you think; Brianna Wiest; Audiobook
+
Time Management for System Administrators; Thomas A. Limoncelli; O'Reilly
+
Atomic Habits; James Clear; Random House Business
+
Slow Productivity; Cal Newport; Penguin Random House
+
Solve for Happy; Mo Gawdat (RE-READ 1ST TIME)
+
Psycho-Cybernetics; Maxwell Maltz; Perigee Books
+
Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion
Ultralearning; Scott Young; Thorsons
+
Ultralearning; Anna Laurent; Self-published via Amazon
+
The Courage to Be Disliked; Ichiro Kishimi and Fumitake Koga; Audiobook
Influence without Authority; A. Cohen, D. Bradford; Wiley
-
Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion
-
The 7 Habits Of Highly Effective People; Stephen R. Covey; Simon & Schuster UK
-
Getting Things Done; David Allen
-
Meditation for Mortals, Oliver Burkeman, Audiobook
+
The Good Enough Job; Simone Stolzoff; Ebury Edge
+
Deep Work; Cal Newport; Piatkus
Digital Minimalism; Cal Newport; Portofolio Penguin
+
The Bullet Journal Method; Ryder Carroll; Fourth Estate
+
The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd
+
The 7 Habits Of Highly Effective People; Stephen R. Covey; Simon & Schuster UK
+
The Joy of Missing Out; Christina Crook; New Society Publishers
+
Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing
@@ -164,31 +164,31 @@
Some of these were in-person with exams; others were online learning lectures only. In random order:
-
Red Hat Certified System Administrator; Course + certification (Although I had the option, I decided not to take the next course as it is more effective to self learn what I need)
-
Ultimate Go Programming; Bill Kennedy; O'Reilly Online
-
Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training
+
Apache Tomcat Best Practises; 3-day on-site training
AWS Immersion Day; Amazon; 1-day interactive online training
Scripting Vim; Damian Conway; O'Reilly Online
+
F5 Loadbalancers Training; 2-day on-site training; F5, Inc.
+
Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training
MySQL Deep Dive Workshop; 2-day on-site training
-
Functional programming lecture; Remote University of Hagen
-
Apache Tomcat Best Practises; 3-day on-site training
+
Protocol buffers; O'Reilly Online
+
Ultimate Go Programming; Bill Kennedy; O'Reilly Online
The Ultimate Kubernetes Bootcamp; School of Devops; O'Reilly Online
-
Algorithms Video Lectures; Robert Sedgewick; O'Reilly Online
+
Red Hat Certified System Administrator; Course + certification (Although I had the option, I decided not to take the next course as it is more effective to self learn what I need)
Cloud Operations on AWS - Learn how to configure, deploy, maintain, and troubleshoot your AWS environments; 3-day online live training with labs; Amazon
-
Developing IaC with Terraform (with Live Lessons); O'Reilly Online
-
F5 Loadbalancers Training; 2-day on-site training; F5, Inc.
+
Functional programming lecture; Remote University of Hagen
+
Algorithms Video Lectures; Robert Sedgewick; O'Reilly Online
Structure and Interpretation of Computer Programs; Harold Abelson and more...;
-
Protocol buffers; O'Reilly Online
The Well-Grounded Rubyist Video Edition; David. A. Black; O'Reilly Online
+
Developing IaC with Terraform (with Live Lessons); O'Reilly Online
Technical guides
These are not whole books, but guides (smaller or larger) which I found very useful. in random order:
-
Raku Guide at https://raku.guide
-
Advanced Bash-Scripting Guide
How CPUs work at https://cpu.land
+
Advanced Bash-Scripting Guide
+
Raku Guide at https://raku.guide
Podcasts
@@ -197,32 +197,32 @@
In random order:
-
Deep Questions with Cal Newport
-
The Pragmatic Engineer Podcast
-
Pratical AI
-
Wednesday Wisdom
-
The Changelog Podcast(s)
-
Backend Banter
+
Hidden Brain
BSD Now [BSD]
-
Dev Interrupted
-
Cup o' Go [Golang]
-
The ProdCast (Google SRE Podcast)
+
Backend Banter
+
Wednesday Wisdom
Modern Mentor
+
Cup o' Go [Golang]
Fallthrough [Golang]
-
Hidden Brain
-
Fork Around And Find Out
Maintainable
+
Fork Around And Find Out
+
The Changelog Podcast(s)
+
Dev Interrupted
+
The Pragmatic Engineer Podcast
+
The ProdCast (Google SRE Podcast)
+
Pratical AI
+
Deep Questions with Cal Newport
Podcasts I liked
I liked them but am not listening to them anymore. The podcasts have either "finished" (no more episodes) or I stopped listening to them due to time constraints or a shift in my interests.
-
Ship It (predecessor of Fork Around And Find Out)
-
Java Pub House
FLOSS weekly
-
CRE: Chaosradio Express [german]
Modern Mentor
+
Java Pub House
+
CRE: Chaosradio Express [german]
+
Ship It (predecessor of Fork Around And Find Out)
Go Time (predecessor of fallthrough)
Newsletters I like
@@ -230,18 +230,18 @@
This is a mix of tech and non-tech newsletters I am subscribed to. In random order:
-
-Update (2026-02-05):** This blog post has been updated to include a new section on exposing services via LAN ingress. The original blog post focused on external access through OpenBSD edge relays. The new section documents how to:
-
Important Note: GitOps Migration
**Note:** After publishing this blog post, the f3s cluster was migrated from imperative Helm deployments to declarative GitOps using ArgoCD. The Kubernetes manifests, Helm charts, and Justfiles in the repository have been reorganized for ArgoCD-based continuous deployment.
@@ -258,281 +252,6 @@ prometheus-kube-prometheus-prometheus ClusterIP 10.43<
-
Exposing services via LAN ingress
-
-In addition to external access through the OpenBSD relays, services can also be exposed on the local network using LAN-specific ingresses. This is useful for accessing services from within the home network without going through the internet, reducing latency and providing an alternative path if the external relays are unavailable.
-
-The LAN ingress architecture leverages the existing FreeBSD CARP (Common Address Redundancy Protocol) failover infrastructure that's already in place for NFS-over-TLS (see Part 5). Instead of deploying MetalLB or another LoadBalancer implementation, we reuse the CARP virtual IP (192.168.1.138) by adding HTTP/HTTPS forwarding alongside the existing stunnel service on port 2323.
-
-*Architecture overview*:
-
-The LAN access path differs from external access:
-
-**External access (*.f3s.foo.zone):**
-
FreeBSD relayd performs pure TCP forwarding (Layer 4) for ports 80 and 443, not TLS termination
-
Traefik inside k3s handles TLS offloading using certificates from cert-manager
-
Self-signed CA for LAN domains (no external dependencies)
-
CARP provides automatic failover between f0 and f1
-
No code changes to applications—just add a LAN ingress resource
-
-*Installing cert-manager*:
-
-First, install cert-manager to handle certificate lifecycle management for LAN services. The installation is automated with a Justfile:
-
-codeberg.org/snonux/conf/f3s/cert-manager
-
-
-
$ cd conf/f3s/cert-manager
-$ just install
-kubectl apply -f cert-manager.yaml
-# ... cert-manager CRDs and resources created ...
-kubectl apply -f self-signed-issuer.yaml
-clusterissuer.cert-manager.io/selfsigned-issuer created
-clusterissuer.cert-manager.io/selfsigned-ca-issuer created
-kubectl apply -f ca-certificate.yaml
-certificate.cert-manager.io/selfsigned-ca created
-kubectl apply -f wildcard-certificate.yaml
-certificate.cert-manager.io/f3s-lan-wildcard created
-
-
-This creates:
-
-
-
A self-signed ClusterIssuer
-
A CA certificate (f3s-lan-ca) valid for 10 years
-
A CA-signed ClusterIssuer
-
A wildcard certificate (*.f3s.lan.foo.zone) valid for 90 days with automatic renewal
-
-Verify the certificates:
-
-
-
$ kubectl get certificate -n cert-manager
-NAME READY SECRET AGE
-f3s-lan-wildcard True f3s-lan-tls 5m
-selfsigned-ca True selfsigned-ca-secret 5m
-
-
-The wildcard certificate (f3s-lan-tls) needs to be copied to any namespace that uses it:
-
-
-
-
-*Configuring FreeBSD relayd for LAN access*:
-
-On both FreeBSD hosts (f0, f1), install and configure relayd for TCP forwarding:
-
-
-
paul@f0:~ % doas pkg install -y relayd
-
-
-Create /usr/local/etc/relayd.conf:
-
-
-# k3s nodes backend table
-table <k3s_nodes> { 192.168.1.120 192.168.1.121 192.168.1.122 }
-
-# TCP forwarding to Traefik (no TLS termination)
-relay "lan_http" {
- listen on 192.168.1.138 port 80
- forward to <k3s_nodes> port 80 check tcp
-}
-
-relay "lan_https" {
- listen on 192.168.1.138 port 443
- forward to <k3s_nodes> port 443 check tcp
-}
-
-
-Note: The IP addresses 192.168.1.120-122 are the LAN IPs of the k3s nodes (r0, r1, r2), not their WireGuard IPs. FreeBSD relayd requires PF (Packet Filter) to be enabled. Create a minimal /etc/pf.conf:
-
-
-# Basic PF rules for relayd
-set skip on lo0
-pass in quick
-pass out quick
-
-
-Enable PF and relayd:
-
-
-
paul@f0:~ % doas sysrc pf_enable=YES pflog_enable=YES relayd_enable=YES
-paul@f0:~ % doas service pf start
-paul@f0:~ % doas service pflog start
-paul@f0:~ % doas service relayd start
-
-
-Verify relayd is listening on the CARP VIP:
-
-
-
-
-Repeat the same configuration on f1. Both hosts will run relayd listening on the CARP VIP, but only the CARP MASTER will respond to traffic. When failover occurs, the new MASTER takes over seamlessly.
-
-*Adding LAN ingress to services*:
-
-To expose a service on the LAN, add a second Ingress resource to its Helm chart. Here's an example for Grafana:
-
-
-
-*Client-side DNS and CA setup*:
-
-To access LAN services, clients need DNS entries and must trust the self-signed CA.
-
-Add DNS entries to /etc/hosts on your laptop:
-
-
-
$ sudo tee -a /etc/hosts << 'EOF'
-# f3s LAN services
-192.168.1.138 grafana.f3s.lan.foo.zone
-192.168.1.138 navidrome.f3s.lan.foo.zone
-EOF
-
-
-The CARP VIP 192.168.1.138 provides high availability—traffic automatically fails over to the backup host if the master goes down.
-
-Export the self-signed CA certificate:
-
-
-
-
-After trusting the CA, browsers will accept the LAN certificates without warnings.
-
-*Scaling to other services*:
-
-The same pattern can be applied to any service. To add LAN access:
-
-1. Copy the f3s-lan-tls secret to the service's namespace (if not already there)
-2. Add a LAN Ingress resource using the pattern above
-3. Configure DNS: 192.168.1.138 service.f3s.lan.foo.zone
-4. Commit and push (ArgoCD will deploy automatically)
-
-No changes needed to:
-
-
-
relayd configuration (forwards all traffic)
-
cert-manager (wildcard cert covers all *.f3s.lan.foo.zone)
-
CARP configuration (VIP shared by all services)
-
-*TLS offloaders summary*:
-
-The f3s infrastructure now has three distinct TLS offloaders:
-
-
-
**OpenBSD relayd**: External internet traffic (*.f3s.foo.zone) using Let's Encrypt
-
**Traefik (k3s)**: LAN HTTPS traffic (*.f3s.lan.foo.zone) using cert-manager
-
**stunnel**: NFS-over-TLS (port 2323) using custom PKI
-
-Each serves a different purpose with appropriate certificate management for its use case.
-
Installing Loki and Alloy
While Prometheus handles metrics, Loki handles logs. It's designed to be cost-effective and easy to operate—it doesn't index the contents of logs, only the metadata (labels), making it very efficient for storage.
diff --git a/gemfeed/atom.xml b/gemfeed/atom.xml
index ef6b6975..92491865 100644
--- a/gemfeed/atom.xml
+++ b/gemfeed/atom.xml
@@ -1,6 +1,6 @@
- 2026-02-05T17:44:05+02:00
+ 2026-02-05T17:48:12+02:00foo.zone feedTo be in the .zone!
@@ -2706,7 +2706,6 @@ $ curl -s -G "http://localhost:3200/api/search" \
-
-Update (2026-02-05):** This blog post has been updated to include a new section on exposing services via LAN ingress. The original blog post focused on external access through OpenBSD edge relays. The new section documents how to:
-
Important Note: GitOps Migration
**Note:** After publishing this blog post, the f3s cluster was migrated from imperative Helm deployments to declarative GitOps using ArgoCD. The Kubernetes manifests, Helm charts, and Justfiles in the repository have been reorganized for ArgoCD-based continuous deployment.
@@ -2931,281 +2925,6 @@ prometheus-kube-prometheus-prometheus ClusterIP 10.43<
-
Exposing services via LAN ingress
-
-In addition to external access through the OpenBSD relays, services can also be exposed on the local network using LAN-specific ingresses. This is useful for accessing services from within the home network without going through the internet, reducing latency and providing an alternative path if the external relays are unavailable.
-
-The LAN ingress architecture leverages the existing FreeBSD CARP (Common Address Redundancy Protocol) failover infrastructure that's already in place for NFS-over-TLS (see Part 5). Instead of deploying MetalLB or another LoadBalancer implementation, we reuse the CARP virtual IP (192.168.1.138) by adding HTTP/HTTPS forwarding alongside the existing stunnel service on port 2323.
-
-*Architecture overview*:
-
-The LAN access path differs from external access:
-
-**External access (*.f3s.foo.zone):**
-
FreeBSD relayd performs pure TCP forwarding (Layer 4) for ports 80 and 443, not TLS termination
-
Traefik inside k3s handles TLS offloading using certificates from cert-manager
-
Self-signed CA for LAN domains (no external dependencies)
-
CARP provides automatic failover between f0 and f1
-
No code changes to applications—just add a LAN ingress resource
-
-*Installing cert-manager*:
-
-First, install cert-manager to handle certificate lifecycle management for LAN services. The installation is automated with a Justfile:
-
-codeberg.org/snonux/conf/f3s/cert-manager
-
-
-
$ cd conf/f3s/cert-manager
-$ just install
-kubectl apply -f cert-manager.yaml
-# ... cert-manager CRDs and resources created ...
-kubectl apply -f self-signed-issuer.yaml
-clusterissuer.cert-manager.io/selfsigned-issuer created
-clusterissuer.cert-manager.io/selfsigned-ca-issuer created
-kubectl apply -f ca-certificate.yaml
-certificate.cert-manager.io/selfsigned-ca created
-kubectl apply -f wildcard-certificate.yaml
-certificate.cert-manager.io/f3s-lan-wildcard created
-
-
-This creates:
-
-
-
A self-signed ClusterIssuer
-
A CA certificate (f3s-lan-ca) valid for 10 years
-
A CA-signed ClusterIssuer
-
A wildcard certificate (*.f3s.lan.foo.zone) valid for 90 days with automatic renewal
-
-Verify the certificates:
-
-
-
$ kubectl get certificate -n cert-manager
-NAME READY SECRET AGE
-f3s-lan-wildcard True f3s-lan-tls 5m
-selfsigned-ca True selfsigned-ca-secret 5m
-
-
-The wildcard certificate (f3s-lan-tls) needs to be copied to any namespace that uses it:
-
-
-
-
-*Configuring FreeBSD relayd for LAN access*:
-
-On both FreeBSD hosts (f0, f1), install and configure relayd for TCP forwarding:
-
-
-
paul@f0:~ % doas pkg install -y relayd
-
-
-Create /usr/local/etc/relayd.conf:
-
-
-# k3s nodes backend table
-table <k3s_nodes> { 192.168.1.120 192.168.1.121 192.168.1.122 }
-
-# TCP forwarding to Traefik (no TLS termination)
-relay "lan_http" {
- listen on 192.168.1.138 port 80
- forward to <k3s_nodes> port 80 check tcp
-}
-
-relay "lan_https" {
- listen on 192.168.1.138 port 443
- forward to <k3s_nodes> port 443 check tcp
-}
-
-
-Note: The IP addresses 192.168.1.120-122 are the LAN IPs of the k3s nodes (r0, r1, r2), not their WireGuard IPs. FreeBSD relayd requires PF (Packet Filter) to be enabled. Create a minimal /etc/pf.conf:
-
-
-# Basic PF rules for relayd
-set skip on lo0
-pass in quick
-pass out quick
-
-
-Enable PF and relayd:
-
-
-
paul@f0:~ % doas sysrc pf_enable=YES pflog_enable=YES relayd_enable=YES
-paul@f0:~ % doas service pf start
-paul@f0:~ % doas service pflog start
-paul@f0:~ % doas service relayd start
-
-
-Verify relayd is listening on the CARP VIP:
-
-
-
-
-Repeat the same configuration on f1. Both hosts will run relayd listening on the CARP VIP, but only the CARP MASTER will respond to traffic. When failover occurs, the new MASTER takes over seamlessly.
-
-*Adding LAN ingress to services*:
-
-To expose a service on the LAN, add a second Ingress resource to its Helm chart. Here's an example for Grafana:
-
-
-
-*Client-side DNS and CA setup*:
-
-To access LAN services, clients need DNS entries and must trust the self-signed CA.
-
-Add DNS entries to /etc/hosts on your laptop:
-
-
-
$ sudo tee -a /etc/hosts << 'EOF'
-# f3s LAN services
-192.168.1.138 grafana.f3s.lan.foo.zone
-192.168.1.138 navidrome.f3s.lan.foo.zone
-EOF
-
-
-The CARP VIP 192.168.1.138 provides high availability—traffic automatically fails over to the backup host if the master goes down.
-
-Export the self-signed CA certificate:
-
-
-
-
-After trusting the CA, browsers will accept the LAN certificates without warnings.
-
-*Scaling to other services*:
-
-The same pattern can be applied to any service. To add LAN access:
-
-1. Copy the f3s-lan-tls secret to the service's namespace (if not already there)
-2. Add a LAN Ingress resource using the pattern above
-3. Configure DNS: 192.168.1.138 service.f3s.lan.foo.zone
-4. Commit and push (ArgoCD will deploy automatically)
-
-No changes needed to:
-
-
-
relayd configuration (forwards all traffic)
-
cert-manager (wildcard cert covers all *.f3s.lan.foo.zone)
-
CARP configuration (VIP shared by all services)
-
-*TLS offloaders summary*:
-
-The f3s infrastructure now has three distinct TLS offloaders:
-
-
-
**OpenBSD relayd**: External internet traffic (*.f3s.foo.zone) using Let's Encrypt
-
**Traefik (k3s)**: LAN HTTPS traffic (*.f3s.lan.foo.zone) using cert-manager
-
**stunnel**: NFS-over-TLS (port 2323) using custom PKI
-
-Each serves a different purpose with appropriate certificate management for its use case.
-
Installing Loki and Alloy
While Prometheus handles metrics, Loki handles logs. It's designed to be cost-effective and easy to operate—it doesn't index the contents of logs, only the metadata (labels), making it very efficient for storage.
diff --git a/index.html b/index.html
index cee9696a..32a27460 100644
--- a/index.html
+++ b/index.html
@@ -13,7 +13,7 @@
Hello!
-This site was generated at 2026-02-05T17:44:05+02:00 by Gemtexter
+This site was generated at 2026-02-05T17:48:12+02:00 by Gemtexter
-This site was last updated at 2026-02-05T17:44:05+02:00
+This site was last updated at 2026-02-05T17:48:12+02:00
The following stats were collected via uptimed on all of my personal computers over many years and the output was generated by guprecords, the global uptime records stats analyser of mine.