summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-07-13 19:47:20 +0300
committerPaul Buetow <paul@buetow.org>2025-07-13 19:47:20 +0300
commit962654647c86eb1af3015a6d5ccbf94507c3fc5c (patch)
tree16ac1cc161ec9302ff75cceef3d9531b801605d7
parent1f56a6cdc229dde967f21eb56c32d0f38b2604c1 (diff)
Update content for gemtext
-rw-r--r--about/resources.gmi200
-rw-r--r--gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.gmi29
-rw-r--r--gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.gmi.tpl29
-rw-r--r--gemfeed/atom.xml31
-rw-r--r--index.gmi2
-rw-r--r--uptime-stats.gmi2
6 files changed, 163 insertions, 130 deletions
diff --git a/about/resources.gmi b/about/resources.gmi
index 257fe535..4da1a375 100644
--- a/about/resources.gmi
+++ b/about/resources.gmi
@@ -35,105 +35,105 @@ You won't find any links on this site because, over time, the links will break.
In random order:
-* Java ist auch eine Insel; Christian Ullenboom;
-* Data Science at the Command Line; Jeroen Janssens; O'Reilly
-* Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner
-* Raku Fundamentals; Moritz Lenz; Apress
-* DNS and BIND; Cricket Liu; O'Reilly
-* Raku Recipes; J.J. Merelo; Apress
+* Clusterbau mit Linux-HA; Michael Schwartzkopff; O'Reilly
+* DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible
* Go Brain Teasers - Exercise Your Mind; Miki Tebeka; The Pragmatic Programmers
+* Effective awk programming; Arnold Robbins; O'Reilly
+* Raku Recipes; J.J. Merelo; Apress
+* Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson
+* Concurrency in Go; Katherine Cox-Buday; O'Reilly
+* Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O'Reilly
+* C++ Programming Language; Bjarne Stroustrup;
+* Terraform Cookbook; Mikael Krief; Packt Publishing
+* Leanring eBPF; Liz Rice; O'Reilly
* The KCNA (Kubernetes and Cloud Native Associate) Book; Nigel Poulton
+* Modern Perl; Chromatic ; Onyx Neon Press
* Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications
-* The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible
+* Raku Fundamentals; Moritz Lenz; Apress
* Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O'Reilly
-* 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
-* Funktionale Programmierung; Peter Pepper; Springer
-* Higher Order Perl; Mark Dominus; Morgan Kaufmann
-* 100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications
-* Systemprogrammierung in Go; Frank Müller; dpunkt
-* Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt
-* Pro Puppet; James Turnbull, Jeffrey McCune; Apress
-* Concurrency in Go; Katherine Cox-Buday; O'Reilly
-* Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall & Jon Orwant; O'Reilly
-* Tmux 2: Productive Mouse-free Development; Brain P. Hogan; The Pragmatic Programmers
* Perl New Features; Joshua McAdams, brian d foy; Perl School
-* DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible
-* Terraform Cookbook; Mikael Krief; Packt Publishing
+* Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press
+* DNS and BIND; Cricket Liu; O'Reilly
* The Docker Book; James Turnbull; Kindle
-* Polished Ruby Programming; Jeremy Evans; Packt Publishing
-* C++ Programming Language; Bjarne Stroustrup;
-* Site Reliability Engineering; How Google runs production systems; O'Reilly
-* Clusterbau mit Linux-HA; Michael Schwartzkopff; O'Reilly
+* Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt
+* Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall & Jon Orwant; O'Reilly
+* 97 things every SRE should know; Emil Stolarsky, Jaime Woo; O'Reilly
+* Higher Order Perl; Mark Dominus; Morgan Kaufmann
+* Java ist auch eine Insel; Christian Ullenboom;
+* Systemprogrammierung in Go; Frank Müller; dpunkt
+* Ultimate Go Notebook; Bill Kennedy
+* 21st Century C: C Tips from the New School; Ben Klemens; O'Reilly
* The Kubernetes Book; Nigel Poulton; Unabridged Audiobook
-* Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press
-* Effective Java; Joshua Bloch; Addison-Wesley Professional
+* Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O'Reilly
+* Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner
+* 100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications
+* Pro Puppet; James Turnbull, Jeffrey McCune; Apress
+* 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
* Learn You Some Erlang for Great Good; Fred Herbert; No Starch Press
-* Ultimate Go Notebook; Bill Kennedy
-* Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O'Reilly
-* Modern Perl; Chromatic ; Onyx Neon Press
-* Developing Games in Java; David Brackeen and others...; New Riders
* The Pragmatic Programmer; David Thomas; Addison-Wesley
-* 97 things every SRE should know; Emil Stolarsky, Jaime Woo; O'Reilly
-* 21st Century C: C Tips from the New School; Ben Klemens; O'Reilly
+* Effective Java; Joshua Bloch; Addison-Wesley Professional
+* Polished Ruby Programming; Jeremy Evans; Packt Publishing
+* Programming Ruby 3.3 (5th Edition); Noel Rappin, with Dave Thomas; The Pragmatic Bookshelf
+* Tmux 2: Productive Mouse-free Development; Brain P. Hogan; The Pragmatic Programmers
* The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional
-* Effective awk programming; Arnold Robbins; O'Reilly
-* Leanring eBPF; Liz Rice; O'Reilly
-* Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O'Reilly
-* Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson
+* Developing Games in Java; David Brackeen and others...; New Riders
+* The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible
+* Site Reliability Engineering; How Google runs production systems; O'Reilly
+* Funktionale Programmierung; Peter Pepper; Springer
+* Data Science at the Command Line; Jeroen Janssens; O'Reilly
## 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:
+* Relayd and Httpd Mastery; Michael W Lucas
+* Groovy Kurz & Gut; Joerg Staudemeier; O'Reilly
* The Linux Programming Interface; Michael Kerrisk; No Starch Press
-* Algorithms; Robert Sedgewick, Kevin Wayne; Addison Wesley
* BPF Performance Tools - Linux System and Application Observability, Brendan Gregg; Addison Wesley
-* Implementing Service Level Objectives; Alex Hidalgo; O'Reilly
-* Go: Design Patterns for Real-World Projects; Mat Ryer; Packt
-* Groovy Kurz & Gut; Joerg Staudemeier; O'Reilly
-* Relayd and Httpd Mastery; Michael W Lucas
* Understanding the Linux Kernel; Daniel P. Bovet, Marco Cesati; O'Reilly
+* Go: Design Patterns for Real-World Projects; Mat Ryer; Packt
+* Algorithms; Robert Sedgewick, Kevin Wayne; Addison Wesley
+* Implementing Service Level Objectives; Alex Hidalgo; O'Reilly
## Self-development and soft-skills books
In random order:
-* Atomic Habits; James Clear; Random House Business
+* Ultralearning; Anna Laurent; Self-published via Amazon
+* The 7 Habits Of Highly Effective People; Stephen R. Covey; Simon & Schuster UK
+* The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select
* Psycho-Cybernetics; Maxwell Maltz; Perigee Books
-* The Bullet Journal Method; Ryder Carroll; Fourth Estate
-* Coders at Work - Reflections on the craft of programming, Peter Seibel and Mitchell Dorian et al., Audiobook
+* 101 Essays that change the way you think; Brianna Wiest; Audiobook
+* The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books
+* Time Management for System Administrators; Thomas A. Limoncelli; O'Reilly
+* Eat That Frog; Brian Tracy
+* Soft Skills; John Sommez; Manning Publications
+* Never Split the Difference; Chris Voss, Tahl Raz; Random House Business
* Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press
* Influence without Authority; A. Cohen, D. Bradford; Wiley
-* The Good Enough Job; Simone Stolzoff; Ebury Edge
-* The Off Switch; Mark Cropley; Virgin Books (RE-READ 1ST TIME)
-* Eat That Frog; Brian Tracy
* The Joy of Missing Out; Christina Crook; New Society Publishers
-* Ultralearning; Anna Laurent; Self-published via Amazon
-* Getting Things Done; David Allen
-* Digital Minimalism; Cal Newport; Portofolio Penguin
* Ultralearning; Scott Young; Thorsons
-* Soft Skills; John Sommez; Manning Publications
-* Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing
-* The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd
+* So Good They Can't Ignore You; Cal Newport; Business Plus
+* Deep Work; Cal Newport; Piatkus
+* Staff Engineer: Leadership beyond the management track; Will Larson; Audiobook
* Slow Productivity; Cal Newport; Penguin Random House
-* The Power of Now; Eckhard Tolle; Yellow Kite
-* Time Management for System Administrators; Thomas A. Limoncelli; O'Reilly
-* Eat That Frog!; Brian Tracy; Hodder Paperbacks
-* The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books
-* 101 Essays that change the way you think; Brianna Wiest; Audiobook
-* Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion
-* Never Split the Difference; Chris Voss, Tahl Raz; Random House Business
* Stop starting, start finishing; Arne Roock; Lean-Kanban University
+* The Power of Now; Eckhard Tolle; Yellow Kite
+* Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing
* Solve for Happy; Mo Gawdat (RE-READ 1ST TIME)
-* The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select
-* Deep Work; Cal Newport; Piatkus
-* So Good They Can't Ignore You; Cal Newport; Business Plus
-* The 7 Habits Of Highly Effective People; Stephen R. Covey; Simon & Schuster UK
-* Meditation for Mortals, Oliver Burkeman, Audiobook
+* Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion
* The Complete Software Developer's Career Guide; John Sonmez; Unabridged Audiobook
+* The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd
+* The Good Enough Job; Simone Stolzoff; Ebury Edge
+* Atomic Habits; James Clear; Random House Business
+* Eat That Frog!; Brian Tracy; Hodder Paperbacks
+* Digital Minimalism; Cal Newport; Portofolio Penguin
+* 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
-* Staff Engineer: Leadership beyond the management track; Will Larson; Audiobook
+* The Bullet Journal Method; Ryder Carroll; Fourth Estate
+* Getting Things Done; David Allen
+* 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
=> ../notes/index.gmi Here are notes of mine for some of the books
@@ -141,30 +141,30 @@ In random order:
Some of these were in-person with exams; others were online learning lectures only. In random order:
+* The Ultimate Kubernetes Bootcamp; School of Devops; O'Reilly Online
+* Ultimate Go Programming; Bill Kennedy; O'Reilly Online
+* Developing IaC with Terraform (with Live Lessons); O'Reilly Online
+* Protocol buffers; 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
+* Apache Tomcat Best Practises; 3-day on-site training
+* The Well-Grounded Rubyist Video Edition; David. A. Black; 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)
* Structure and Interpretation of Computer Programs; Harold Abelson and more...;
-* The Well-Grounded Rubyist Video Edition; David. A. Black; O'Reilly Online
* MySQL Deep Dive Workshop; 2-day on-site training
+* Functional programming lecture; Remote University of Hagen
* AWS Immersion Day; Amazon; 1-day interactive online training
-* Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training
* Cloud Operations on AWS - Learn how to configure, deploy, maintain, and troubleshoot your AWS environments; 3-day online live training with labs; Amazon
-* F5 Loadbalancers Training; 2-day on-site training; F5, Inc.
-* Protocol buffers; O'Reilly Online
-* Apache Tomcat Best Practises; 3-day on-site training
-* Functional programming lecture; Remote University of Hagen
-* The Ultimate Kubernetes Bootcamp; School of Devops; O'Reilly Online
* Scripting Vim; Damian Conway; O'Reilly Online
-* Ultimate Go Programming; Bill Kennedy; O'Reilly Online
-* Developing IaC with Terraform (with Live Lessons); O'Reilly Online
* Algorithms Video Lectures; Robert Sedgewick; 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
-* How CPUs work at https://cpu.land
* Advanced Bash-Scripting Guide
+* How CPUs work at https://cpu.land
+* Raku Guide at https://raku.guide
## Podcasts
@@ -172,57 +172,57 @@ These are not whole books, but guides (smaller or larger) which I found very use
In random order:
-* Fork Around And Find Out
-* Dev Interrupted
-* Fallthrough [Golang]
-* Modern Mentor
-* The Pragmatic Engineer Podcast
-* Pratical AI
-* Deep Questions with Cal Newport
-* BSD Now [BSD]
* Backend Banter
-* The Changelog Podcast(s)
+* The ProdCast (Google SRE Podcast)
+* Deep Questions with Cal Newport
* Cup o' Go [Golang]
+* Pratical AI
+* The Changelog Podcast(s)
+* Modern Mentor
+* Fallthrough [Golang]
+* Fork Around And Find Out
+* BSD Now [BSD]
* Maintainable
-* The ProdCast (Google SRE Podcast)
+* Dev Interrupted
+* The Pragmatic Engineer Podcast
* Hidden Brain
### 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)
-* Modern Mentor
-* CRE: Chaosradio Express [german]
-* FLOSS weekly
* Java Pub House
* Go Time (predecessor of fallthrough)
+* CRE: Chaosradio Express [german]
+* Modern Mentor
+* Ship It (predecessor of Fork Around And Find Out)
+* FLOSS weekly
## Newsletters I like
This is a mix of tech and non-tech newsletters I am subscribed to. In random order:
-* The Imperfectionist
+* Golang Weekly
+* The Pragmatic Engineer
* The Valuable Dev
-* Changelog News
-* byteSizeGo
+* The Imperfectionist
+* Register Spill
* Andreas Brandhorst Newsletter (Sci-Fi author)
+* byteSizeGo
* Monospace Mentor
-* Golang Weekly
+* Changelog News
+* VK Newsletter
* Ruby Weekly
* Applied Go Weekly Newsletter
-* VK Newsletter
-* Register Spill
-* The Pragmatic Engineer
## Magazines I like(d)
This is a mix of tech I like(d). I may not be a current subscriber, but now and then, I buy an issue. In random order:
-* LWN (online only)
* Linux Magazine
-* Linux User
* freeX (not published anymore)
+* LWN (online only)
+* Linux User
# Formal education
diff --git a/gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.gmi b/gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.gmi
index f5e85799..54cc79a3 100644
--- a/gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.gmi
+++ b/gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.gmi
@@ -661,16 +661,19 @@ paul@f0:~ % doas sysrc zfskeys_datasets="zdata/enc zdata/enc/nfsdata zroot/bhyve
zfskeys_datasets: -> zdata/enc zdata/enc/nfsdata zroot/bhyve
# Set correct key locations for all datasets
-paul@f0:~ % doas zfs set keylocation=file:///keys/f0.lan.buetow.org:zdata.key zdata/enc/nfsdata
+paul@f0:~ % doas zfs set \
+ keylocation=file:///keys/f0.lan.buetow.org:zdata.key zdata/enc/nfsdata
# On f1 - include the replicated dataset
paul@f1:~ % doas sysrc zfskeys_enable=YES
zfskeys_enable: YES -> YES
-paul@f1:~ % doas sysrc zfskeys_datasets="zdata/enc zroot/bhyve zdata/sink/f0/zdata/enc/nfsdata"
+paul@f1:~ % doas sysrc \
+ zfskeys_datasets="zdata/enc zroot/bhyve zdata/sink/f0/zdata/enc/nfsdata"
zfskeys_datasets: -> zdata/enc zroot/bhyve zdata/sink/f0/zdata/enc/nfsdata
# Set key location for replicated dataset
-paul@f1:~ % doas zfs set keylocation=file:///keys/f0.lan.buetow.org:zdata.key zdata/sink/f0/zdata/enc/nfsdata
+paul@f1:~ % doas zfs set \
+ keylocation=file:///keys/f0.lan.buetow.org:zdata.key zdata/sink/f0/zdata/enc/nfsdata
```
Important notes:
@@ -978,7 +981,8 @@ And to configure stunnel on `f1`, we run:
paul@f1:~ % doas pkg install -y stunnel
# Copy certificates from f0
-paul@f0:~ % doas tar -cf /tmp/stunnel-certs.tar -C /usr/local/etc/stunnel server-cert.pem server-key.pem ca
+paul@f0:~ % doas tar -cf /tmp/stunnel-certs.tar \
+ -C /usr/local/etc/stunnel server-cert.pem server-key.pem ca
paul@f0:~ % scp /tmp/stunnel-certs.tar f1:/tmp/
paul@f1:~ % cd /usr/local/etc/stunnel && doas tar -xf /tmp/stunnel-certs.tar
@@ -1230,7 +1234,8 @@ if ! mount | grep -q "on /data/nfs "; then
exit 0
fi
-# Check if the marker file exists (identifies that the ZFS data set is properly mounted)
+# Check if the marker file exists
+# (identifies that the ZFS data set is properly mounted)
if [ ! -f "$MARKER_FILE" ]; then
log_message "SKIP: Marker file $MARKER_FILE not found"
exit 0
@@ -1360,7 +1365,10 @@ To mount NFS through the stunnel encrypted tunnel, we run:
# Verify mount
[root@r0 ~]# mount | grep k3svolumes
-127.0.0.1:/data/nfs/k3svolumes on /data/nfs/k3svolumes type nfs4 (rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=2323,timeo=600,retrans=2,sec=sys,clientaddr=127.0.0.1,local_lock=none,addr=127.0.0.1)
+127.0.0.1:/data/nfs/k3svolumes on /data/nfs/k3svolumes
+ type nfs4 (rw,relatime,vers=4.2,rsize=131072,wsize=131072,
+ namlen=255,hard,proto=tcp,port=2323,timeo=600,retrans=2,sec=sys,
+ clientaddr=127.0.0.1,local_lock=none,addr=127.0.0.1)
# For persistent mount, add to /etc/fstab:
127.0.0.1:/data/nfs/k3svolumes /data/nfs/k3svolumes nfs4 port=2323,_netdev 0 0
@@ -1525,9 +1533,12 @@ ls: cannot access '/data/nfs/k3svolumes/': Stale file handle
# 5. Check automatic recovery (within 10 seconds)
[root@r0 ~]# journalctl -u nfs-mount-monitor -f
-Jul 06 10:15:32 r0 nfs-monitor[1234]: NFS mount unhealthy detected at Sun Jul 6 10:15:32 EEST 2025
-Jul 06 10:15:32 r0 nfs-monitor[1234]: Attempting to fix stale NFS mount at Sun Jul 6 10:15:32 EEST 2025
-Jul 06 10:15:33 r0 nfs-monitor[1234]: NFS mount fixed at Sun Jul 6 10:15:33 EEST 2025
+Jul 06 10:15:32 r0 nfs-monitor[1234]: NFS mount unhealthy detected at \
+ Sun Jul 6 10:15:32 EEST 2025
+Jul 06 10:15:32 r0 nfs-monitor[1234]: Attempting to fix stale NFS mount at \
+ Sun Jul 6 10:15:32 EEST 2025
+Jul 06 10:15:33 r0 nfs-monitor[1234]: NFS mount fixed at \
+ Sun Jul 6 10:15:33 EEST 2025
```
Failover Timeline:
diff --git a/gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.gmi.tpl b/gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.gmi.tpl
index f852cdaf..4eddafa7 100644
--- a/gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.gmi.tpl
+++ b/gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.gmi.tpl
@@ -614,16 +614,19 @@ paul@f0:~ % doas sysrc zfskeys_datasets="zdata/enc zdata/enc/nfsdata zroot/bhyve
zfskeys_datasets: -> zdata/enc zdata/enc/nfsdata zroot/bhyve
# Set correct key locations for all datasets
-paul@f0:~ % doas zfs set keylocation=file:///keys/f0.lan.buetow.org:zdata.key zdata/enc/nfsdata
+paul@f0:~ % doas zfs set \
+ keylocation=file:///keys/f0.lan.buetow.org:zdata.key zdata/enc/nfsdata
# On f1 - include the replicated dataset
paul@f1:~ % doas sysrc zfskeys_enable=YES
zfskeys_enable: YES -> YES
-paul@f1:~ % doas sysrc zfskeys_datasets="zdata/enc zroot/bhyve zdata/sink/f0/zdata/enc/nfsdata"
+paul@f1:~ % doas sysrc \
+ zfskeys_datasets="zdata/enc zroot/bhyve zdata/sink/f0/zdata/enc/nfsdata"
zfskeys_datasets: -> zdata/enc zroot/bhyve zdata/sink/f0/zdata/enc/nfsdata
# Set key location for replicated dataset
-paul@f1:~ % doas zfs set keylocation=file:///keys/f0.lan.buetow.org:zdata.key zdata/sink/f0/zdata/enc/nfsdata
+paul@f1:~ % doas zfs set \
+ keylocation=file:///keys/f0.lan.buetow.org:zdata.key zdata/sink/f0/zdata/enc/nfsdata
```
Important notes:
@@ -931,7 +934,8 @@ And to configure stunnel on `f1`, we run:
paul@f1:~ % doas pkg install -y stunnel
# Copy certificates from f0
-paul@f0:~ % doas tar -cf /tmp/stunnel-certs.tar -C /usr/local/etc/stunnel server-cert.pem server-key.pem ca
+paul@f0:~ % doas tar -cf /tmp/stunnel-certs.tar \
+ -C /usr/local/etc/stunnel server-cert.pem server-key.pem ca
paul@f0:~ % scp /tmp/stunnel-certs.tar f1:/tmp/
paul@f1:~ % cd /usr/local/etc/stunnel && doas tar -xf /tmp/stunnel-certs.tar
@@ -1183,7 +1187,8 @@ if ! mount | grep -q "on /data/nfs "; then
exit 0
fi
-# Check if the marker file exists (identifies that the ZFS data set is properly mounted)
+# Check if the marker file exists
+# (identifies that the ZFS data set is properly mounted)
if [ ! -f "$MARKER_FILE" ]; then
log_message "SKIP: Marker file $MARKER_FILE not found"
exit 0
@@ -1313,7 +1318,10 @@ To mount NFS through the stunnel encrypted tunnel, we run:
# Verify mount
[root@r0 ~]# mount | grep k3svolumes
-127.0.0.1:/data/nfs/k3svolumes on /data/nfs/k3svolumes type nfs4 (rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=2323,timeo=600,retrans=2,sec=sys,clientaddr=127.0.0.1,local_lock=none,addr=127.0.0.1)
+127.0.0.1:/data/nfs/k3svolumes on /data/nfs/k3svolumes
+ type nfs4 (rw,relatime,vers=4.2,rsize=131072,wsize=131072,
+ namlen=255,hard,proto=tcp,port=2323,timeo=600,retrans=2,sec=sys,
+ clientaddr=127.0.0.1,local_lock=none,addr=127.0.0.1)
# For persistent mount, add to /etc/fstab:
127.0.0.1:/data/nfs/k3svolumes /data/nfs/k3svolumes nfs4 port=2323,_netdev 0 0
@@ -1478,9 +1486,12 @@ ls: cannot access '/data/nfs/k3svolumes/': Stale file handle
# 5. Check automatic recovery (within 10 seconds)
[root@r0 ~]# journalctl -u nfs-mount-monitor -f
-Jul 06 10:15:32 r0 nfs-monitor[1234]: NFS mount unhealthy detected at Sun Jul 6 10:15:32 EEST 2025
-Jul 06 10:15:32 r0 nfs-monitor[1234]: Attempting to fix stale NFS mount at Sun Jul 6 10:15:32 EEST 2025
-Jul 06 10:15:33 r0 nfs-monitor[1234]: NFS mount fixed at Sun Jul 6 10:15:33 EEST 2025
+Jul 06 10:15:32 r0 nfs-monitor[1234]: NFS mount unhealthy detected at \
+ Sun Jul 6 10:15:32 EEST 2025
+Jul 06 10:15:32 r0 nfs-monitor[1234]: Attempting to fix stale NFS mount at \
+ Sun Jul 6 10:15:32 EEST 2025
+Jul 06 10:15:33 r0 nfs-monitor[1234]: NFS mount fixed at \
+ Sun Jul 6 10:15:33 EEST 2025
```
Failover Timeline:
diff --git a/gemfeed/atom.xml b/gemfeed/atom.xml
index 4035a974..e7e6b418 100644
--- a/gemfeed/atom.xml
+++ b/gemfeed/atom.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
- <updated>2025-07-13T16:55:45+03:00</updated>
+ <updated>2025-07-13T19:45:38+03:00</updated>
<title>foo.zone feed</title>
<subtitle>To be in the .zone!</subtitle>
<link href="gemini://foo.zone/gemfeed/atom.xml" rel="self" />
@@ -769,16 +769,19 @@ paul@f0:~ % doas sysrc zfskeys_datasets=<font color="#808080">"zdata/enc zdata/e
zfskeys_datasets: -&gt; zdata/enc zdata/enc/nfsdata zroot/bhyve
<i><font color="silver"># Set correct key locations for all datasets</font></i>
-paul@f0:~ % doas zfs <b><u><font color="#000000">set</font></u></b> keylocation=file:///keys/f<font color="#000000">0</font>.lan.buetow.org:zdata.key zdata/enc/nfsdata
+paul@f0:~ % doas zfs <b><u><font color="#000000">set</font></u></b> \
+ keylocation=file:///keys/f<font color="#000000">0</font>.lan.buetow.org:zdata.key zdata/enc/nfsdata
<i><font color="silver"># On f1 - include the replicated dataset</font></i>
paul@f1:~ % doas sysrc zfskeys_enable=YES
zfskeys_enable: YES -&gt; YES
-paul@f1:~ % doas sysrc zfskeys_datasets=<font color="#808080">"zdata/enc zroot/bhyve zdata/sink/f0/zdata/enc/nfsdata"</font>
+paul@f1:~ % doas sysrc \
+ zfskeys_datasets=<font color="#808080">"zdata/enc zroot/bhyve zdata/sink/f0/zdata/enc/nfsdata"</font>
zfskeys_datasets: -&gt; zdata/enc zroot/bhyve zdata/sink/f<font color="#000000">0</font>/zdata/enc/nfsdata
<i><font color="silver"># Set key location for replicated dataset</font></i>
-paul@f1:~ % doas zfs <b><u><font color="#000000">set</font></u></b> keylocation=file:///keys/f<font color="#000000">0</font>.lan.buetow.org:zdata.key zdata/sink/f<font color="#000000">0</font>/zdata/enc/nfsdata
+paul@f1:~ % doas zfs <b><u><font color="#000000">set</font></u></b> \
+ keylocation=file:///keys/f<font color="#000000">0</font>.lan.buetow.org:zdata.key zdata/sink/f<font color="#000000">0</font>/zdata/enc/nfsdata
</pre>
<br />
<span>Important notes:</span><br />
@@ -1128,7 +1131,8 @@ http://www.gnu.org/software/src-highlite -->
paul@f1:~ % doas pkg install -y stunnel
<i><font color="silver"># Copy certificates from f0</font></i>
-paul@f0:~ % doas tar -cf /tmp/stunnel-certs.tar -C /usr/local/etc/stunnel server-cert.pem server-key.pem ca
+paul@f0:~ % doas tar -cf /tmp/stunnel-certs.tar \
+ -C /usr/local/etc/stunnel server-cert.pem server-key.pem ca
paul@f0:~ % scp /tmp/stunnel-certs.tar f1:/tmp/
paul@f1:~ % cd /usr/local/etc/stunnel &amp;&amp; doas tar -xf /tmp/stunnel-certs.tar
@@ -1394,7 +1398,8 @@ CURRENT_STATE=$(/usr/local/bin/carp | awk <font color="#808080">'{print $NF}'</f
<b><u><font color="#000000">exit</font></u></b> <font color="#000000">0</font>
<b><u><font color="#000000">fi</font></u></b>
-<i><font color="silver"># Check if the marker file exists (identifies that the ZFS data set is properly mounted)</font></i>
+<i><font color="silver"># Check if the marker file exists</font></i>
+<i><font color="silver"># (identifies that the ZFS data set is properly mounted)</font></i>
<b><u><font color="#000000">if</font></u></b> [ ! -f <font color="#808080">"$MARKER_FILE"</font> ]; <b><u><font color="#000000">then</font></u></b>
log_message <font color="#808080">"SKIP: Marker file $MARKER_FILE not found"</font>
<b><u><font color="#000000">exit</font></u></b> <font color="#000000">0</font>
@@ -1546,7 +1551,10 @@ http://www.gnu.org/software/src-highlite -->
<i><font color="silver"># Verify mount</font></i>
[root@r0 ~]<i><font color="silver"># mount | grep k3svolumes</font></i>
-<font color="#000000">127.0</font>.<font color="#000000">0.1</font>:/data/nfs/k3svolumes on /data/nfs/k3svolumes <b><u><font color="#000000">type</font></u></b> nfs4 (rw,relatime,vers=<font color="#000000">4.2</font>,rsize=<font color="#000000">131072</font>,wsize=<font color="#000000">131072</font>,namlen=<font color="#000000">255</font>,hard,proto=tcp,port=<font color="#000000">2323</font>,timeo=<font color="#000000">600</font>,retrans=<font color="#000000">2</font>,sec=sys,clientaddr=<font color="#000000">127.0</font>.<font color="#000000">0.1</font>,local_lock=none,addr=<font color="#000000">127.0</font>.<font color="#000000">0.1</font>)
+<font color="#000000">127.0</font>.<font color="#000000">0.1</font>:/data/nfs/k3svolumes on /data/nfs/k3svolumes
+ <b><u><font color="#000000">type</font></u></b> nfs4 (rw,relatime,vers=<font color="#000000">4.2</font>,rsize=<font color="#000000">131072</font>,wsize=<font color="#000000">131072</font>,
+ namlen=<font color="#000000">255</font>,hard,proto=tcp,port=<font color="#000000">2323</font>,timeo=<font color="#000000">600</font>,retrans=<font color="#000000">2</font>,sec=sys,
+ clientaddr=<font color="#000000">127.0</font>.<font color="#000000">0.1</font>,local_lock=none,addr=<font color="#000000">127.0</font>.<font color="#000000">0.1</font>)
<i><font color="silver"># For persistent mount, add to /etc/fstab:</font></i>
<font color="#000000">127.0</font>.<font color="#000000">0.1</font>:/data/nfs/k3svolumes /data/nfs/k3svolumes nfs4 port=<font color="#000000">2323</font>,_netdev <font color="#000000">0</font> <font color="#000000">0</font>
@@ -1732,9 +1740,12 @@ ls: cannot access <font color="#808080">'/data/nfs/k3svolumes/'</font>: Stale fi
<i><font color="silver"># 5. Check automatic recovery (within 10 seconds)</font></i>
[root@r0 ~]<i><font color="silver"># journalctl -u nfs-mount-monitor -f</font></i>
-Jul <font color="#000000">06</font> <font color="#000000">10</font>:<font color="#000000">15</font>:<font color="#000000">32</font> r0 nfs-monitor[<font color="#000000">1234</font>]: NFS mount unhealthy detected at Sun Jul <font color="#000000">6</font> <font color="#000000">10</font>:<font color="#000000">15</font>:<font color="#000000">32</font> EEST <font color="#000000">2025</font>
-Jul <font color="#000000">06</font> <font color="#000000">10</font>:<font color="#000000">15</font>:<font color="#000000">32</font> r0 nfs-monitor[<font color="#000000">1234</font>]: Attempting to fix stale NFS mount at Sun Jul <font color="#000000">6</font> <font color="#000000">10</font>:<font color="#000000">15</font>:<font color="#000000">32</font> EEST <font color="#000000">2025</font>
-Jul <font color="#000000">06</font> <font color="#000000">10</font>:<font color="#000000">15</font>:<font color="#000000">33</font> r0 nfs-monitor[<font color="#000000">1234</font>]: NFS mount fixed at Sun Jul <font color="#000000">6</font> <font color="#000000">10</font>:<font color="#000000">15</font>:<font color="#000000">33</font> EEST <font color="#000000">2025</font>
+Jul <font color="#000000">06</font> <font color="#000000">10</font>:<font color="#000000">15</font>:<font color="#000000">32</font> r0 nfs-monitor[<font color="#000000">1234</font>]: NFS mount unhealthy detected at \
+ Sun Jul <font color="#000000">6</font> <font color="#000000">10</font>:<font color="#000000">15</font>:<font color="#000000">32</font> EEST <font color="#000000">2025</font>
+Jul <font color="#000000">06</font> <font color="#000000">10</font>:<font color="#000000">15</font>:<font color="#000000">32</font> r0 nfs-monitor[<font color="#000000">1234</font>]: Attempting to fix stale NFS mount at \
+ Sun Jul <font color="#000000">6</font> <font color="#000000">10</font>:<font color="#000000">15</font>:<font color="#000000">32</font> EEST <font color="#000000">2025</font>
+Jul <font color="#000000">06</font> <font color="#000000">10</font>:<font color="#000000">15</font>:<font color="#000000">33</font> r0 nfs-monitor[<font color="#000000">1234</font>]: NFS mount fixed at \
+ Sun Jul <font color="#000000">6</font> <font color="#000000">10</font>:<font color="#000000">15</font>:<font color="#000000">33</font> EEST <font color="#000000">2025</font>
</pre>
<br />
<span>Failover Timeline:</span><br />
diff --git a/index.gmi b/index.gmi
index e0b64c6a..d2d43c55 100644
--- a/index.gmi
+++ b/index.gmi
@@ -1,6 +1,6 @@
# Hello!
-> This site was generated at 2025-07-13T16:55:45+03:00 by `Gemtexter`
+> This site was generated at 2025-07-13T19:45:38+03:00 by `Gemtexter`
Welcome to the foo.zone!
diff --git a/uptime-stats.gmi b/uptime-stats.gmi
index d24c8d45..937b3715 100644
--- a/uptime-stats.gmi
+++ b/uptime-stats.gmi
@@ -1,6 +1,6 @@
# My machine uptime stats
-> This site was last updated at 2025-07-13T16:55:45+03:00
+> This site was last updated at 2025-07-13T19:45:38+03: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.