From 127ecb8eeb8bd93668730b1c86689ece524973dd Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sun, 22 Jun 2025 22:34:50 +0300 Subject: Update content for gemtext --- about/resources.gmi | 192 ++-- gemfeed/atom.xml | 2972 +++++++++++++++++++++++++-------------------------- index.gmi | 2 +- uptime-stats.gmi | 2 +- 4 files changed, 1584 insertions(+), 1584 deletions(-) diff --git a/about/resources.gmi b/about/resources.gmi index 53d152f7..507dcb91 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: -* Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O'Reilly -* Effective awk programming; Arnold Robbins; O'Reilly -* Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press -* Developing Games in Java; David Brackeen and others...; New Riders -* Pro Puppet; James Turnbull, Jeffrey McCune; Apress +* Site Reliability Engineering; How Google runs production systems; O'Reilly +* The KCNA (Kubernetes and Cloud Native Associate) Book; Nigel Poulton * DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible -* The Docker Book; James Turnbull; Kindle -* Go Brain Teasers - Exercise Your Mind; Miki Tebeka; The Pragmatic Programmers -* Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt -* 100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications -* Data Science at the Command Line; Jeroen Janssens; O'Reilly -* Systemprogrammierung in Go; Frank Müller; dpunkt -* The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible -* Clusterbau mit Linux-HA; Michael Schwartzkopff; O'Reilly -* Leanring eBPF; Liz Rice; O'Reilly +* Polished Ruby Programming; Jeremy Evans; Packt Publishing +* Ultimate Go Notebook; Bill Kennedy * Concurrency in Go; Katherine Cox-Buday; O'Reilly -* Terraform Cookbook; Mikael Krief; Packt Publishing -* The Pragmatic Programmer; David Thomas; Addison-Wesley -* Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O'Reilly -* Raku Fundamentals; Moritz Lenz; Apress -* Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner -* 21st Century C: C Tips from the New School; Ben Klemens; O'Reilly +* The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible * Tmux 2: Productive Mouse-free Development; Brain P. Hogan; The Pragmatic Programmers -* Java ist auch eine Insel; Christian Ullenboom; -* The KCNA (Kubernetes and Cloud Native Associate) Book; Nigel Poulton -* 97 things every SRE should know; Emil Stolarsky, Jaime Woo; O'Reilly -* Effective Java; Joshua Bloch; Addison-Wesley Professional +* 21st Century C: C Tips from the New School; Ben Klemens; O'Reilly * Learn You Some Erlang for Great Good; Fred Herbert; No Starch Press -* Programming Ruby 3.3 (5th Edition); Noel Rappin, with Dave Thomas; The Pragmatic Bookshelf +* Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson +* Higher Order Perl; Mark Dominus; Morgan Kaufmann * Modern Perl; Chromatic ; Onyx Neon Press * Raku Recipes; J.J. Merelo; Apress -* Polished Ruby Programming; Jeremy Evans; Packt Publishing -* Ultimate Go Notebook; Bill Kennedy +* 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 +* Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner +* Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O'Reilly +* 97 things every SRE should know; Emil Stolarsky, Jaime Woo; O'Reilly +* Terraform Cookbook; Mikael Krief; Packt Publishing +* Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt +* The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional +* Effective awk programming; Arnold Robbins; O'Reilly +* Go Brain Teasers - Exercise Your Mind; Miki Tebeka; The Pragmatic Programmers +* Programming Ruby 3.3 (5th Edition); Noel Rappin, with Dave Thomas; The Pragmatic Bookshelf +* The Pragmatic Programmer; David Thomas; Addison-Wesley * Perl New Features; Joshua McAdams, brian d foy; Perl School +* Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O'Reilly * Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O'Reilly -* The Kubernetes Book; Nigel Poulton; Unabridged Audiobook -* C++ Programming Language; Bjarne Stroustrup; -* Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications -* 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 -* Site Reliability Engineering; How Google runs production systems; O'Reilly -* Higher Order Perl; Mark Dominus; Morgan Kaufmann -* Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson -* Funktionale Programmierung; Peter Pepper; Springer +* Java ist auch eine Insel; Christian Ullenboom; +* Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press * Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall & Jon Orwant; O'Reilly +* Systemprogrammierung in Go; Frank Müller; dpunkt +* Leanring eBPF; Liz Rice; O'Reilly +* 100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications +* Raku Fundamentals; Moritz Lenz; Apress +* Data Science at the Command Line; Jeroen Janssens; O'Reilly +* Developing Games in Java; David Brackeen and others...; New Riders +* Funktionale Programmierung; Peter Pepper; Springer +* Pro Puppet; James Turnbull, Jeffrey McCune; Apress * DNS and BIND; Cricket Liu; O'Reilly -* The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional +* Effective Java; Joshua Bloch; Addison-Wesley Professional +* Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications +* C++ Programming Language; Bjarne Stroustrup; +* Clusterbau mit Linux-HA; Michael Schwartzkopff; O'Reilly +* The Docker Book; James Turnbull; Kindle +* The Kubernetes Book; Nigel Poulton; Unabridged Audiobook ## 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: -* BPF Performance Tools - Linux System and Application Observability, Brendan Gregg; Addison Wesley +* Understanding the Linux Kernel; Daniel P. Bovet, Marco Cesati; O'Reilly * The Linux Programming Interface; Michael Kerrisk; No Starch Press +* Groovy Kurz & Gut; Joerg Staudemeier; O'Reilly * Go: Design Patterns for Real-World Projects; Mat Ryer; Packt -* Relayd and Httpd Mastery; Michael W Lucas -* Understanding the Linux Kernel; Daniel P. Bovet, Marco Cesati; O'Reilly * Algorithms; Robert Sedgewick, Kevin Wayne; Addison Wesley -* Groovy Kurz & Gut; Joerg Staudemeier; O'Reilly +* BPF Performance Tools - Linux System and Application Observability, Brendan Gregg; Addison Wesley * Implementing Service Level Objectives; Alex Hidalgo; O'Reilly +* Relayd and Httpd Mastery; Michael W Lucas ## Self-development and soft-skills books In random order: -* The Joy of Missing Out; Christina Crook; New Society Publishers -* Getting Things Done; David Allen -* The Bullet Journal Method; Ryder Carroll; Fourth Estate -* Deep Work; Cal Newport; Piatkus -* Coders at Work - Reflections on the craft of programming, Peter Seibel and Mitchell Dorian et al., Audiobook -* Time Management for System Administrators; Thomas A. Limoncelli; O'Reilly -* The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd -* The Good Enough Job; Simone Stolzoff; Ebury Edge -* Eat That Frog!; Brian Tracy; Hodder Paperbacks -* Ultralearning; Anna Laurent; Self-published via Amazon * Atomic Habits; James Clear; Random House Business -* Stop starting, start finishing; Arne Roock; Lean-Kanban University +* Eat That Frog; Brian Tracy +* Eat That Frog!; Brian Tracy; Hodder Paperbacks +* Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press +* The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books +* So Good They Can't Ignore You; Cal Newport; Business Plus +* The Good Enough Job; Simone Stolzoff; Ebury Edge * Solve for Happy; Mo Gawdat (RE-READ 1ST TIME) -* Digital Minimalism; Cal Newport; Portofolio Penguin -* The Complete Software Developer's Career Guide; John Sonmez; Unabridged Audiobook -* Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing -* 101 Essays that change the way you think; Brianna Wiest; Audiobook * Psycho-Cybernetics; Maxwell Maltz; Perigee Books -* The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books -* The Power of Now; Eckhard Tolle; Yellow Kite -* Soft Skills; John Sommez; Manning Publications -* Slow Productivity; Cal Newport; Penguin Random House -* Meditation for Mortals, Oliver Burkeman, Audiobook -* Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press +* Getting Things Done; David Allen * The 7 Habits Of Highly Effective People; Stephen R. Covey; Simon & Schuster UK -* Eat That Frog; Brian Tracy -* So Good They Can't Ignore You; Cal Newport; Business Plus -* Search Inside Yourself - The Unexpected path to Achieving Success, Happiness (and World Peace); Chade-Meng Tan, Daniel Goleman, Jon Kabat-Zinn; HarperOne -* Never Split the Difference; Chris Voss, Tahl Raz; Random House Business -* Staff Engineer: Leadership beyond the management track; Will Larson; Audiobook -* The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select -* Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion +* Stop starting, start finishing; Arne Roock; Lean-Kanban University * Influence without Authority; A. Cohen, D. Bradford; Wiley +* The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select * Ultralearning; Scott Young; Thorsons +* Time Management for System Administrators; Thomas A. Limoncelli; O'Reilly +* Staff Engineer: Leadership beyond the management track; Will Larson; Audiobook +* 101 Essays that change the way you think; Brianna Wiest; Audiobook +* The Bullet Journal Method; Ryder Carroll; Fourth Estate * The Off Switch; Mark Cropley; Virgin Books (RE-READ 1ST TIME) +* Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion +* Ultralearning; Anna Laurent; Self-published via Amazon +* Coders at Work - Reflections on the craft of programming, Peter Seibel and Mitchell Dorian et al., Audiobook +* Search Inside Yourself - The Unexpected path to Achieving Success, Happiness (and World Peace); Chade-Meng Tan, Daniel Goleman, Jon Kabat-Zinn; HarperOne +* Slow Productivity; Cal Newport; Penguin Random House +* Meditation for Mortals, Oliver Burkeman, Audiobook +* The Joy of Missing Out; Christina Crook; New Society Publishers +* The Complete Software Developer's Career Guide; John Sonmez; Unabridged Audiobook +* The Power of Now; Eckhard Tolle; Yellow Kite +* Digital Minimalism; Cal Newport; Portofolio Penguin +* Never Split the Difference; Chris Voss, Tahl Raz; Random House Business +* Deep Work; Cal Newport; Piatkus +* The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd +* Soft Skills; John Sommez; Manning Publications +* Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing => ../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: -* Functional programming lecture; Remote University of Hagen +* Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training * 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 -* Developing IaC with Terraform (with Live Lessons); O'Reilly Online -* MySQL Deep Dive Workshop; 2-day on-site training * The Ultimate Kubernetes Bootcamp; School of Devops; O'Reilly Online -* Algorithms Video Lectures; Robert Sedgewick; O'Reilly Online +* Cloud Operations on AWS - Learn how to configure, deploy, maintain, and troubleshoot your AWS environments; 3-day online live training with labs; Amazon * Scripting Vim; Damian Conway; O'Reilly Online -* The Well-Grounded Rubyist Video Edition; David. A. Black; 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 -* 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. +* Functional programming lecture; Remote University of Hagen * AWS Immersion Day; Amazon; 1-day interactive online training +* Developing IaC with Terraform (with Live Lessons); O'Reilly Online * Structure and Interpretation of Computer Programs; Harold Abelson and more...; +* Algorithms Video Lectures; Robert Sedgewick; O'Reilly Online +* The Well-Grounded Rubyist Video Edition; David. A. Black; O'Reilly Online * Protocol buffers; O'Reilly Online +* F5 Loadbalancers Training; 2-day on-site training; F5, Inc. +* MySQL Deep Dive Workshop; 2-day on-site training ## Technical guides These are not whole books, but guides (smaller or larger) which I found very useful. in random order: +* Advanced Bash-Scripting Guide * How CPUs work at https://cpu.land * Raku Guide at https://raku.guide -* Advanced Bash-Scripting Guide ## Podcasts @@ -172,56 +172,56 @@ These are not whole books, but guides (smaller or larger) which I found very use In random order: -* The Pragmatic Engineer Podcast +* Hidden Brain * The Changelog Podcast(s) -* The ProdCast (Google SRE Podcast) -* Backend Banter -* Modern Mentor -* BSD Now [BSD] -* Deep Questions with Cal Newport +* Fallthrough [Golang] +* Dev Interrupted * Fork Around And Find Out +* The Pragmatic Engineer Podcast * Maintainable * Cup o' Go [Golang] -* Hidden Brain -* Fallthrough [Golang] -* Dev Interrupted +* Backend Banter +* Deep Questions with Cal Newport +* Modern Mentor +* BSD Now [BSD] +* The ProdCast (Google SRE Podcast) ### 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. +* Java Pub House +* Ship It (predecessor of Fork Around And Find Out) +* Go Time (predecessor of fallthrough) * FLOSS weekly * CRE: Chaosradio Express [german] -* Go Time (predecessor of fallthrough) * Modern Mentor -* Ship It (predecessor of Fork Around And Find Out) -* Java Pub House ## Newsletters I like This is a mix of tech and non-tech newsletters I am subscribed to. In random order: -* VK Newsletter -* Golang Weekly * Ruby Weekly +* Changelog News +* The Imperfectionist * The Pragmatic Engineer * byteSizeGo -* Applied Go Weekly Newsletter -* Changelog News -* Monospace Mentor +* VK Newsletter * Andreas Brandhorst Newsletter (Sci-Fi author) * The Valuable Dev -* The Imperfectionist * Register Spill +* Golang Weekly +* Monospace Mentor +* Applied Go Weekly Newsletter ## 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: * Linux Magazine -* Linux User * LWN (online only) * freeX (not published anymore) +* Linux User # Formal education diff --git a/gemfeed/atom.xml b/gemfeed/atom.xml index 47c87cd1..f8ba70f4 100644 --- a/gemfeed/atom.xml +++ b/gemfeed/atom.xml @@ -1,6 +1,6 @@ - 2025-06-22T21:25:58+03:00 + 2025-06-22T22:34:04+03:00 foo.zone feed To be in the .zone! @@ -390,14 +390,14 @@ by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -
paul@f0:~ % doas freebsd-update fetch
-paul@f0:~ % doas freebsd-update install
-paul@f0:~ % doas shutdown -r now
-..
-..
-paul@f0:~ % doas pkg update
-paul@f0:~ % doas pkg upgrade
-paul@f0:~ % reboot
+
paul@f0:~ % doas freebsd-update fetch
+paul@f0:~ % doas freebsd-update install
+paul@f0:~ % doas shutdown -r now
+..
+..
+paul@f0:~ % doas pkg update
+paul@f0:~ % doas pkg upgrade
+paul@f0:~ % reboot
 

Next, we install wireguard-tools and configure the WireGuard service:
@@ -406,19 +406,19 @@ paul@f0:~ % reboot by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -
paul@f0:~ % doas pkg install wireguard-tools
-paul@f0:~ % doas sysrc wireguard_interfaces=wg0
-wireguard_interfaces:  -> wg0
-paul@f0:~ % doas sysrc wireguard_enable=YES
-wireguard_enable:  -> YES
-paul@f0:~ % doas mkdir -p /usr/local/etc/wireguard
-paul@f0:~ % doas touch /usr/local/etc/wireguard/wg0.conf
-paul@f0:~ % doas service wireguard start
-paul@f0:~ % doas wg show
-interface: wg0
-  public key: L+V9o0fNYkMVKNqsX7spBzD/9oSvxM/C7ZCZX1jLO3Q=
-  private key: (hidden)
-  listening port: 20246
+
paul@f0:~ % doas pkg install wireguard-tools
+paul@f0:~ % doas sysrc wireguard_interfaces=wg0
+wireguard_interfaces:  -> wg0
+paul@f0:~ % doas sysrc wireguard_enable=YES
+wireguard_enable:  -> YES
+paul@f0:~ % doas mkdir -p /usr/local/etc/wireguard
+paul@f0:~ % doas touch /usr/local/etc/wireguard/wg0.conf
+paul@f0:~ % doas service wireguard start
+paul@f0:~ % doas wg show
+interface: wg0
+  public key: L+V9o0fNYkMVKNqsX7spBzD/9oSvxM/C7ZCZX1jLO3Q=
+  private key: (hidden)
+  listening port: 20246
 

We now have the WireGuard up and running, but it is not yet in any functional configuration. We will come back to that later.
@@ -429,23 +429,23 @@ interface: wg0 by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -
paul@f0:~ % cat <<END | doas tee -a /etc/hosts
+
paul@f0:~ % cat <<END | doas tee -a /etc/hosts
 
-192.168.1.120 r0 r0.lan r0.lan.buetow.org
-192.168.1.121 r1 r1.lan r1.lan.buetow.org
-192.168.1.122 r2 r2.lan r2.lan.buetow.org
+192.168.1.120 r0 r0.lan r0.lan.buetow.org
+192.168.1.121 r1 r1.lan r1.lan.buetow.org
+192.168.1.122 r2 r2.lan r2.lan.buetow.org
 
-192.168.2.130 f0.wg0 f0.wg0.wan.buetow.org
-192.168.2.131 f1.wg0 f1.wg0.wan.buetow.org
-192.168.2.132 f2.wg0 f2.wg0.wan.buetow.org
+192.168.2.130 f0.wg0 f0.wg0.wan.buetow.org
+192.168.2.131 f1.wg0 f1.wg0.wan.buetow.org
+192.168.2.132 f2.wg0 f2.wg0.wan.buetow.org
 
-192.168.2.120 r0.wg0 r0.wg0.wan.buetow.org
-192.168.2.121 r1.wg0 r1.wg0.wan.buetow.org
-192.168.2.122 r2.wg0 r2.wg0.wan.buetow.org
+192.168.2.120 r0.wg0 r0.wg0.wan.buetow.org
+192.168.2.121 r1.wg0 r1.wg0.wan.buetow.org
+192.168.2.122 r2.wg0 r2.wg0.wan.buetow.org
 
-192.168.2.110 blowfish.wg0 blowfish.wg0.wan.buetow.org
-192.168.2.111 fishfinger.wg0 fishfinger.wg0.wan.buetow.org
-END
+192.168.2.110 blowfish.wg0 blowfish.wg0.wan.buetow.org
+192.168.2.111 fishfinger.wg0 fishfinger.wg0.wan.buetow.org
+END
 

As you can see, 192.168.1.0/24 is the network used in my LAN (with the fN and rN hosts) and 192.168.2.0/24 is the network used for the WireGuard mesh network. The wg0 interface will be used for all WireGuard traffic.
@@ -458,8 +458,8 @@ END by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -
[root@r0 ~] dnf update -y
-[root@r0 ~] reboot
+
[root@r0 ~] dnf update -y
+[root@r0 ~] reboot
 

Next, we prepare WireGuard on them. Same as on the FreeBSD hosts, we will only prepare WireGuard without any useful configuration yet:
@@ -468,12 +468,12 @@ http://www.gnu.org/software/src-highlite --> by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -
[root@r0 ~] dnf install -y wireguard-tools
-[root@r0 ~] mkdir -p /etc/wireguard
-[root@r0 ~] touch /etc/wireguard/wg0.conf
-[root@r0 ~] systemctl enable wg-quick@wg0.service
-[root@r0 ~] systemctl start wg-quick@wg0.service
-[root@r0 ~] systemctl disable firewalld
+
[root@r0 ~] dnf install -y wireguard-tools
+[root@r0 ~] mkdir -p /etc/wireguard
+[root@r0 ~] touch /etc/wireguard/wg0.conf
+[root@r0 ~] systemctl enable wg-quick@wg0.service
+[root@r0 ~] systemctl start wg-quick@wg0.service
+[root@r0 ~] systemctl disable firewalld
 

We also update the hosts file accordingly:
@@ -482,23 +482,23 @@ http://www.gnu.org/software/src-highlite --> by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -
[root@r0 ~] cat <<END >>/etc/hosts
+
[root@r0 ~] cat <<END >>/etc/hosts
 
-192.168.1.130 f0 f0.lan f0.lan.buetow.org
-192.168.1.131 f1 f1.lan f1.lan.buetow.org
-192.168.1.132 f2 f2.lan f2.lan.buetow.org
+192.168.1.130 f0 f0.lan f0.lan.buetow.org
+192.168.1.131 f1 f1.lan f1.lan.buetow.org
+192.168.1.132 f2 f2.lan f2.lan.buetow.org
 
-192.168.2.130 f0.wg0 f0.wg0.wan.buetow.org
-192.168.2.131 f1.wg0 f1.wg0.wan.buetow.org
-192.168.2.132 f2.wg0 f2.wg0.wan.buetow.org
+192.168.2.130 f0.wg0 f0.wg0.wan.buetow.org
+192.168.2.131 f1.wg0 f1.wg0.wan.buetow.org
+192.168.2.132 f2.wg0 f2.wg0.wan.buetow.org
 
-192.168.2.120 r0.wg0 r0.wg0.wan.buetow.org
-192.168.2.121 r1.wg0 r1.wg0.wan.buetow.org
-192.168.2.122 r2.wg0 r2.wg0.wan.buetow.org
+192.168.2.120 r0.wg0 r0.wg0.wan.buetow.org
+192.168.2.121 r1.wg0 r1.wg0.wan.buetow.org
+192.168.2.122 r2.wg0 r2.wg0.wan.buetow.org
 
-192.168.2.110 blowfish.wg0 blowfish.wg0.wan.buetow.org
-192.168.2.111 fishfinger.wg0 fishfinger.wg0.wan.buetow.org
-END
+192.168.2.110 blowfish.wg0 blowfish.wg0.wan.buetow.org
+192.168.2.111 fishfinger.wg0 fishfinger.wg0.wan.buetow.org
+END
 

Unfortunately, the SELinux policy on Rocky Linux blocks WireGuard's operation. By making the wireguard_t domain permissive using semanage permissive -a wireguard_t, SELinux will no longer enforce restrictions for WireGuard, allowing it to work as intended:
@@ -507,9 +507,9 @@ END by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -
[root@r0 ~] dnf install -y policycoreutils-python-utils
-[root@r0 ~] semanage permissive -a wireguard_t
-[root@r0 ~] reboot
+
[root@r0 ~] dnf install -y policycoreutils-python-utils
+[root@r0 ~] semanage permissive -a wireguard_t
+[root@r0 ~] reboot
 

https://github.com/angristan/wireguard-install/discussions/499
@@ -522,14 +522,14 @@ http://www.gnu.org/software/src-highlite --> by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -
blowfish$ doas pkg_add wireguard-tools
-blowfish$ doas mkdir /etc/wireguard
-blowfish$ doas touch /etc/wireguard/wg0.conf
-blowsish$ cat <<END | doas tee /etc/hostname.wg0
-inet 192.168.2.110 255.255.255.0 NONE
-up
-!/usr/local/bin/wg setconf wg0 /etc/wireguard/wg0.conf
-END
+
blowfish$ doas pkg_add wireguard-tools
+blowfish$ doas mkdir /etc/wireguard
+blowfish$ doas touch /etc/wireguard/wg0.conf
+blowsish$ cat <<END | doas tee /etc/hostname.wg0
+inet 192.168.2.110 255.255.255.0 NONE
+up
+!/usr/local/bin/wg setconf wg0 /etc/wireguard/wg0.conf
+END
 

Note that on blowfish, we configure 192.168.2.110 here in the hostname.wg, and on fishfinger, we configure 192.168.2.111. Those are the IP addresses of the WireGuard interfaces on those hosts.
@@ -540,19 +540,19 @@ END by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -
blowfish$ cat <<END | doas tee -a /etc/hosts
+
blowfish$ cat <<END | doas tee -a /etc/hosts
 
-192.168.2.130 f0.wg0 f0.wg0.wan.buetow.org
-192.168.2.131 f1.wg0 f1.wg0.wan.buetow.org
-192.168.2.132 f2.wg0 f2.wg0.wan.buetow.org
+192.168.2.130 f0.wg0 f0.wg0.wan.buetow.org
+192.168.2.131 f1.wg0 f1.wg0.wan.buetow.org
+192.168.2.132 f2.wg0 f2.wg0.wan.buetow.org
 
-192.168.2.120 r0.wg0 r0.wg0.wan.buetow.org
-192.168.2.121 r1.wg0 r1.wg0.wan.buetow.org
-192.168.2.122 r2.wg0 r2.wg0.wan.buetow.org
+192.168.2.120 r0.wg0 r0.wg0.wan.buetow.org
+192.168.2.121 r1.wg0 r1.wg0.wan.buetow.org
+192.168.2.122 r2.wg0 r2.wg0.wan.buetow.org
 
-192.168.2.110 blowfish.wg0 blowfish.wg0.wan.buetow.org
-192.168.2.111 fishfinger.wg0 fishfinger.wg0.wan.buetow.org
-END
+192.168.2.110 blowfish.wg0 blowfish.wg0.wan.buetow.org
+192.168.2.111 fishfinger.wg0 fishfinger.wg0.wan.buetow.org
+END
 

WireGuard configuration


@@ -677,10 +677,10 @@ PersistentKeepalive = 25 by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -
> git clone https://codeberg.org/snonux/wireguardmeshgenerator
-> cd ./wireguardmeshgenerator
-> bundle install
-> sudo dnf install -y wireguard-tools
+
> git clone https://codeberg.org/snonux/wireguardmeshgenerator
+> cd ./wireguardmeshgenerator
+> bundle install
+> sudo dnf install -y wireguard-tools
 

This assumes that Ruby and the bundler gem are already installed. If not, refer to the docs of your distribution.
@@ -816,39 +816,39 @@ hosts: by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -
begin
-  options = { hosts: [] }
-  OptionParser.new do |opts|
-    opts.banner = 'Usage: wireguardmeshgenerator.rb [options]'
-    opts.on('--generate', 'Generate Wireguard configs') do
-      options[:generate] = true
-    end
-    opts.on('--install', 'Install Wireguard configs') do
-      options[:install] = true
-    end
-    opts.on('--clean', 'Clean Wireguard configs') do
-      options[:clean] = true
-    end
-    opts.on('--hosts=HOSTS', 'Comma separated hosts to configure') do |hosts|
-      options[:hosts] = hosts.split(',')
-    end
-  end.parse!
-
-  conf = YAML.load_file('wireguardmeshgenerator.yaml').freeze
-  conf['hosts'].keys.select { options[:hosts].empty? || options[:hosts].include?(_1) }
-               .each do |host|
-    # Generate Wireguard configuration for the host reload!
-    WireguardConfig.new(host, conf['hosts']).generate! if options[:generate]
-    # Install Wireguard configuration for the host.
-    InstallConfig.new(host, conf['hosts']).upload!.install!.reload! if options[:install]
-    # Clean Wireguard configuration for the host.
-    WireguardConfig.new(host, conf['hosts']).clean! if options[:clean]
-  end
-rescue StandardError => e
-  puts "Error: #{e.message}"
-  puts e.backtrace.join("\n")
-  exit 2
-end
+
begin
+  options = { hosts: [] }
+  OptionParser.new do |opts|
+    opts.banner = 'Usage: wireguardmeshgenerator.rb [options]'
+    opts.on('--generate', 'Generate Wireguard configs') do
+      options[:generate] = true
+    end
+    opts.on('--install', 'Install Wireguard configs') do
+      options[:install] = true
+    end
+    opts.on('--clean', 'Clean Wireguard configs') do
+      options[:clean] = true
+    end
+    opts.on('--hosts=HOSTS', 'Comma separated hosts to configure') do |hosts|
+      options[:hosts] = hosts.split(',')
+    end
+  end.parse!
+
+  conf = YAML.load_file('wireguardmeshgenerator.yaml').freeze
+  conf['hosts'].keys.select { options[:hosts].empty? || options[:hosts].include?(_1) }
+               .each do |host|
+    # Generate Wireguard configuration for the host reload!
+    WireguardConfig.new(host, conf['hosts']).generate! if options[:generate]
+    # Install Wireguard configuration for the host.
+    InstallConfig.new(host, conf['hosts']).upload!.install!.reload! if options[:install]
+    # Clean Wireguard configuration for the host.
+    WireguardConfig.new(host, conf['hosts']).clean! if options[:clean]
+  end
+rescue StandardError => e
+  puts "Error: #{e.message}"
+  puts e.backtrace.join("\n")
+  exit 2
+end
 

And we also have a Rakefile:
@@ -857,19 +857,19 @@ http://www.gnu.org/software/src-highlite --> by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -
task :generate do
-  ruby 'wireguardmeshgenerator.rb', '--generate'
-end
+
task :generate do
+  ruby 'wireguardmeshgenerator.rb', '--generate'
+end
 
-task :clean do
-  ruby 'wireguardmeshgenerator.rb', '--clean'
-end
+task :clean do
+  ruby 'wireguardmeshgenerator.rb', '--clean'
+end
 
-task :install do
-  ruby 'wireguardmeshgenerator.rb', '--install'
-end
+task :install do
+  ruby 'wireguardmeshgenerator.rb', '--install'
+end
 
-task default: :generate
+task default: :generate
 


@@ -883,16 +883,16 @@ task default: :generate by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -
> rake generate
-/usr/bin/ruby wireguardmeshgenerator.rb --generate
-Generating dist/f0/etc/wireguard/wg0.conf
-Generating dist/f1/etc/wireguard/wg0.conf
-Generating dist/f2/etc/wireguard/wg0.conf
-Generating dist/r0/etc/wireguard/wg0.conf
-Generating dist/r1/etc/wireguard/wg0.conf
-Generating dist/r2/etc/wireguard/wg0.conf
-Generating dist/blowfish/etc/wireguard/wg0.conf
-Generating dist/fishfinger/etc/wireguard/wg0.conf
+
> rake generate
+/usr/bin/ruby wireguardmeshgenerator.rb --generate
+Generating dist/f0/etc/wireguard/wg0.conf
+Generating dist/f1/etc/wireguard/wg0.conf
+Generating dist/f2/etc/wireguard/wg0.conf
+Generating dist/r0/etc/wireguard/wg0.conf
+Generating dist/r1/etc/wireguard/wg0.conf
+Generating dist/r2/etc/wireguard/wg0.conf
+Generating dist/blowfish/etc/wireguard/wg0.conf
+Generating dist/fishfinger/etc/wireguard/wg0.conf
 

It generated all the wg0.conf files listed in the output, plus those keys:
@@ -901,51 +901,51 @@ Generating dist/fishfinger/etc/wireguard/wg0.conf by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -
> find keys/ -type f
-keys/f0/priv.key
-keys/f0/pub.key
-keys/psk/f0_f1.key
-keys/psk/f0_f2.key
-keys/psk/f0_r0.key
-keys/psk/f0_r1.key
-keys/psk/f0_r2.key
-keys/psk/blowfish_f0.key
-keys/psk/f0_fishfinger.key
-keys/psk/f1_f2.key
-keys/psk/f1_r0.key
-keys/psk/f1_r1.key
-keys/psk/f1_r2.key
-keys/psk/blowfish_f1.key
-keys/psk/f1_fishfinger.key
-keys/psk/f2_r0.key
-keys/psk/f2_r1.key
-keys/psk/f2_r2.key
-keys/psk/blowfish_f2.key
-keys/psk/f2_fishfinger.key
-keys/psk/r0_r1.key
-keys/psk/r0_r2.key
-keys/psk/blowfish_r0.key
-keys/psk/fishfinger_r0.key
-keys/psk/r1_r2.key
-keys/psk/blowfish_r1.key
-keys/psk/fishfinger_r1.key
-keys/psk/blowfish_r2.key
-keys/psk/fishfinger_r2.key
-keys/psk/blowfish_fishfinger.key
-keys/f1/priv.key
-keys/f1/pub.key
-keys/f2/priv.key
-keys/f2/pub.key
-keys/r0/priv.key
-keys/r0/pub.key
-keys/r1/priv.key
-keys/r1/pub.key
-keys/r2/priv.key
-keys/r2/pub.key
-keys/blowfish/priv.key
-keys/blowfish/pub.key
-keys/fishfinger/priv.key
-keys/fishfinger/pub.key
+
> find keys/ -type f
+keys/f