<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Nathanael Liechti</title><link>https://technat.ch/</link><description>Recent content on Nathanael Liechti</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sat, 15 Mar 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://technat.ch/index.xml" rel="self" type="application/rss+xml"/><item><title>Trying out Pangolin</title><link>https://technat.ch/posts/pangolin/</link><pubDate>Sat, 15 Mar 2025 00:00:00 +0000</pubDate><guid>https://technat.ch/posts/pangolin/</guid><description>&lt;p&gt;I recently saw a project called &lt;a href="https://github.com/fosrl/pangolin"&gt;pangolin&lt;/a&gt; on Github that looked like a wonderful piece of software to solve a particularly naste problem homelabers often have. So I gave it a spin and wrote down my learnings in this blog post.&lt;/p&gt;
&lt;h2 id="the-infrastructure"&gt;The infrastructure&lt;/h2&gt;
&lt;p&gt;Pangolin seems to work best with some sort of VPS/Cloud Server that has a public IPv4/v6. &lt;a href="https://docs.fossorial.io/Getting%20Started/choosing-a-vps"&gt;Their docs&lt;/a&gt; suggest you go for something as low as 1vCPU and 1GB of memory and not more than 8GB of disk space.&lt;/p&gt;</description></item><item><title>Kubernetes - the kubeadm way</title><link>https://technat.ch/posts/k8s_kubeadm/</link><pubDate>Mon, 30 Sep 2024 00:00:00 +0000</pubDate><guid>https://technat.ch/posts/k8s_kubeadm/</guid><description>&lt;p&gt;This is my guide / doc how to setup Kubernetes for educational purposes (including CKA/CKS exams) using plain kubeadm.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s how the cluster will look like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;cloud provider of choice is &lt;a href="https://www.hetzner.com/de/"&gt;Hetzner&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;all traffic flows through the internet, no private networks&lt;/li&gt;
&lt;li&gt;Dual-stack IPv4/IPv6 networking&lt;/li&gt;
&lt;li&gt;plain ubuntu nodes as base OS&lt;/li&gt;
&lt;li&gt;Cilium as CNI of choice (with kube-proxy replacement)&lt;/li&gt;
&lt;li&gt;manual kubeadm to setup&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;Before we dive into the details on how to setup, here are some prerequisites to met when you want to follow allong:&lt;/p&gt;</description></item><item><title>Remote Coding</title><link>https://technat.ch/posts/remote-coding/</link><pubDate>Tue, 20 Feb 2024 00:00:00 +0000</pubDate><guid>https://technat.ch/posts/remote-coding/</guid><description>&lt;p&gt;This guide shows how I code / tinker on the go.&lt;/p&gt;
&lt;h2 id="background"&gt;Background&lt;/h2&gt;
&lt;p&gt;If you stumbeled over this post, you probably already heard of know solutions like &lt;a href="https://www.gitpod.io/"&gt;Gitpod&lt;/a&gt;, &lt;a href="https://github.com/features/codespaces"&gt;Github Codespaces&lt;/a&gt; or &lt;a href="https://coder.com/"&gt;Coder&lt;/a&gt; to quickly spin up a development environment on the go. While I was using them I got fascinated about their capabilites and wished that I could use them for everything I do. Unfortunately some of these solutions are tied to a specific platform and or repository or they don´t offer you the performance or control that you would like. That was when I stumbeled over &lt;a href="https://code-server.dev"&gt;code-server&lt;/a&gt;, a web-based build of &lt;a href="https://github.com/code-oss-dev/code"&gt;Code OSS&lt;/a&gt;. That was the missing piece I needed to finally build my own codespace-like solution, but that time with full control.&lt;/p&gt;</description></item><item><title>Ephemeral Kubernetes</title><link>https://technat.ch/posts/ephemeral_k8s/</link><pubDate>Sun, 24 Dec 2023 00:00:00 +0000</pubDate><guid>https://technat.ch/posts/ephemeral_k8s/</guid><description>&lt;h2 id="intro"&gt;Intro&lt;/h2&gt;
&lt;p&gt;As a Kubernetes Engineer I sometimes need to test something that requires a fresh Kubernetes cluster. So this doc lists some options I use to accomplish this goal.&lt;/p&gt;
&lt;h2 id="grapes"&gt;Grapes&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/the-technat/grapes"&gt;grapes&lt;/a&gt; is a repository of mine that contains configuration and github actions to quickly deploy various flavors of Kubernetes.&lt;/p&gt;
&lt;h2 id="l8s"&gt;L8s&lt;/h2&gt;
&lt;p&gt;L8s is my approach to install K8s using Docker containers. The approach is not new, nor are the tools I&amp;rsquo;m using.
The thing I just did, was to create a way to quickly recreate such a cluster using existing tooling.
The result: &lt;a href="https://github.com/the-technat/dotfiles/tree/master/dot_omz-custom/plugins/l8s"&gt;https://github.com/the-technat/dotfiles/tree/master/dot_omz-custom/plugins/l8s&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>SwayWM</title><link>https://technat.ch/posts/sway-de/</link><pubDate>Wed, 08 Mar 2023 00:00:00 +0000</pubDate><guid>https://technat.ch/posts/sway-de/</guid><description>&lt;p&gt;My Setup of a Wayland Compositor with all the tools needed to be productive, while only having what is really necessary (minimalistic approach).&lt;/p&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;This guide will show from A-Z the steps done, the configs modified and tools installed to get a decent working graphical environment, just with a wayland compositor and a lot of open-source community-tools.&lt;/p&gt;
&lt;p&gt;As for all we need some concepts and principles. Mine are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If possible let default configuration as is and add custom config clearly visible -&amp;gt; include instead of copy and modify&lt;/li&gt;
&lt;li&gt;Don&amp;rsquo;t change keybindings! Use the default ones if possible!&lt;/li&gt;
&lt;li&gt;If apps run on xwayland or wayland doesn&amp;rsquo;t matter. We will need both, so we don&amp;rsquo;t actively force all apps that are theoretically possible to run on wayland to do so (in some years, it might be possible&amp;hellip;)&lt;/li&gt;
&lt;li&gt;I&amp;rsquo;m going to style everything using &lt;a href="https://fonts.google.com/specimen/Rubik"&gt;Rubik&lt;/a&gt; for UI text, &lt;a href="https://github.com/ryanoasis/nerd-fonts/tree/master/patched-fonts/FiraCode"&gt;FiraCode NerdFont&lt;/a&gt; for code and &lt;a href="https://ethanschoonover.com/solarized/"&gt;Solarized&lt;/a&gt; for colors.&lt;/li&gt;
&lt;li&gt;This guide shows how things are done, where the tools and configs come from, most config snippets should be shown in this guide, so that someone can follow this and configure it&amp;rsquo;s sway DE accordingly&lt;/li&gt;
&lt;li&gt;But: My actual config files can differ from what is in this guide. They are stored in my WALL-E repo: &lt;a href="https://github.com/the-technat/WAll-E"&gt;https://github.com/the-technat/WAll-E&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="drawbacks--to-do"&gt;Drawbacks &amp;amp; To Do&lt;/h2&gt;
&lt;p&gt;Linus is always broken and nothing is perfect:&lt;/p&gt;</description></item><item><title>Arch Linux</title><link>https://technat.ch/posts/arch/</link><pubDate>Sun, 01 Jan 2023 00:00:00 +0000</pubDate><guid>https://technat.ch/posts/arch/</guid><description>&lt;p&gt;Install Arch Linux on my daily driver notebook.&lt;/p&gt;
&lt;h2 id="components-in-this-installation"&gt;Components in this installation&lt;/h2&gt;
&lt;p&gt;Arch Linux is flexible and there are many guides out there that show you how to install it. During my research I found it unpleasant having to read the entire article before knowing what software the article shows to configure for diferent components. Therefore here&amp;rsquo;s the list of what Software I use in my Arch Linux Installation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;System Type: EFI&lt;/li&gt;
&lt;li&gt;Partitioning: LVM (ext4) on LUKS -&amp;gt; all data encrypted (except boot partition)&lt;/li&gt;
&lt;li&gt;Encryption: LUKS2, either using password, keyfile or FIDO2 device&lt;/li&gt;
&lt;li&gt;Bootloader: systemd-boot&lt;/li&gt;
&lt;li&gt;initramfs: systemd-init hooks&lt;/li&gt;
&lt;li&gt;SWAP: swapfile&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="disclaimer"&gt;Disclaimer&lt;/h2&gt;
&lt;p&gt;I documented in this guide how I installed Arch Linux on my notebook to have a reference I can use if something goes wrong and I need to know how I configured it. It&amp;rsquo;s also a preparation for the installation as I can test this guide on a virtual machine or another computer and if I know that these commands work, I can configure my system in one run. So don&amp;rsquo;t expect to have a full guide showing any possibilities and tricks to follow allonw. Note that I&amp;rsquo;m also just one of many computer scients and not all have the same opinion concering how things are done.&lt;/p&gt;</description></item><item><title>LVM - Tricks</title><link>https://technat.ch/posts/lvm_tricks/</link><pubDate>Tue, 06 Dec 2022 00:00:00 +0000</pubDate><guid>https://technat.ch/posts/lvm_tricks/</guid><description>&lt;h2 id="extend-logical-volumes"&gt;Extend Logical Volumes&lt;/h2&gt;
&lt;p&gt;If using LVM and VMs we can manually extend the logical volumes. But for this the volume must be unmounted, so we need to use a live installation.&lt;/p&gt;
&lt;p&gt;Shutdown the server you want to extend an LV and mount a live-iso. I&amp;rsquo;m using the &lt;a href="https://archlinux.org/download"&gt;archlinux&lt;/a&gt; iso here.&lt;/p&gt;
&lt;p&gt;Don&amp;rsquo;t forget to resize the VM disk to be bigger before you boot the live ISO.&lt;/p&gt;
&lt;p&gt;Now let&amp;rsquo;s extend the PV:&lt;/p&gt;</description></item><item><title>Nextcloud</title><link>https://technat.ch/posts/nextcloud/</link><pubDate>Sun, 31 Jul 2022 00:00:00 +0000</pubDate><guid>https://technat.ch/posts/nextcloud/</guid><description>&lt;p&gt;My personal nextcloud on hcloud.&lt;/p&gt;
&lt;h2 id="infrastructure"&gt;Infrastructure&lt;/h2&gt;
&lt;p&gt;Single VPS on Hetzner&lt;/p&gt;
&lt;h2 id="dns"&gt;DNS&lt;/h2&gt;
&lt;p&gt;Simple A record pointing to the public IP of your server (e.g &lt;code&gt;cloud.technat.ch&lt;/code&gt; for me).&lt;/p&gt;
&lt;h2 id="os-preparations"&gt;OS Preparations&lt;/h2&gt;
&lt;h3 id="shell-tipps"&gt;Shell tipps&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Edit the &lt;code&gt;ENV_PATH&lt;/code&gt; variable in &lt;code&gt;/etc/login.defs&lt;/code&gt; to contain &lt;code&gt;/sbin:/usr/sbin&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Add the file &lt;code&gt;~/.bash_aliases&lt;/code&gt; with the following content:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;alias off&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;sudo -u www-data php /var/www/cloud.technat.ch/occ maintenance:mode --off&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;alias on&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;sudo -u www-data php /var/www/cloud.technat.ch/occ maintenance:mode --on&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;alias occ&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;sudo -u www-data php /var/www/cloud.technat.ch/occ&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;alias l&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;ls -lahF&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="external-os-disk"&gt;External OS Disk&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;/dev/sdb&lt;/code&gt; is configured as our storage disk using LVM.&lt;/p&gt;</description></item><item><title>Nextcloud Maintenance</title><link>https://technat.ch/posts/nextcloud_maintenance/</link><pubDate>Sun, 31 Jul 2022 00:00:00 +0000</pubDate><guid>https://technat.ch/posts/nextcloud_maintenance/</guid><description>&lt;h2 id="backups"&gt;Backups&lt;/h2&gt;
&lt;p&gt;To backup a nextcloud instance you have to save the following directories:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Webroot (usually under &lt;code&gt;/var/www&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Data dir (defined in nextcloud&amp;rsquo;s config)&lt;/li&gt;
&lt;li&gt;DB Dump -&amp;gt; either using mysqldump or pgdump&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To do a mysql dump you can use the following command:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo mysqldump -u root -p ncdb -R -e --triggers --single-transaction &amp;gt; ncdb.sql
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;ncdb is the name of you database&lt;/li&gt;
&lt;li&gt;root is the user that is allowed to connect to mysql using unix socket authentication&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And for pgdump:&lt;/p&gt;</description></item></channel></rss>