summaryrefslogtreecommitdiff
path: root/gemfeed
diff options
context:
space:
mode:
Diffstat (limited to 'gemfeed')
-rw-r--r--gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.html1
-rw-r--r--gemfeed/2022-07-30-lets-encrypt-with-openbsd-and-rex.html1
-rw-r--r--gemfeed/2024-01-13-one-reason-why-i-love-openbsd.html1
-rw-r--r--gemfeed/2024-04-01-KISS-high-availability-with-OpenBSD.html1
-rw-r--r--gemfeed/2024-11-17-f3s-kubernetes-with-freebsd-part-1.html8
-rw-r--r--gemfeed/2024-12-03-f3s-kubernetes-with-freebsd-part-2.html349
-rw-r--r--gemfeed/DRAFT-f3s-kubernetes-with-freebsd-hardware-setup.html2
-rw-r--r--gemfeed/atom.xml697
-rw-r--r--gemfeed/f3s-kubernetes-with-freebsd-part-2/3beelinks.jpgbin0 -> 244333 bytes
-rw-r--r--gemfeed/f3s-kubernetes-with-freebsd-part-2/f3s-collage1.jpgbin0 -> 76514 bytes
-rw-r--r--gemfeed/f3s-kubernetes-with-freebsd-part-2/f3s-collage2.jpgbin0 -> 105206 bytes
-rw-r--r--gemfeed/f3s-kubernetes-with-freebsd-part-2/switch.jpgbin0 -> 73109 bytes
-rw-r--r--gemfeed/f3s-kubernetes-with-freebsd-part-2/watt.jpgbin0 -> 208816 bytes
-rw-r--r--gemfeed/index.html1
14 files changed, 721 insertions, 340 deletions
diff --git a/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.html b/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.html
index 457b8590..54570759 100644
--- a/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.html
+++ b/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.html
@@ -416,6 +416,7 @@ Notice: Finished catalog run in 206.09 seconds
<a class='textlink' href='./2024-01-13-one-reason-why-i-love-openbsd.html'>2024-01-13 One reason why I love OpenBSD</a><br />
<a class='textlink' href='./2024-04-01-KISS-high-availability-with-OpenBSD.html'>2024-04-01 KISS high-availability with OpenBSD</a><br />
<a class='textlink' href='./2024-11-17-f3s-kubernetes-with-freebsd-part-1.html'>2024-11-17 f3s: Kubernetes with FreeBSD - Part 1: Setting the stage</a><br />
+<a class='textlink' href='./2024-12-03-f3s-kubernetes-with-freebsd-part-2.html'>2024-12-03 f3s: Kubernetes with FreeBSD - Part 2: Hardware and base installation</a><br />
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
diff --git a/gemfeed/2022-07-30-lets-encrypt-with-openbsd-and-rex.html b/gemfeed/2022-07-30-lets-encrypt-with-openbsd-and-rex.html
index 4c2579a0..0c9e8a04 100644
--- a/gemfeed/2022-07-30-lets-encrypt-with-openbsd-and-rex.html
+++ b/gemfeed/2022-07-30-lets-encrypt-with-openbsd-and-rex.html
@@ -695,6 +695,7 @@ rex commons
<a class='textlink' href='./2024-01-13-one-reason-why-i-love-openbsd.html'>2024-01-13 One reason why I love OpenBSD</a><br />
<a class='textlink' href='./2024-04-01-KISS-high-availability-with-OpenBSD.html'>2024-04-01 KISS high-availability with OpenBSD</a><br />
<a class='textlink' href='./2024-11-17-f3s-kubernetes-with-freebsd-part-1.html'>2024-11-17 f3s: Kubernetes with FreeBSD - Part 1: Setting the stage</a><br />
+<a class='textlink' href='./2024-12-03-f3s-kubernetes-with-freebsd-part-2.html'>2024-12-03 f3s: Kubernetes with FreeBSD - Part 2: Hardware and base installation</a><br />
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
diff --git a/gemfeed/2024-01-13-one-reason-why-i-love-openbsd.html b/gemfeed/2024-01-13-one-reason-why-i-love-openbsd.html
index 9f7d8efa..9361dd0e 100644
--- a/gemfeed/2024-01-13-one-reason-why-i-love-openbsd.html
+++ b/gemfeed/2024-01-13-one-reason-why-i-love-openbsd.html
@@ -73,6 +73,7 @@ http://www.gnu.org/software/src-highlite -->
<a class='textlink' href='./2024-01-13-one-reason-why-i-love-openbsd.html'>2024-01-13 One reason why I love OpenBSD (You are currently reading this)</a><br />
<a class='textlink' href='./2024-04-01-KISS-high-availability-with-OpenBSD.html'>2024-04-01 KISS high-availability with OpenBSD</a><br />
<a class='textlink' href='./2024-11-17-f3s-kubernetes-with-freebsd-part-1.html'>2024-11-17 f3s: Kubernetes with FreeBSD - Part 1: Setting the stage</a><br />
+<a class='textlink' href='./2024-12-03-f3s-kubernetes-with-freebsd-part-2.html'>2024-12-03 f3s: Kubernetes with FreeBSD - Part 2: Hardware and base installation</a><br />
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
diff --git a/gemfeed/2024-04-01-KISS-high-availability-with-OpenBSD.html b/gemfeed/2024-04-01-KISS-high-availability-with-OpenBSD.html
index 6858ee68..c69d8a5e 100644
--- a/gemfeed/2024-04-01-KISS-high-availability-with-OpenBSD.html
+++ b/gemfeed/2024-04-01-KISS-high-availability-with-OpenBSD.html
@@ -336,6 +336,7 @@ http://www.gnu.org/software/src-highlite -->
<a class='textlink' href='./2024-01-13-one-reason-why-i-love-openbsd.html'>2024-01-13 One reason why I love OpenBSD</a><br />
<a class='textlink' href='./2024-04-01-KISS-high-availability-with-OpenBSD.html'>2024-04-01 KISS high-availability with OpenBSD (You are currently reading this)</a><br />
<a class='textlink' href='./2024-11-17-f3s-kubernetes-with-freebsd-part-1.html'>2024-11-17 f3s: Kubernetes with FreeBSD - Part 1: Setting the stage</a><br />
+<a class='textlink' href='./2024-12-03-f3s-kubernetes-with-freebsd-part-2.html'>2024-12-03 f3s: Kubernetes with FreeBSD - Part 2: Hardware and base installation</a><br />
<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
diff --git a/gemfeed/2024-11-17-f3s-kubernetes-with-freebsd-part-1.html b/gemfeed/2024-11-17-f3s-kubernetes-with-freebsd-part-1.html
index 334592d6..51c8d51c 100644
--- a/gemfeed/2024-11-17-f3s-kubernetes-with-freebsd-part-1.html
+++ b/gemfeed/2024-11-17-f3s-kubernetes-with-freebsd-part-1.html
@@ -16,7 +16,10 @@
<br />
<span>I will post a new entry every month or so (there are too many other side projects for more frequent updates—I bet you can understand).</span><br />
<br />
+<span>These are all the posts so far:</span><br />
+<br />
<a class='textlink' href='./2024-11-17-f3s-kubernetes-with-freebsd-part-1.html'>2024-11-17 f3s: Kubernetes with FreeBSD - Part 1: Setting the stage (You are currently reading this)</a><br />
+<a class='textlink' href='./2024-12-03-f3s-kubernetes-with-freebsd-part-2.html'>2024-12-03 f3s: Kubernetes with FreeBSD - Part 2: Hardware and base installation</a><br />
<br />
<a href='./f3s-kubernetes-with-freebsd-part-1/f3slogo.png'><img alt='f3s logo' title='f3s logo' src='./f3s-kubernetes-with-freebsd-part-1/f3slogo.png' /></a><br />
<br />
@@ -162,6 +165,10 @@
<br />
<span>What&#39;s your take on self-hosting? Are you planning to move away from managed cloud services? Stay tuned for the second part of this series, where I will likely write about the hardware and the OS setups.</span><br />
<br />
+<span>Read the next post of this series:</span><br />
+<br />
+<a class='textlink' href='./2024-12-03-f3s-kubernetes-with-freebsd-part-2.html'>f3s: Kubernetes with FreeBSD - Part 2: Hardware and base installation</a><br />
+<br />
<span>Other *BSD-related posts:</span><br />
<br />
<a class='textlink' href='./2016-04-09-jails-and-zfs-on-freebsd-with-puppet.html'>2016-04-09 Jails and ZFS with Puppet on FreeBSD</a><br />
@@ -170,6 +177,7 @@
<a class='textlink' href='./2024-01-13-one-reason-why-i-love-openbsd.html'>2024-01-13 One reason why I love OpenBSD</a><br />
<a class='textlink' href='./2024-04-01-KISS-high-availability-with-OpenBSD.html'>2024-04-01 KISS high-availability with OpenBSD</a><br />
<a class='textlink' href='./2024-11-17-f3s-kubernetes-with-freebsd-part-1.html'>2024-11-17 f3s: Kubernetes with FreeBSD - Part 1: Setting the stage (You are currently reading this)</a><br />
+<a class='textlink' href='./2024-12-03-f3s-kubernetes-with-freebsd-part-2.html'>2024-12-03 f3s: Kubernetes with FreeBSD - Part 2: Hardware and base installation</a><br />
<br />
<span>E-Mail your comments to <span class='inlinecode'>paul@nospam.buetow.org</span> :-)</span><br />
<br />
diff --git a/gemfeed/2024-12-03-f3s-kubernetes-with-freebsd-part-2.html b/gemfeed/2024-12-03-f3s-kubernetes-with-freebsd-part-2.html
new file mode 100644
index 00000000..8082acde
--- /dev/null
+++ b/gemfeed/2024-12-03-f3s-kubernetes-with-freebsd-part-2.html
@@ -0,0 +1,349 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>f3s: Kubernetes with FreeBSD - Part 2: Hardware and base installation</title>
+<link rel="shortcut icon" type="image/gif" href="/favicon.ico" />
+<link rel="stylesheet" href="../style.css" />
+<link rel="stylesheet" href="style-override.css" />
+</head>
+<body>
+<h1 style='display: inline' id='f3s-kubernetes-with-freebsd---part-2-hardware-and-base-installation'>f3s: Kubernetes with FreeBSD - Part 2: Hardware and base installation</h1><br />
+<br />
+<span class='quote'>Published at 2024-12-02T23:46:16+02:00</span><br />
+<br />
+<span>This is the second blog post about my f3s series for my self-hosting demands in my home lab. f3s? The "f" stands for FreeBSD, and the "3s" stands for k3s, the Kubernetes distribution I will use on FreeBSD-based physical machines.</span><br />
+<br />
+<span>We set the stage last time; this time, we will set up the hardware for this project. </span><br />
+<br />
+<span>These are all the posts so far:</span><br />
+<br />
+<a class='textlink' href='./2024-11-17-f3s-kubernetes-with-freebsd-part-1.html'>2024-11-17 f3s: Kubernetes with FreeBSD - Part 1: Setting the stage</a><br />
+<a class='textlink' href='./2024-12-03-f3s-kubernetes-with-freebsd-part-2.html'>2024-12-03 f3s: Kubernetes with FreeBSD - Part 2: Hardware and base installation (You are currently reading this)</a><br />
+<br />
+<a href='./f3s-kubernetes-with-freebsd-part-1/f3slogo.png'><img alt='f3s logo' title='f3s logo' src='./f3s-kubernetes-with-freebsd-part-1/f3slogo.png' /></a><br />
+<br />
+<span class='quote'>Logo was generated by ChatGPT.</span><br />
+<br />
+<span>Let&#39;s continue...</span><br />
+<br />
+<h2 style='display: inline' id='table-of-contents'>Table of Contents</h2><br />
+<br />
+<ul>
+<li><a href='#f3s-kubernetes-with-freebsd---part-2-hardware-and-base-installation'>f3s: Kubernetes with FreeBSD - Part 2: Hardware and base installation</a></li>
+<li>⇢ <a href='#deciding-on-the-hardware'>Deciding on the hardware</a></li>
+<li>⇢ ⇢ <a href='#not-arm-but-intel-n100-'>Not ARM but Intel N100 </a></li>
+<li>⇢ ⇢ <a href='#beelink-unboxing'>Beelink unboxing</a></li>
+<li>⇢ ⇢ <a href='#network-switch'>Network switch</a></li>
+<li>⇢ <a href='#installing-freebsd'>Installing FreeBSD</a></li>
+<li>⇢ ⇢ <a href='#base-install'>Base install</a></li>
+<li>⇢ ⇢ <a href='#latest-patch-level-and-customizing-etchosts'>Latest patch level and customizing <span class='inlinecode'>/etc/hosts</span></a></li>
+<li>⇢ ⇢ <a href='#additional-packages-after-install'>Additional packages after install</a></li>
+<li>⇢ <a href='#hardware-check'>Hardware check</a></li>
+<li>⇢ ⇢ <a href='#ethernet'>Ethernet</a></li>
+<li>⇢ ⇢ <a href='#ram'>RAM</a></li>
+<li>⇢ ⇢ <a href='#cpus'>CPUs</a></li>
+<li>⇢ ⇢ <a href='#cpu-throttling'>CPU throttling</a></li>
+<li>⇢ <a href='#conclusion'>Conclusion</a></li>
+</ul><br />
+<h2 style='display: inline' id='deciding-on-the-hardware'>Deciding on the hardware</h2><br />
+<br />
+<span>Note that the OpenBSD VMs included in the F3S setup (which will be used later in this blog series for internet ingress) are already there. These are virtual machines that I rent at OpenBSD Amsterdam and Hetzner.</span><br />
+<br />
+<a class='textlink' href='https://openbsd.amsterdam'>https://openbsd.amsterdam</a><br />
+<a class='textlink' href='https://hetzner.cloud'>https://hetzner.cloud</a><br />
+<br />
+<span>This means that the FreeBSD boxes need to be covered, which will later be running k3s in Linux VMs via bhyve hypervisor.</span><br />
+<br />
+<span>I&#39;ve been considering whether to use Raspberry Pis or look for alternatives. It turns out that complete N100-based mini-computers aren&#39;t much more expensive than Raspberry Pi 5s, and they don&#39;t require assembly. Furthermore, I like that they are AMD64 and not ARM-based, which increases compatibility with some applications (e.g., I might want to virtualize Windows (via bhyve) on one of those, though that&#39;s out of scope for this blog series).</span><br />
+<br />
+<h3 style='display: inline' id='not-arm-but-intel-n100-'>Not ARM but Intel N100 </h3><br />
+<br />
+<span>I needed something compact, efficient, and capable enough to handle the demands of a small-scale Kubernetes cluster and preferably something I don&#39;t have to assemble a lot. After researching, I decided on the Beelink S12 Pro with Intel N100 CPUs.</span><br />
+<br />
+<a class='textlink' href='https://www.bee-link.com/products/beelink-mini-s12-pro-n100'>Beelink Min S12 Pro N100 official page</a><br />
+<br />
+<span>The Intel N100 CPUs are built on the "Alder Lake-N" architecture. These chips are designed to balance performance and energy efficiency well. With four cores, they&#39;re more than capable of running multiple containers, even with moderate workloads. Plus, they consume only 6W of power, keeping the electricity bill low and the setup quiet - perfect for 24/7 operation.</span><br />
+<br />
+<a href='./f3s-kubernetes-with-freebsd-part-2/f3s-collage1.jpg'><img alt='Beelink preparation' title='Beelink preparation' src='./f3s-kubernetes-with-freebsd-part-2/f3s-collage1.jpg' /></a><br />
+<br />
+<span>The Beelink comes with the following specs:</span><br />
+<br />
+<ul>
+<li>12th Gen Intel N100 processor, with four cores and four threads, and a maximum frequency of up to 3.4 GHz.</li>
+<li>16 GB of DDR4 RAM, with a maximum (official) size of 16 GB (but people could install 32 GB on it).</li>
+<li>500 GB M.2 SSD, with the option to install a 2nd 2.5 SSD drive (which I want to use later in this blog series).</li>
+<li>GBit ethernet</li>
+<li>Four USB 3.2 Gen2 ports (maybe I want to mount something externally at some point)</li>
+<li>Dimensions and weight: 115*102*39mm, 280g</li>
+<li>Silent cooling system.</li>
+<li>HDMI output (needed only for the initial installation)</li>
+<li>Auto power on via WoL (may make use of it)</li>
+<li>Wi-Fi (not going to use it)</li>
+</ul><br />
+<span>I bought three (3) of them for the cluster I intend to build.</span><br />
+<br />
+<h3 style='display: inline' id='beelink-unboxing'>Beelink unboxing</h3><br />
+<br />
+<span>Unboxing was uneventful. Every Beelink PC came with: </span><br />
+<br />
+<ul>
+<li>An AC power adapter</li>
+<li>An HDMI cable</li>
+<li>A VESA mount with screws (not using it as of now)</li>
+<li>Some manuals</li>
+<li>The pre-assembled Beelink PC itself.</li>
+<li>A "Hello" post card (??)</li>
+</ul><br />
+<span>Overall, I love the small form factor.</span><br />
+<br />
+<h3 style='display: inline' id='network-switch'>Network switch</h3><br />
+<br />
+<span>I went with the TP-Link mini 5-port switch, as I had a spare one available. That switch will be plugged into my wall Ethernet port, which connects directly to my fiber internet router with 100 Mbit/s down and 50 Mbit/s upload speed.</span><br />
+<br />
+<a href='./f3s-kubernetes-with-freebsd-part-2/switch.jpg'><img alt='Switch' title='Switch' src='./f3s-kubernetes-with-freebsd-part-2/switch.jpg' /></a><br />
+<br />
+<h2 style='display: inline' id='installing-freebsd'>Installing FreeBSD</h2><br />
+<br />
+<h3 style='display: inline' id='base-install'>Base install</h3><br />
+<br />
+<span>First, I downloaded the boot-only ISO of the latest FreeBSD release and dumped it on a USB stick on my Fedora laptop:</span><br />
+<br />
+<!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><font color="#F3E651">[</font><font color="#ff0000">paul@earth</font><font color="#F3E651">]~</font><font color="#ff0000">/Downloads</font><font color="#F3E651">%</font><font color="#ff0000"> sudo dd </font><font color="#F3E651">\</font>
+<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#F3E651">=</font><font color="#ff0000">FreeBSD-</font><font color="#bb00ff">14.1</font><font color="#ff0000">-RELEASE-amd</font><font color="#bb00ff">64</font><font color="#ff0000">-bootonly</font><font color="#F3E651">.</font><font color="#ff0000">iso </font><font color="#F3E651">\</font>
+<font color="#ff0000"> </font><font color="#ff0000">of</font><font color="#F3E651">=</font><font color="#ff0000">/dev/sda </font><font color="#ff0000">conv</font><font color="#F3E651">=</font><font color="#ff0000">sync</font>
+</pre>
+<br />
+<span>Next, I plugged the Beelinks (one after another) into my monitor via HDMI (the resolution of the FreeBSD text console seems strangely stretched, as I am using the LG Dual Up monitor), connected Ethernet, an external USB keyboard, and the FreeBSD USB stick, and booted the devices up. With F7, I entered the boot menu and selected the USB stick for the FreeBSD installation.</span><br />
+<br />
+<span>The installation was uneventful. I selected:</span><br />
+<br />
+<ul>
+<li>Guided ZFS on root (pool <span class='inlinecode'>zroot</span>)</li>
+<li>Unencrypted ZFS (I will encrypt separate datasets later; I want it to be able to boot without human interaction)</li>
+<li>Static IP configuration (to ensure that the boxes always have the same IPs, even after switching the router/DHCP server)</li>
+<li>I decided to enable the SSH daemon, NTP server, and NTP time synchronization at boot, and I also enabled powerd for automatic CPU frequency scaling.</li>
+<li>In addition to <span class='inlinecode'>root,</span> I added a personal user, <span class='inlinecode'>paul,</span> whom I placed in the <span class='inlinecode'>wheel</span> group.</li>
+</ul><br />
+<span>After doing all that three times (once for each Beelink PC), I had three ready-to-use FreeBSD boxes! Their hostnames are <span class='inlinecode'>f0</span>, <span class='inlinecode'>f1</span> and <span class='inlinecode'>f2</span>!</span><br />
+<br />
+<a href='./f3s-kubernetes-with-freebsd-part-2/f3s-collage2.jpg'><img alt='Beelink installation' title='Beelink installation' src='./f3s-kubernetes-with-freebsd-part-2/f3s-collage2.jpg' /></a><br />
+<br />
+<h3 style='display: inline' id='latest-patch-level-and-customizing-etchosts'>Latest patch level and customizing <span class='inlinecode'>/etc/hosts</span></h3><br />
+<br />
+<span>After the first boot, I upgraded to the latest FreeBSD patch level as follows:</span><br />
+<br />
+<!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># freebsd-update fetch</font></i>
+<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># freebsd-update install</font></i>
+<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># freebsd-update reboot</font></i>
+</pre>
+<br />
+<span>I also added the following entries for the three FreeBSD boxes to the <span class='inlinecode'>/etc/hosts</span> file:</span><br />
+<!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># cat &lt;&lt;END &gt;&gt;/etc/hosts</font></i>
+<font color="#bb00ff">192.168</font><font color="#F3E651">.</font><font color="#bb00ff">1.130</font><font color="#ff0000"> f0 f0</font><font color="#F3E651">.</font><font color="#ff0000">lan f0</font><font color="#F3E651">.</font><font color="#ff0000">lan</font><font color="#F3E651">.</font><font color="#ff0000">buetow</font><font color="#F3E651">.</font><font color="#ff0000">org</font>
+<font color="#bb00ff">192.168</font><font color="#F3E651">.</font><font color="#bb00ff">1.131</font><font color="#ff0000"> f1 f1</font><font color="#F3E651">.</font><font color="#ff0000">lan f1</font><font color="#F3E651">.</font><font color="#ff0000">lan</font><font color="#F3E651">.</font><font color="#ff0000">buetow</font><font color="#F3E651">.</font><font color="#ff0000">org</font>
+<font color="#bb00ff">192.168</font><font color="#F3E651">.</font><font color="#bb00ff">1.132</font><font color="#ff0000"> f2 f2</font><font color="#F3E651">.</font><font color="#ff0000">lan f2</font><font color="#F3E651">.</font><font color="#ff0000">lan</font><font color="#F3E651">.</font><font color="#ff0000">buetow</font><font color="#F3E651">.</font><font color="#ff0000">org</font>
+<font color="#ff0000">END</font>
+</pre>
+<br />
+<h3 style='display: inline' id='additional-packages-after-install'>Additional packages after install</h3><br />
+<br />
+<span>After that, I installed the following additional packages:</span><br />
+<br />
+<!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># pkg install helix doas zfs-periodic uptimed</font></i>
+</pre>
+<br />
+<span>Helix? It&#39;s my favourite text editor. I have nothing against <span class='inlinecode'>vi</span> but like <span class='inlinecode'>hx</span> (Helix) more!</span><br />
+<br />
+<span><span class='inlinecode'>doas</span>? It&#39;s a pretty neat (and KISS) replacement for <span class='inlinecode'>sudo</span>. It has far fewer features than <span class='inlinecode'>sudo</span>, which is supposed to make it more secure. Its origin is the OpenBSD project. For <span class='inlinecode'>doas</span>, I accepted the default configuration (where users in the <span class='inlinecode'>wheel</span> group are allowed to run commands as <span class='inlinecode'>root</span>):</span><br />
+<br />
+<!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># cp /usr/local/etc/doas.conf.sample /usr/local/etc/doas.conf</font></i>
+</pre>
+<br />
+<span><span class='inlinecode'>zfs-periodic</span> is a nifty tool for automatically creating ZFS snapshots. I decided to go with the following configuration here:</span><br />
+<br />
+<!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># sysrc daily_zfs_snapshot_enable=YES</font></i>
+<font color="#ff0000">daily_zfs_snapshot_enable</font><font color="#F3E651">:</font><font color="#ff0000"> -</font><font color="#F3E651">&gt;</font><font color="#ff0000"> YES</font>
+<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># sysrc daily_zfs_snapshot_pools=zroot</font></i>
+<font color="#ff0000">daily_zfs_snapshot_pools</font><font color="#F3E651">:</font><font color="#ff0000"> -</font><font color="#F3E651">&gt;</font><font color="#ff0000"> zroot</font>
+<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># sysrc daily_zfs_snapshot_keep=7</font></i>
+<font color="#ff0000">daily_zfs_snapshot_keep</font><font color="#F3E651">:</font><font color="#ff0000"> -</font><font color="#F3E651">&gt;</font><font color="#ff0000"> </font><font color="#bb00ff">7</font>
+<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># sysrc weekly_zfs_snapshot_enable=YES</font></i>
+<font color="#ff0000">weekly_zfs_snapshot_enable</font><font color="#F3E651">:</font><font color="#ff0000"> -</font><font color="#F3E651">&gt;</font><font color="#ff0000"> YES</font>
+<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># sysrc weekly_zfs_snapshot_pools=zroot</font></i>
+<font color="#ff0000">weekly_zfs_snapshot_pools</font><font color="#F3E651">:</font><font color="#ff0000"> -</font><font color="#F3E651">&gt;</font><font color="#ff0000"> zroot</font>
+<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># sysrc weekly_zfs_snapshot_keep=5</font></i>
+<font color="#ff0000">weekly_zfs_snapshot_keep</font><font color="#F3E651">:</font><font color="#ff0000"> -</font><font color="#F3E651">&gt;</font><font color="#ff0000"> </font><font color="#bb00ff">5</font>
+<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># sysrc monthly_zfs_snapshot_enable=YES</font></i>
+<font color="#ff0000">monthly_zfs_snapshot_enable</font><font color="#F3E651">:</font><font color="#ff0000"> -</font><font color="#F3E651">&gt;</font><font color="#ff0000"> YES</font>
+<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># sysrc monthly_zfs_snapshot_pools=zroot</font></i>
+<font color="#ff0000">monthly_zfs_snapshot_pools</font><font color="#F3E651">:</font><font color="#ff0000"> -</font><font color="#F3E651">&gt;</font><font color="#ff0000"> zroot</font>
+<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># sysrc weekly_zfs_snapshot_keep=2</font></i>
+<font color="#ff0000">weekly_zfs_snapshot_keep</font><font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#bb00ff">5</font><font color="#ff0000"> -</font><font color="#F3E651">&gt;</font><font color="#ff0000"> </font><font color="#bb00ff">2</font>
+</pre>
+<br />
+<span><span class='inlinecode'>uptimed</span>? I like to track my uptimes. This is how I configured the daemon:</span><br />
+<br />
+<!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># cp /usr/local/mimecast/etc/uptimed.conf-dist \</font></i>
+<font color="#ff0000"> /usr/local/mimecast/etc/uptimed</font><font color="#F3E651">.</font><font color="#ff0000">conf </font>
+<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># hx /usr/local/mimecast/etc/uptimed.conf</font></i>
+</pre>
+<br />
+<span>In the Helix editor session, I changed <span class='inlinecode'>LOG_MAXIMUM_ENTRIES</span> to <span class='inlinecode'>0</span> to keep all uptime entries forever and not cut off at 50 (the default config). After that, I enabled and started <span class='inlinecode'>uptimed</span>:</span><br />
+<br />
+<!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># service uptimed enable</font></i>
+<font color="#ff0000">root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># service uptimed start</font></i>
+</pre>
+<br />
+<span>To check the current uptime stats, I can now run <span class='inlinecode'>uprecords</span>:</span><br />
+<br />
+<!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><font color="#ff0000"> root@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><i><font color="#ababab"># uprecords</font></i>
+<font color="#ff0000"> </font><i><font color="#ababab"># Uptime | System Boot up</font></i>
+<font color="#ff0000">----------------------------</font><font color="#F3E651">+</font><font color="#ff0000">---------------------------------------------------</font>
+<font color="#ff0000">-</font><font color="#F3E651">&gt;</font><font color="#ff0000"> </font><font color="#bb00ff">1</font><font color="#ff0000"> </font><font color="#bb00ff">0</font><font color="#ff0000"> days</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">00</font><font color="#F3E651">:</font><font color="#bb00ff">07</font><font color="#F3E651">:</font><font color="#bb00ff">34</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> FreeBSD </font><font color="#bb00ff">14.1</font><font color="#ff0000">-RELEASE Mon Dec </font><font color="#bb00ff">2</font><font color="#ff0000"> </font><font color="#bb00ff">12</font><font color="#F3E651">:</font><font color="#bb00ff">21</font><font color="#F3E651">:</font><font color="#bb00ff">44</font><font color="#ff0000"> </font><font color="#bb00ff">2024</font>
+<font color="#ff0000">----------------------------</font><font color="#F3E651">+</font><font color="#ff0000">---------------------------------------------------</font>
+<font color="#ff0000">NewRec </font><font color="#bb00ff">0</font><font color="#ff0000"> days</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">00</font><font color="#F3E651">:</font><font color="#bb00ff">07</font><font color="#F3E651">:</font><font color="#bb00ff">33</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> since Mon Dec </font><font color="#bb00ff">2</font><font color="#ff0000"> </font><font color="#bb00ff">12</font><font color="#F3E651">:</font><font color="#bb00ff">21</font><font color="#F3E651">:</font><font color="#bb00ff">44</font><font color="#ff0000"> </font><font color="#bb00ff">2024</font>
+<font color="#ff0000"> up </font><font color="#bb00ff">0</font><font color="#ff0000"> days</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">00</font><font color="#F3E651">:</font><font color="#bb00ff">07</font><font color="#F3E651">:</font><font color="#bb00ff">34</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> since Mon Dec </font><font color="#bb00ff">2</font><font color="#ff0000"> </font><font color="#bb00ff">12</font><font color="#F3E651">:</font><font color="#bb00ff">21</font><font color="#F3E651">:</font><font color="#bb00ff">44</font><font color="#ff0000"> </font><font color="#bb00ff">2024</font>
+<font color="#ff0000"> down </font><font color="#bb00ff">0</font><font color="#ff0000"> days</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">00</font><font color="#F3E651">:</font><font color="#bb00ff">00</font><font color="#F3E651">:</font><font color="#bb00ff">00</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> since Mon Dec </font><font color="#bb00ff">2</font><font color="#ff0000"> </font><font color="#bb00ff">12</font><font color="#F3E651">:</font><font color="#bb00ff">21</font><font color="#F3E651">:</font><font color="#bb00ff">44</font><font color="#ff0000"> </font><font color="#bb00ff">2024</font>
+<font color="#ff0000"> </font><font color="#F3E651">%</font><font color="#ff0000">up </font><font color="#bb00ff">100.000</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> since Mon Dec </font><font color="#bb00ff">2</font><font color="#ff0000"> </font><font color="#bb00ff">12</font><font color="#F3E651">:</font><font color="#bb00ff">21</font><font color="#F3E651">:</font><font color="#bb00ff">44</font><font color="#ff0000"> </font><font color="#bb00ff">2024</font>
+</pre>
+<br />
+<h2 style='display: inline' id='hardware-check'>Hardware check</h2><br />
+<br />
+<h3 style='display: inline' id='ethernet'>Ethernet</h3><br />
+<br />
+<span>Works. Nothing eventful, really. It&#39;s a cheap Realtek chip, but it will do what it is supposed to do.</span><br />
+<br />
+<!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><font color="#ff0000">paul@f0</font><font color="#F3E651">:~</font><font color="#ff0000"> </font><font color="#F3E651">%</font><font color="#ff0000"> ifconfig re0</font>
+<font color="#ff0000">re0</font><font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#ff0000">flags</font><font color="#F3E651">=</font><font color="#bb00ff">1008843</font><font color="#F3E651">&lt;</font><font color="#ff0000">UP</font><font color="#F3E651">,</font><font color="#ff0000">BROADCAST</font><font color="#F3E651">,</font><font color="#ff0000">RUNNING</font><font color="#F3E651">,</font><font color="#ff0000">SIMPLEX</font><font color="#F3E651">,</font><font color="#ff0000">MULTICAST</font><font color="#F3E651">,</font><font color="#ff0000">LOWER_UP</font><font color="#F3E651">&gt;</font><font color="#ff0000"> metric </font><font color="#bb00ff">0</font><font color="#ff0000"> mtu </font><font color="#bb00ff">1500</font>
+<font color="#ff0000"> </font><font color="#ff0000">options</font><font color="#F3E651">=</font><font color="#ff0000">8209b</font><font color="#F3E651">&lt;</font><font color="#ff0000">RXCSUM</font><font color="#F3E651">,</font><font color="#ff0000">TXCSUM</font><font color="#F3E651">,</font><font color="#ff0000">VLAN_MTU</font><font color="#F3E651">,</font><font color="#ff0000">VLAN_HWTAGGING</font><font color="#F3E651">,</font><font color="#ff0000">VLAN_HWCSUM</font><font color="#F3E651">,</font><font color="#ff0000">WOL_MAGIC</font><font color="#F3E651">,</font><font color="#ff0000">LINKSTATE</font><font color="#F3E651">&gt;</font>
+<font color="#ff0000"> ether e8</font><font color="#F3E651">:</font><font color="#ff0000">ff</font><font color="#F3E651">:</font><font color="#ff0000">1e</font><font color="#F3E651">:</font><font color="#ff0000">d7</font><font color="#F3E651">:</font><font color="#ff0000">1c</font><font color="#F3E651">:</font><font color="#ff0000">ac</font>
+<font color="#ff0000"> inet </font><font color="#bb00ff">192.168</font><font color="#F3E651">.</font><font color="#bb00ff">1.130</font><font color="#ff0000"> netmask </font><font color="#bb00ff">0xffffff00</font><font color="#ff0000"> broadcast </font><font color="#bb00ff">192.168</font><font color="#F3E651">.</font><font color="#bb00ff">1.255</font>
+<font color="#ff0000"> inet6 fe80</font><font color="#F3E651">::</font><font color="#ff0000">eaff</font><font color="#F3E651">:</font><font color="#ff0000">1eff</font><font color="#F3E651">:</font><font color="#ff0000">fed7</font><font color="#F3E651">:</font><font color="#ff0000">1cac</font><font color="#F3E651">%</font><font color="#ff0000">re0 prefixlen </font><font color="#bb00ff">64</font><font color="#ff0000"> scopeid </font><font color="#bb00ff">0x1</font>
+<font color="#ff0000"> inet6 fd22</font><font color="#F3E651">:</font><font color="#ff0000">c702</font><font color="#F3E651">:</font><font color="#ff0000">acb7</font><font color="#F3E651">:</font><font color="#bb00ff">0</font><font color="#F3E651">:</font><font color="#ff0000">eaff</font><font color="#F3E651">:</font><font color="#ff0000">1eff</font><font color="#F3E651">:</font><font color="#ff0000">fed7</font><font color="#F3E651">:</font><font color="#ff0000">1cac prefixlen </font><font color="#bb00ff">64</font><font color="#ff0000"> detached autoconf</font>
+<font color="#ff0000"> inet6 2a01</font><font color="#F3E651">:</font><font color="#ff0000">5a8</font><font color="#F3E651">:</font><font color="#bb00ff">304</font><font color="#F3E651">:</font><font color="#ff0000">1d5c</font><font color="#F3E651">:</font><font color="#ff0000">eaff</font><font color="#F3E651">:</font><font color="#ff0000">1eff</font><font color="#F3E651">:</font><font color="#ff0000">fed7</font><font color="#F3E651">:</font><font color="#ff0000">1cac prefixlen </font><font color="#bb00ff">64</font><font color="#ff0000"> autoconf pltime </font><font color="#bb00ff">10800</font><font color="#ff0000"> vltime </font><font color="#bb00ff">14400</font>
+<font color="#ff0000"> media</font><font color="#F3E651">:</font><font color="#ff0000"> Ethernet autoselect </font><font color="#F3E651">(</font><font color="#ff0000">1000baseT </font><font color="#F3E651">&lt;</font><font color="#ff0000">full-duplex</font><font color="#F3E651">&gt;)</font>
+<font color="#ff0000"> status</font><font color="#F3E651">:</font><font color="#ff0000"> active</font>
+<font color="#ff0000"> nd6 </font><font color="#ff0000">options</font><font color="#F3E651">=</font><font color="#bb00ff">23</font><font color="#F3E651">&lt;</font><font color="#ff0000">PERFORMNUD</font><font color="#F3E651">,</font><font color="#ff0000">ACCEPT_RTADV</font><font color="#F3E651">,</font><font color="#ff0000">AUTO_LINKLOCAL</font><font color="#F3E651">&gt;</font>
+</pre>
+<br />
+<h3 style='display: inline' id='ram'>RAM</h3><br />
+<br />
+<span>All there:</span><br />
+<br />
<