<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Blog About Debian Linux Administration and Automation on Blunix GmbH</title>
    <link>https://www.blunix.com/blog/</link>
    <description>The Blunix GmbH Blog writes about interesting Debian administration topics like Configuration Management, server administration and automation</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 04 Jun 2024 00:00:00 &#43;0000</lastBuildDate>
    <atom:link href="https://www.blunix.com/blog/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Ultimate Guide About Linux Server Security Basics for Debian</title>
      <link>https://www.blunix.com/blog/ultimate-guide-about-linux-server-security-for-debian-linux.html</link>
      <pubDate>Tue, 04 Jun 2024 00:00:00 &#43;0000</pubDate>
      <guid>https://www.blunix.com/blog/ultimate-guide-about-linux-server-security-for-debian-linux.html</guid>
      <description>&lt;p&gt;Please &lt;a href=&#34;https://www.blunix.com/#contact&#34; title=&#34;Blunix GmbH contact options&#34;&gt;contact us&lt;/a&gt;
 if anything is not clearly described, does not work, seems incorrect or if you require support.&lt;/p&gt;
&lt;p&gt;This extensive tutorial thoroughly explains the necessary security measures to secure a fresh Debian Linux server installation. It contains and explains all steps required to keep your server safe when it is publicly reachable over the internet.&lt;/p&gt;
&lt;p&gt;It is written for those who &amp;ldquo;just want to host wordpress&amp;rdquo; or similar tools on Debian servers. It covers the essential security measures, provides insights on additional steps you can take and explains why basic security is usually sufficient for most hosting requirements.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Copying Files in Qubes OS: From and to dom0 and between VMs</title>
      <link>https://www.blunix.com/blog/copying-files-and-directories-in-qubes-os-from-and-to-dom0-and-between-VMs.html</link>
      <pubDate>Sat, 25 May 2024 00:00:00 &#43;0000</pubDate>
      <guid>https://www.blunix.com/blog/copying-files-and-directories-in-qubes-os-from-and-to-dom0-and-between-VMs.html</guid>
      <description>&lt;p&gt;Please &lt;a href=&#34;https://www.blunix.com/#contact&#34; title=&#34;Blunix GmbH contact options&#34;&gt;contact us&lt;/a&gt;
 if anything is not clearly described, does not work, seems incorrect or if you require support.&lt;/p&gt;
&lt;p&gt;Qubes OS VMs are isolated from one another by design. Hence, copying files between VMs is made a bit more complicated by design. This tutorial explains how to copy files or directories from dom0 to a Qubes VM, from one Qubes VM to another VM, how to copy from a VM to dom0 and how to do all that automatically in BASH scripts.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Install OpenBSD on ARM based Hetzner Cloud Servers</title>
      <link>https://www.blunix.com/blog/how-to-install-openbsd-on-hetzner-cloud-servers.html</link>
      <pubDate>Thu, 23 May 2024 00:00:00 &#43;0000</pubDate>
      <guid>https://www.blunix.com/blog/how-to-install-openbsd-on-hetzner-cloud-servers.html</guid>
      <description>&lt;p&gt;Please &lt;a href=&#34;https://www.blunix.com/#contact&#34; title=&#34;Blunix GmbH contact options&#34;&gt;contact us&lt;/a&gt;
 if anything is not clearly described, does not work, seems incorrect or if you require support.&lt;/p&gt;
&lt;p&gt;Installing OpenBSD on a Hetzner cloud server is very easy and only takes about five minutes. Here is everything you need to know in easy to follow steps.&lt;/p&gt;
&lt;h2 id=&#34;table-of-contents&#34;&gt;Table of contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#choosing-the-correct-hetzner-cloud-server&#34;&gt;Choosing the Correct Hetzner Cloud Server&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#downloading-and-flashing-the-openbsd-installer-inside-the-hetzner-rescue-system&#34;&gt;Downloading and Flashing the OpenBSD Installer Inside the Hetzner Rescue System&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#installing-openbsd-using-the-hetzner-cloud-server-kvm-console&#34;&gt;Installing OpenBSD using the Hetzner Cloud Server KVM Console&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#most-basic-security-steps-for-the-new-openbsd-installation&#34;&gt;Most Basic Security Steps for the New OpenBSD Installation&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#setup-your-ssh-public-key&#34;&gt;Setup Your SSH Public Key&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#disable-password-based-ssh-authentication&#34;&gt;Disable Password Based SSH Authentication&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#disabling-the-root-user-password&#34;&gt;Disabling the Root User Password&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;choosing-the-correct-hetzner-cloud-server&#34;&gt;&lt;a href=&#34;#choosing-the-correct-hetzner-cloud-server&#34;&gt;Choosing the Correct Hetzner Cloud Server&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Create a hetzner cloud server and make sure you choose the ARM variant:&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Create Qubes OS VMs Using the Command Line</title>
      <link>https://www.blunix.com/blog/creating-qubes-os-vms-on-the-command-line.html</link>
      <pubDate>Tue, 21 May 2024 00:00:00 &#43;0000</pubDate>
      <guid>https://www.blunix.com/blog/creating-qubes-os-vms-on-the-command-line.html</guid>
      <description>&lt;p&gt;Please &lt;a href=&#34;https://www.blunix.com/#contact&#34; title=&#34;Blunix GmbH contact options&#34;&gt;contact us&lt;/a&gt;
 if anything is not clearly described, does not work, seems incorrect or if you require support.&lt;/p&gt;
&lt;p&gt;This tutorial explains how to create Qubes OS VMs on the command line using the Qubes management tools &lt;code&gt;qvm-create &lt;/code&gt;, &lt;code&gt;qvm-clone &lt;/code&gt;, &lt;code&gt;qvm-prefs &lt;/code&gt;, &lt;code&gt;qubes-prefs &lt;/code&gt;, &lt;code&gt;qvm-run &lt;/code&gt; and &lt;code&gt;qvm-volume &lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;It explains in detail how to create the different classes of Qubes OS VMs, namely TemplateVMs, AppVMs, DispVMs and StandaloneVMs, how to customize TemplateVMs by installing and configuring software, how root and private disks are used and cloned for each type of VM and how different Qubes Prefs can be used to modify the Qubes internal usage and behavior of VMs.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Configure a Hetzner Domains DNS Records for Cloudflare</title>
      <link>https://www.blunix.com/blog/how-to-configure-a-hetzner-domains-dns-records-for-cloudflare.html</link>
      <pubDate>Tue, 07 May 2024 00:00:00 &#43;0000</pubDate>
      <guid>https://www.blunix.com/blog/how-to-configure-a-hetzner-domains-dns-records-for-cloudflare.html</guid>
      <description>&lt;p&gt;Please &lt;a href=&#34;https://www.blunix.com/#contact&#34; title=&#34;Blunix GmbH contact options&#34;&gt;contact us&lt;/a&gt;
 if anything is not clearly described, does not work, seems incorrect or if you require support.&lt;/p&gt;
&lt;p&gt;When setting the Nameserver records to cloudflare, this is not done using the regular DNS WebUI of hetzner. Instead, you have to do this directly where all the domains that are hosted with Hetzner are listed.&lt;/p&gt;
&lt;p&gt;You can find the required settings at &lt;a href=&#34;https://robot.hetzner.com/domain&#34; title=&#34;robot.hetzner.com/domain&#34;&gt;https://robot.hetzner.com/domain&lt;/a&gt;
 and NOT at dns.hetzner.com&lt;/p&gt;
&lt;p&gt;Select your domain and change the Nameserver settings there:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Disposable Temporary Email Adresses with OpenSMTPD on Linux</title>
      <link>https://www.blunix.com/blog/generating-unlimited-disposable-temporary-email-opensmtpd.html</link>
      <pubDate>Mon, 06 May 2024 00:00:00 &#43;0000</pubDate>
      <guid>https://www.blunix.com/blog/generating-unlimited-disposable-temporary-email-opensmtpd.html</guid>
      <description>&lt;p&gt;Please &lt;a href=&#34;https://www.blunix.com/#contact&#34; title=&#34;Blunix GmbH contact options&#34;&gt;contact us&lt;/a&gt;
 if anything is not clearly described, does not work, seems incorrect or if you require support.&lt;/p&gt;
&lt;p&gt;This blogpost describes in very simple and easy to follow steps how to setup an ultra-cheap self-hosted solution for temporary email addresses. You can use these email addresses, for example, to sign up for various services, like facebook, instagram, reddit, protonmail and others.&lt;/p&gt;
&lt;p&gt;This approach guarantees that the email addresses you use to signup are not blacklisted and reject your account creation, which is often the case with most public temp mail providers. It is a self-hosted alternative to larger services like &lt;a href=&#34;https://temp-mail.org/&#34; title=&#34;temp-mail.org: a free disposable email provider&#34;&gt;temp-mail.org&lt;/a&gt;
, which are constantly blacklisted.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Increasing SSD Performance on Linux using Fstrim</title>
      <link>https://www.blunix.com/blog/increasing-ssd-write-performance-on-linux-with-fstrim.html</link>
      <pubDate>Thu, 25 Apr 2024 00:00:00 &#43;0000</pubDate>
      <guid>https://www.blunix.com/blog/increasing-ssd-write-performance-on-linux-with-fstrim.html</guid>
      <description>&lt;p&gt;Please &lt;a href=&#34;https://www.blunix.com/#contact&#34; title=&#34;Blunix GmbH contact options&#34;&gt;contact us&lt;/a&gt;
 if anything is not clearly described, does not work, seems incorrect or if you require support.&lt;/p&gt;
&lt;h2 id=&#34;table-of-contents&#34;&gt;Table of contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#what-is-linux-fstrim&#34;&gt;What does the Linux &lt;code&gt;fstrim&lt;/code&gt; Command do?&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#how-a-ssd-saves-data-compared-to-a-hdd&#34;&gt;How an SSD Saves Data Compared to a HDD&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#how-a-ssd-writes-to-blocks-that-have-been-written-to-before&#34;&gt;How an SSD Writes to Blocks That Have Never Been Written to Before&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#why-ssds-need-trimming-to-optimize-write-speed&#34;&gt;Why SSD&amp;rsquo;s Need Trimming to Optimize Write Speed&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#additional-considerations&#34;&gt;Additional Considerations like Wear Leveling&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#summary&#34;&gt;Summary&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;what-is-linux-fstrim&#34;&gt;&lt;a href=&#34;#what-is-linux-fstrim&#34;&gt;What does the Linux &lt;code&gt;fstrim&lt;/code&gt; Command do?&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;fstrim&lt;/code&gt; is a command in Linux used to inform the filesystem to discard unused blocks on a solid-state drive (SSD), Non-Volatile Memory Drive (NVME) or thinly-provisioned storage device.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Howto use IPv6 on Hetzner Cloud Servers to Host a Website</title>
      <link>https://www.blunix.com/blog/ipv6-on-hetzner-cloud-server-for-hosting-a-website.html</link>
      <pubDate>Wed, 24 Apr 2024 00:00:00 &#43;0000</pubDate>
      <guid>https://www.blunix.com/blog/ipv6-on-hetzner-cloud-server-for-hosting-a-website.html</guid>
      <description>&lt;p&gt;Please &lt;a href=&#34;https://www.blunix.com/#contact&#34; title=&#34;Blunix GmbH contact options&#34;&gt;contact us&lt;/a&gt;
 if anything is not clearly described, does not work, seems incorrect or if you require support.&lt;/p&gt;
&lt;h2 id=&#34;table-of-contents&#34;&gt;Table of contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#introduction&#34;&gt;Introduction&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#creating-a-hetzner-cloud-server&#34;&gt;Creating a Hetzner Cloud Server with an IPv6 Address&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#ssh-to-the-hetzner-cloud-server-via-ipv6&#34;&gt;Connecting to the Hetzner Cloud Server via SSH by using its IPv6 Address&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#assigning-additional-ipv6-addresses-to-the-hetzner-cloud-server&#34;&gt;Assigning additional IPv6 addresses&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#assigning-additional-ipv6-addresses-to-the-hetzner-cloud-server-temporary&#34;&gt;Temporarily Assigning Multiple Individual IPv6 Addresses for Testing&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#assigning-additional-ipv6-addresses-to-the-hetzner-cloud-server-temporary-whole-subnet&#34;&gt;Temporarily Making the Server Reachable for All IPs in the Subnet&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#assigning-additional-ipv6-addresses-to-the-hetzner-cloud-server-permanent&#34;&gt;Permanently Assigning Individual Single IPv6 Addresses (Reboot Safe)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#assigning-additional-ipv6-addresses-to-the-hetzner-cloud-server-permanent-whole-subnet&#34;&gt;Permanently Assigning a whole IPv6 Subnet (Reboot Safe)&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#setting-up-ipv6-dns-aaaa-records-in-hetzner&#34;&gt;Setting up IPv6 DNS AAAA Records in the Hetzner DNS Management WebUI&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#setting-up-ipv6-records-in-etc-hosts&#34;&gt;Setting up IPv6 records in /etc/hosts&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#generating-a-letsencrypt-certificate-for-a-ipv6-domain&#34;&gt;Generating a Letsencrypt Certificate for an IPv6 / AAAA Domain&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#configuring-nginx-webserver-for-listening-on-ipv6-addresses&#34;&gt;Configuring the Nginx Webserver for Listening on IPv6 Addresses&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#configuring-nginx-webserver-for-listening-on-a-single-ipv6-address&#34;&gt;Configure Nginx to Listen on a Single IPv6 Address&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#configuring-nginx-webserver-for-listening-on-a-multiple-ipv6-addresses&#34;&gt;Configure Nginx to Listen on Multiple IPv6 Addresses&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#configuring-nginx-webserver-for-listening-on-ipv6-subnets&#34;&gt;Configure Nginx to Listen on an IPv6 Subnet&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#configuring-apache2-webserver-for-listening-on-ipv6-addresses&#34;&gt;Configuring the Apache2 Webserver for Listening on IPv6 Addresses&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#configuring-apache2-webserver-for-listening-on-a-single-ipv6-address&#34;&gt;Configure Apache2 to Listen on a Single IPv6 Address&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#configuring-apache2-webserver-for-listening-on-ipv6-subnets&#34;&gt;Configure Apache2 to Listen on an IPv6 Subnet&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#checking-if-the-website-is-reachable&#34;&gt;Checking if the Website is Reachable&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#checking-if-the-website-is-reachable&#34;&gt;Checking the Website using a Browser&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#checking-if-the-website-is-reachable-via-curl&#34;&gt;Testing the Website with Curl&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;introduction&#34;&gt;&lt;a href=&#34;#introduction&#34;&gt;Introduction&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Before starting with IPv6 you should check if your Internet Service Provider (ISP) supports IPv6. You can do so by simply accessing &lt;a href=&#34;https://ipv6.google.com/&#34; title=&#34;ipv6.google.com&#34;&gt;ipv6.google.com&lt;/a&gt;
. This is the google search page, but via IPv6 instead of IPv4. If this works for you, you can continue reading the article. If it does not, complain to your ISP to setup IPv6 or start using a VPN like &lt;a href=&#34;https://mullvad.net/en&#34; title=&#34;mullvad.net&#34;&gt;mullvad.net&lt;/a&gt;
, which will allow you to access IPv6.&lt;/p&gt;</description>
    </item>
    <item>
      <title>DNS Record Management in Git Repositories with luadns.com</title>
      <link>https://www.blunix.com/blog/dns-management-using-git-repositories-and-push-webhooks-with-luadns.html</link>
      <pubDate>Wed, 24 Apr 2024 00:00:00 &#43;0000</pubDate>
      <guid>https://www.blunix.com/blog/dns-management-using-git-repositories-and-push-webhooks-with-luadns.html</guid>
      <description>&lt;p&gt;Please &lt;a href=&#34;https://www.blunix.com/#contact&#34; title=&#34;Blunix GmbH contact options&#34;&gt;contact us&lt;/a&gt;
 if anything is not clearly described, does not work, seems incorrect or if you require support.&lt;/p&gt;
&lt;h2 id=&#34;table-of-contents&#34;&gt;Table of contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#dns-management-methods&#34;&gt;Different Methods of DNS Management&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#dns-management-methods-webui&#34;&gt;The Tedious Method: Using the DNS Provider WebUI&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#dns-management-methods-api&#34;&gt;The Improved Approach: Leveraging the API&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#dns-management-methods-git&#34;&gt;The Optimal Solution: Git Repositories&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#luadns-getting-started&#34;&gt;Getting Started with LuaDNS&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#luadns-getting-started-changing-ns-servers&#34;&gt;Changing Your NS Servers&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#luadns-getting-started-creating-the-git-repository&#34;&gt;Setting Up a Git Repository&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#luadns-getting-started-configuring-gitlab-or-github-webhooks&#34;&gt;Configuring Git Hooks for Automated Updates&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This blog post is not sponsored by LuaDNS. We are simply enthusiasts of their service and wish to extend the same level of convenience to others grappling with the management of copious DNS records.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Encryption Plausible Deniability on Linux with Cryptsetup LUKS</title>
      <link>https://www.blunix.com/blog/plausible-encryption-deniability-on-linux-with-cryptsetup-luks.html</link>
      <pubDate>Tue, 23 Apr 2024 00:00:00 &#43;0000</pubDate>
      <guid>https://www.blunix.com/blog/plausible-encryption-deniability-on-linux-with-cryptsetup-luks.html</guid>
      <description>&lt;p&gt;Please &lt;a href=&#34;https://www.blunix.com/#contact&#34; title=&#34;Blunix GmbH contact options&#34;&gt;contact us&lt;/a&gt;
 if anything is not clearly described, does not work, seems incorrect or if you require support.&lt;/p&gt;
&lt;p&gt;This blog post provides a clear and straightforward guide on how to encrypt various storage devices - including USB sticks, external hard drives, and internal storage - for plausible encryption deniability on Linux. It focuses on using the cryptsetup tool with LUKS encryption, which is installed by default on most common Linux distributions like Ubuntu. The article details how to configure a detached LUKS header, effectively making it impossible for adversaries to prove the existence of encrypted data.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Ultimate Tutorial About Linux Systemd Timers Job Scheduling</title>
      <link>https://www.blunix.com/blog/ultimate-tutorial-about-systemd-timers.html</link>
      <pubDate>Sat, 20 Apr 2024 00:00:00 &#43;0000</pubDate>
      <guid>https://www.blunix.com/blog/ultimate-tutorial-about-systemd-timers.html</guid>
      <description>&lt;p&gt;Please &lt;a href=&#34;https://www.blunix.com/#contact&#34; title=&#34;Blunix GmbH contact options&#34;&gt;contact us&lt;/a&gt;
 if anything is not clearly described, does not work, seems incorrect or if you require support.&lt;/p&gt;
&lt;p&gt;This blog post describes how to create, manage and fully understand &lt;a href=&#34;https://systemd.io/&#34;&gt;systemd&lt;/a&gt;
 timers, which are a replacement for classic &lt;a href=&#34;https://en.wikipedia.org/wiki/Cron&#34;&gt;Cron jobs&lt;/a&gt;
. Systemd timers allow for a much more fine grained configuration of when or upon which events to execute jobs, scripts, commands or systemd services in various Linux distributions.&lt;/p&gt;
&lt;p&gt;This article is written for Linux beginners and advanced users. It aims to be easy to understand. While the manual page &lt;code&gt;man systemd.timer &lt;/code&gt; can be confusing at times, this tutorial contains extensive practical examples and explains all aspects and configuration options of systemd timers in great detail.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Step-by-Step Guide to Creating your First Flutter App</title>
      <link>https://www.blunix.com/blog/building-your-first-flutter-app-a-step-by-step-guide-to-creating-a-unit-converter.html</link>
      <pubDate>Sat, 06 Apr 2024 00:00:00 &#43;0000</pubDate>
      <guid>https://www.blunix.com/blog/building-your-first-flutter-app-a-step-by-step-guide-to-creating-a-unit-converter.html</guid>
      <description>&lt;p&gt;Please &lt;a href=&#34;https://www.blunix.com/#contact&#34; title=&#34;Blunix GmbH contact options&#34;&gt;contact us&lt;/a&gt;
 if anything is not clearly described, does not work, seems incorrect or if you require support.&lt;/p&gt;
&lt;h2 id=&#34;table-of-contents&#34;&gt;Table of contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#step1&#34;&gt;Step 1: Creating the new project&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#step2&#34;&gt;Step 2: Defining the unit data type&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#step3&#34;&gt;Step 3: Defining units&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#step4&#34;&gt;Step 4: Begin building the GUI&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#step5&#34;&gt;Step 5: create the drop-down for selecting the units to convert between&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#step6&#34;&gt;Step 6: create text-field for inputting the unit quantities&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#step7&#34;&gt;Step 7: putting everything together&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Embarking on the journey to build your first Flutter app can be an exciting yet daunting task. Flutter, with its multiplatform support, fast development times, and the hot reload feature, stands out as a powerful toolkit for app development. However, the initial learning curve can seem steep for beginners. This guide aims to simplify the process, guiding you through crafting a unit converter app.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Gitlab upgrade signature invalid EXPKEYSIG 3F01618A51312F3F</title>
      <link>https://www.blunix.com/blog/gitlab-upgrade-error-the-following-signatures-were-invalid-EXPKEYSIG-3F01618A51312F3F.html</link>
      <pubDate>Wed, 27 Mar 2024 00:00:00 &#43;0000</pubDate>
      <guid>https://www.blunix.com/blog/gitlab-upgrade-error-the-following-signatures-were-invalid-EXPKEYSIG-3F01618A51312F3F.html</guid>
      <description>&lt;p&gt;Please &lt;a href=&#34;https://www.blunix.com/#contact&#34; title=&#34;Blunix GmbH contact options&#34;&gt;contact us&lt;/a&gt;
 if anything is not clearly described, does not work, seems incorrect or if you require support.&lt;/p&gt;
&lt;h2 id=&#34;table-of-contents&#34;&gt;Table of contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#problem&#34;&gt;The Problem: Expired apt-key Signature Problem while Upgrading Gitlab&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#explanation&#34;&gt;The Problems Explanation: Why APT Keys Expire&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#solution&#34;&gt;The Solution to the Problem: Updating the Archive Keyring with the New GPG Key&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;problem&#34;&gt;&lt;a href=&#34;#problem&#34;&gt;The Problem: Expired apt-key Signature Problem while Upgrading Gitlab&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;We encountered the following error message while upgrading our Gitlab server git.blunix.com:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Open Source Centralized Logging Server for Linux</title>
      <link>https://www.blunix.com/blog/centralized-logging-server-on-linux-with-systemd-journal-remote.html</link>
      <pubDate>Sun, 24 Mar 2024 00:00:00 &#43;0000</pubDate>
      <guid>https://www.blunix.com/blog/centralized-logging-server-on-linux-with-systemd-journal-remote.html</guid>
      <description>&lt;p&gt;Please &lt;a href=&#34;https://www.blunix.com/#contact&#34; title=&#34;Blunix GmbH contact options&#34;&gt;contact us&lt;/a&gt;
 if anything is not clearly described, does not work, seems incorrect or if you require support.&lt;/p&gt;
&lt;p&gt;This blogpost describes how to install and configure systemd-journal-remote to stream logs of up to hundrets of client servers to a central log aggregation machine. It was designed to be easy to follow for Linux administrators with little Linux experience. All commands and configuration files required to setup this service are explained in detail and can be copy-pasted. It was written for and tested with Debian 13 and Ubuntu 24.04, but should work with any other Linux Distribution that is using systemd.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SMTP Email Relay for Debian Linux Servers with OpenSMTPD</title>
      <link>https://www.blunix.com/blog/secure-smtp-email-relay-on-debian-and-ubuntu-with-opensmtpd-instead-of-postfix.html</link>
      <pubDate>Fri, 08 Mar 2024 00:00:00 &#43;0000</pubDate>
      <guid>https://www.blunix.com/blog/secure-smtp-email-relay-on-debian-and-ubuntu-with-opensmtpd-instead-of-postfix.html</guid>
      <description>&lt;p&gt;Please &lt;a href=&#34;https://www.blunix.com/#contact&#34; title=&#34;Blunix GmbH contact options&#34;&gt;contact us&lt;/a&gt;
 if anything is not clearly described, does not work, seems incorrect or if you require support.&lt;/p&gt;
&lt;p&gt;This tutorial describes how to setup a secure SMTP Mail Relay on Debian or Ubuntu Servers with &lt;a href=&#34;https://www.opensmtpd.org/&#34;&gt;OpenSMTPD&lt;/a&gt;
 instead of &lt;a href=&#34;https://www.postfix.org/&#34;&gt;Postfix&lt;/a&gt;
 for relaying Emails from (Web) applications to Email providers like &lt;a href=&#34;https://workspace.google.com/products/gmail/&#34;&gt;Google Workspace or Gmail&lt;/a&gt;
, &lt;a href=&#34;https://www.microsoft.com/en-us/microsoft-365/outlook/outlook-for-business&#34;&gt;Microsoft Outlook or Office 365&lt;/a&gt;
, &lt;a href=&#34;https://www.zoho.com/mail/&#34;&gt;ZOHO Mail&lt;/a&gt;
, &lt;a href=&#34;https://aws.amazon.com/workmail/&#34;&gt;Amazon Workmail (AWS)&lt;/a&gt;
 and others.&lt;/p&gt;
&lt;p&gt;The commands in this blogpost are tested with Debian 12 and Ubuntu 22.04 and should work with all other Debian based distributions and all other Linux distributions that provide a opensmtpd package. All configuration files are explained in detail. You are provided copy-pastable examples, all you need to adjust are your sending email addresses and SMTP credentials.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ultimate guide to a performant and secure Nextcloud Server</title>
      <link>https://www.blunix.com/blog/howto-install-nextcloud-on-ubuntu-2204-with-hetzner.html</link>
      <pubDate>Sun, 25 Feb 2024 00:00:00 &#43;0000</pubDate>
      <guid>https://www.blunix.com/blog/howto-install-nextcloud-on-ubuntu-2204-with-hetzner.html</guid>
      <description>&lt;p&gt;Please &lt;a href=&#34;https://www.blunix.com/#contact&#34; title=&#34;Blunix GmbH contact options&#34;&gt;contact us&lt;/a&gt;
 if anything is not clearly described, does not work, seems incorrect or if you require support.&lt;/p&gt;
&lt;p&gt;This blogpost is designed to show in copy-pastable commands how to setup, manage and maintain a Nextcloud installation on a Hetzner dedicated or cloud server running Ubuntu 22.04 LTS. This Blog post is written for readers with little technical Linux knowledge, allowing you to setup of a secure and performant Nextcloud installation on your own inexpensive server easy and fast.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Automatically mirror Gitlab repositories to Github</title>
      <link>https://www.blunix.com/blog/howto-automatically-mirror-gitlab-repositories-to-github.html</link>
      <pubDate>Fri, 16 Feb 2024 00:00:00 &#43;0000</pubDate>
      <guid>https://www.blunix.com/blog/howto-automatically-mirror-gitlab-repositories-to-github.html</guid>
      <description>&lt;p&gt;Please &lt;a href=&#34;https://www.blunix.com/#contact&#34; title=&#34;Blunix GmbH contact options&#34;&gt;contact us&lt;/a&gt;
 if anything is not clearly described, does not work, seems incorrect or if you require support.&lt;/p&gt;
&lt;h2 id=&#34;table-of-contents&#34;&gt;Table of contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#gitlab-mirror-to-github-error&#34;&gt;The Problem with mirroring from Gitlab to Github&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#installing-glab-cli&#34;&gt;Installing the Gitlab CLI glab&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#installing-gh-cli&#34;&gt;Installing the Github CLI gh&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#mirror-script&#34;&gt;Setting up the Gitlab to Github mirror script&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;gitlab-mirror-to-github-error&#34;&gt;&lt;a href=&#34;#gitlab-mirror-to-github-error&#34;&gt;The Problem with mirroring from Gitlab to Github&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;We want to mirror some of our public Gitlab repositories to github for better visibility. There is a gitlab function available for that at Settings -&amp;gt; Repository -&amp;gt; Repository mirroring, which is &lt;a href=&#34;https://gitlab.com/gitlab-org/cli/-/blob/main/docs/source/repo/mirror.md&#34;&gt;documented here&lt;/a&gt;
, but sadly it gives this error when used with github:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Howto setup borgbackup2 on Debian12 on Hetzner Cloud Servers</title>
      <link>https://www.blunix.com/blog/howto-setup-borgbackup2-on-hetzner-cloud.html</link>
      <pubDate>Mon, 12 Feb 2024 00:00:00 &#43;0000</pubDate>
      <guid>https://www.blunix.com/blog/howto-setup-borgbackup2-on-hetzner-cloud.html</guid>
      <description>&lt;p&gt;Please &lt;a href=&#34;https://www.blunix.com/#contact&#34; title=&#34;Blunix GmbH contact options&#34;&gt;contact us&lt;/a&gt;
 if anything is not clearly described, does not work, seems incorrect or if you require support.&lt;/p&gt;
&lt;h2 id=&#34;table-of-contents&#34;&gt;Table of contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#creating-servers&#34;&gt;1. Creating the Cloud Servers on Hetzner&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#creating-servers-using-webui&#34;&gt;1.1 Creating the Servers using the Hetzner Cloud WebUI&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#creating-servers-ressource-requirements&#34;&gt;1.2 Choosing CPU and RAM ressources for the borgbackup2 servers and clients&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#creating-servers-add-ssh-public-key&#34;&gt;1.3 Add SSH public key for passwordless secure authentication&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#creating-servers-number-and-names&#34;&gt;1.5 Specify number of servers and hostnames&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#creating-servers-add-volume&#34;&gt;1.4 Add storage volume to backup server&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#first-ssh-connection-check&#34;&gt;1.6 Checking if the servers are reachable via SSH&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#installing-exemplary-services&#34;&gt;1.7 Installing example services like Nginx, Mariadb and Gitlab&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#setup-borgbackup2-server&#34;&gt;2. Installing and configuring the borgbackup2 server components&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#server-preperations&#34;&gt;2.1 Preperations for the backup server&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#server-installation&#34;&gt;2.2 Installing borgbackup2 server with apt&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#server-configuration&#34;&gt;2.3 Configuring the borgbackup2 server&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#setup-borgbackup2-clients&#34;&gt;3. Installing and configuring the borgbackup2 client servers&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#clients-preperations&#34;&gt;3.1 Preperations for the backup clients&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#clients-installation&#34;&gt;3.2 Installing borgbackup2 client with apt&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#clients-configuration&#34;&gt;3.3 Configuring the borgbackup2 clients&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#clients-backup-script&#34;&gt;3.4 Creating a BASH script and cronjob to automatically create borg backups&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#connect-borgbackup2-clients-with-server&#34;&gt;4. Connecting the borgbackup2 clients to the server&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#connect-ssh-keys&#34;&gt;4.1 Copying the clients SSH public keys to the server&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#connect-test&#34;&gt;4.2 Testing the backup and restore functionality&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;creating-servers&#34;&gt;&lt;a href=&#34;#creating-servers&#34;&gt;1. Creating the Cloud Servers on Hetzner&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;This blogpost describes how to setup borgbackup2 on Debian Linux 12 with the German IaaS provider &lt;a href=&#34;https://www.hetzner.com/cloud/&#34;&gt;hetzner.com/cloud/&lt;/a&gt;
. It is designed to setup a working borgbackup system on up to around 50-100 servers depending on your workstations internet connection.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Howto Setup armbian on Orange PI 5 Plus with SPI and i2c Interfaces</title>
      <link>https://www.blunix.com/blog/howto-setup-armbian-on-orange-pi-5-plus-with-spi-and-i2c.html</link>
      <pubDate>Thu, 01 Feb 2024 00:00:00 &#43;0000</pubDate>
      <guid>https://www.blunix.com/blog/howto-setup-armbian-on-orange-pi-5-plus-with-spi-and-i2c.html</guid>
      <description>&lt;p&gt;Please &lt;a href=&#34;https://www.blunix.com/#contact&#34; title=&#34;Blunix GmbH contact options&#34;&gt;contact us&lt;/a&gt;
 if anything is not clearly described, does not work, seems incorrect or if you require support.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IMPORTANT SECURITY NOTICE!&lt;/strong&gt; The website orangepi.org does not provide httpS. This means that all traffic from your computer to this website is not encrypted and can potentially be manipulated by a &lt;a href=&#34;https://en.wikipedia.org/wiki/Man-in-the-middle_attack&#34;&gt;man in the middle attack&lt;/a&gt;
 . This blogpost contains multiple links to this website.&lt;/p&gt;
&lt;h3 id=&#34;introduction&#34;&gt;&lt;a href=&#34;#introduction&#34;&gt;Introduction&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;The &lt;a href=&#34;http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-5-plus.html&#34;&gt;Orange PI 5 Plus&lt;/a&gt;
 is a faster and stronger competitor to the Raspberry PI 5 - it has more ressources and ports with up to 32 GB RAM, an the octa core ARM CPU Rockchip RK3588, up to 256 GB eMMC storage and two 2.5G ethernet ports it overpowers the Raspberry Pi 5s performance with ease. The downside in comparison to the Raspberry Pi 5 is that it has much less public content, from forum questions and answers to blog posts, online chat rooms and github libraries and tools. It is hence a bit for advanced users. The &lt;a href=&#34;https://orangepi.dev/downloads/orangepi-5-plus/&#34;&gt;operating system provided by the company Orange Pi&lt;/a&gt;
, which to our pleasure can be downloaded with httpS, is based on arch Linux and we did not investigate it further. For a Debian Linux based solution we chose &lt;a href=&#34;https://www.armbian.com/&#34;&gt;armbian&lt;/a&gt;
.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Interesting and common SSH commands, tips, tricks and hacks</title>
      <link>https://www.blunix.com/blog/interesting-things-to-do-with-ssh.html</link>
      <pubDate>Wed, 24 Jan 2024 00:00:00 &#43;0000</pubDate>
      <guid>https://www.blunix.com/blog/interesting-things-to-do-with-ssh.html</guid>
      <description>&lt;p&gt;Please &lt;a href=&#34;https://www.blunix.com/#contact&#34; title=&#34;Blunix GmbH contact options&#34;&gt;contact us&lt;/a&gt;
 if anything is not clearly described, does not work, seems incorrect or if you require support.&lt;/p&gt;
&lt;h2 id=&#34;table-of-contents&#34;&gt;Table of contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#l&#34;&gt;Access a private network servers port by jumphosting via publicly reachable server: ssh -L&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#r&#34;&gt;Forward a remote servers port to your local machines port: ssh -R&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#dd&#34;&gt;Take a disk dump (dd .img) from a remote host and save it to your workstation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#luks&#34;&gt;Decrypting a remote luks encrypted disks without saving the keyfile in the remote servers filesystem&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#sshfs&#34;&gt;Sharing directories using the SSHFS network filesystem&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#pipe-script&#34;&gt;Executing a shell script without uploading it to the remote servers filesystem&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;l&#34;&gt;&lt;a href=&#34;#l&#34;&gt;Access a private network servers port by jumphosting via publicly reachable server: ssh -L&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;The argument -L for the ssh command allows for forwarding remote ports to the local workstation.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Howto fix the Gitlab upgrade Error PG::DuplicateColumn: ERROR: column &#34;encrypted_token&#34; of relation &#34;chat_names&#34; already exists</title>
      <link>https://www.blunix.com/blog/gitlab-error-duplicatecolumn-encrypted-token-chat-names-exists.html</link>
      <pubDate>Mon, 22 Jan 2024 00:00:00 &#43;0000</pubDate>
      <guid>https://www.blunix.com/blog/gitlab-error-duplicatecolumn-encrypted-token-chat-names-exists.html</guid>
      <description>&lt;p&gt;Please &lt;a href=&#34;https://www.blunix.com/#contact&#34; title=&#34;Blunix GmbH contact options&#34;&gt;contact us&lt;/a&gt;
 if anything is not clearly described, does not work, seems incorrect or if you require support.&lt;/p&gt;
&lt;p&gt;While upgrading from the apt installed omnibus gitlab Version 16.6.4-ce.0 on Debian 12, I encountered the following error message:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-plaintext&#34;&gt;PG::DuplicateColumn: ERROR:  column &amp;#34;encrypted_token&amp;#34; of relation &amp;#34;chat_names&amp;#34; already exists&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note that even though the apt upgrade failed, apt is displaying the target version to be installed already:&lt;/p&gt;
&lt;pre class=&#34;command-line language-bash&#34; data-output=&#34;2-99&#34; data-continuation-str=&#34;\&#34; data-user=&#34;root&#34; data-host=&#34;git.blunix.com&#34;&gt;
&lt;code class=&#34;language-bash&#34;&gt;apt-cache policy gitlab-ce|head
gitlab-ce:
  Installed: 16.7.2-ce.0
  Candidate: 16.7.2-ce.0
  Version table:
 *** 16.7.2-ce.0 500
        500 https://packages.gitlab.com/gitlab/gitlab-ce/debian buster/main amd64 Packages
        100 /var/lib/dpkg/status
     16.7.0-ce.0 500
        500 https://packages.gitlab.com/gitlab/gitlab-ce/debian buster/main amd64 Packages
[...]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The following postgresql will adjust the column name as required:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Howto fix Gitlab Upgrade Error: PG::UndefinedObject: ERROR: constraint &#34;fk_262d4c2d19&#34; for table &#34;ci_pipelines&#34; does not exist</title>
      <link>https://www.blunix.com/blog/gitlab-upgrade-error-pg-undefinedobject-ERROR-constraint-fk-262d4c2d19-for-table-ci-pipelines-does-not-exist.html</link>
      <pubDate>Mon, 22 Jan 2024 00:00:00 &#43;0000</pubDate>
      <guid>https://www.blunix.com/blog/gitlab-upgrade-error-pg-undefinedobject-ERROR-constraint-fk-262d4c2d19-for-table-ci-pipelines-does-not-exist.html</guid>
      <description>&lt;p&gt;Please &lt;a href=&#34;https://www.blunix.com/#contact&#34; title=&#34;Blunix GmbH contact options&#34;&gt;contact us&lt;/a&gt;
 if anything is not clearly described, does not work, seems incorrect or if you require support.&lt;/p&gt;
&lt;p&gt;While upgrading from the apt installed omnibus gitlab Version 16.6.0-ce.0 on Debian 12, I encountered the following error message:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-plaintext&#34;&gt;PG::UndefinedObject: ERROR:  constraint &amp;#34;fk_262d4c2d19&amp;#34; for table &amp;#34;ci_pipelines&amp;#34; does not exist&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The following SQL query displays all present postgresql constraints:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-plaintext&#34;&gt;root@gitlab.server ~ # gitlab-psql
gitlabhq_production=# SELECT con.*
       FROM pg_catalog.pg_constraint con
            INNER JOIN pg_catalog.pg_class rel
                       ON rel.oid = con.conrelid
            INNER JOIN pg_catalog.pg_namespace nsp
                       ON nsp.oid = connamespace
       WHERE nsp.nspname = &amp;#39;public&amp;#39;
             AND rel.relname = &amp;#39;ci_pipelines&amp;#39;;


  oid  |      conname      | connamespace | contype | condeferrable | condeferred | convalidated | conrelid | contypid | conindid | conparentid | confrelid | confupdtype | confdeltype | confmatchtype | conislocal | coninhcount | connoinheirt | conkey | confkey | conpfeqop | conppeqop | conffeqop | conexclop | conbin
-------&amp;#43;-------------------&amp;#43;--------------&amp;#43;---------&amp;#43;---------------&amp;#43;-------------&amp;#43;--------------&amp;#43;----------&amp;#43;----------&amp;#43;----------&amp;#43;-------------&amp;#43;-----------&amp;#43;-------------&amp;#43;-------------&amp;#43;---------------&amp;#43;------------&amp;#43;-------------&amp;#43;-----------
---&amp;#43;--------&amp;#43;---------&amp;#43;-----------&amp;#43;-----------&amp;#43;-----------&amp;#43;-----------&amp;#43;--------
 80430 | fk_190998ef09     |         2200 | f       | f             | f           | t            |    66450 |        0 |    75938 |           0 |     67466 | a           | n           | s             | t          |           0 | t           | {27}   | {1}     | {410}     | {410}     | {410}     |           |

 75711 | ci_pipelines_pkey |         2200 | p       | f             | f           | t            |    66450 |        0 |    75710 |           0 |         0 |             |             |               | t          |           0 | t           | {1}    |         |           |           |           |           |

 80714 | fk_3d34ab2e06     |         2200 | f       | f             | f           | t            |    66450 |        0 |    75704 |           0 |     66430 | a           | n           | s             | t          |           0 | t            | {18}   | {1}     | {96}      | {96}      | {96}      |           |

 80977 | fk_67e4288f3a     |         2200 | f       | f             | f           | t            |    66450 |        0 |    75710 |           0 |     66450 | a           | n           | s             | t          |           0 | t            | {32}   | {1}     | {15}      | {96}      | {410}     |           |

 81675 | fk_c262d728d4     |         2200 | f       | f             | f           | t            |    66450 |        0 |    75710 |           0 |     66450 | a           | n           | s             | t          |           0 | t            | {17}   | {1}     | {96}      | {96}      | {96}      |           |

 81870 | fk_d80e161c54     |         2200 | f       | f             | f           | t            |    66450 |        0 |    75718 |           0 |     66491 | a           | n           | s             | t          |           0 | t           | {28}   | {1}     | {410}     | {410}     | {410}     |           |

(6 rows)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This &lt;a href=&#34;https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/8315&#34; title=&#34;GitLab Issue 8315&#34;&gt;Github issue for gitlab&lt;/a&gt;
 hints to the solution:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Blog Post About How To use German Umlauts on US Layout Keyboards</title>
      <link>https://www.blunix.com/blog/using-german-umlauts-on-us-layout-keyboards.html</link>
      <pubDate>Wed, 29 Mar 2023 00:00:00 &#43;0000</pubDate>
      <guid>https://www.blunix.com/blog/using-german-umlauts-on-us-layout-keyboards.html</guid>
      <description>&lt;p&gt;Please &lt;a href=&#34;https://www.blunix.com/#contact&#34; title=&#34;Blunix GmbH contact options&#34;&gt;contact us&lt;/a&gt;
 if anything is not clearly described, does not work, seems incorrect or if you require support.&lt;/p&gt;
&lt;p&gt;This post was revived for nostalgy and SEO purposes. It is still up to date though and works on most modern Debian based Linux distributions. The original version can be found on &lt;a href=&#34;https://web.archive.org/web/20150324043206/http://www.blunix.org/using-german-umlauts-on-us-layout-keyboards/&#34;&gt;archive.org&lt;/a&gt;
.&lt;/p&gt;
&lt;h2 id=&#34;table-of-contents&#34;&gt;Table of contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#xmodmap&#34;&gt;Creating a ~/&amp;gt;Xmodmap file&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#iso-latin1-table&#34;&gt;ISO-Latin1 table&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;xmodmap&#34;&gt;&lt;a href=&#34;#xmodmap&#34;&gt;Creating a ~/.Xmodmap file&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;In order to map key combinations to specific special characters you have to create a .Xmodmap file within your users home directory. First we have to find out what the keycodes of the keys you want to map are. For this enter &amp;ldquo;xev” and press the appropriate key. You will get an output like this:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Howto use the Hetzner Backup Space with rsync</title>
      <link>https://www.blunix.com/blog/howto-use-hetzner-backup-space-with-rsync.html</link>
      <pubDate>Wed, 26 Nov 2014 00:00:00 &#43;0000</pubDate>
      <guid>https://www.blunix.com/blog/howto-use-hetzner-backup-space-with-rsync.html</guid>
      <description>&lt;p&gt;Please &lt;a href=&#34;https://www.blunix.com/#contact&#34; title=&#34;Blunix GmbH contact options&#34;&gt;contact us&lt;/a&gt;
 if anything is not clearly described, does not work, seems incorrect or if you require support.&lt;/p&gt;
&lt;p&gt;This post was revived for nostalgy and SEO purposes. It might be outdated. The original version can be found on &lt;a href=&#34;https://web.archive.org/web/20150904035115/https://www.blunix.org/howto-use-hetzner-backup-space-with-rsync/&#34;&gt;archive.org&lt;/a&gt;
.&lt;/p&gt;
&lt;h2 id=&#34;table-of-contents&#34;&gt;Table of contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#problem&#34;&gt;The problem&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#solution&#34;&gt;The solution&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#solution-sshfs&#34;&gt;Automatic sshfs for hetzner backup space&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#solution-dd&#34;&gt;Create a dd image for the actual backups&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#solution-mount&#34;&gt;Automatically mounting the backup space and the image&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#encrypted&#34;&gt;3. Storing backups encrypted&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#info&#34;&gt;4. Additional information&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;problem&#34;&gt;&lt;a href=&#34;#problem&#34;&gt;1. The Problem&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&#34;https://www.hetzner.com/storage/storage-box&#34;&gt;www.hetzner.de Backup Space&lt;/a&gt;
 does not allow for rsync to change the linux uids. It however is often desirable to keep those file informations when doing backups. Rsync will print the following error when trying to copy files to the hetzner backup space mounted when via sshfs:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Blogposts from Blunix early days (2012-2014) on archive.org</title>
      <link>https://www.blunix.com/blog/blogposts-from-blunix-early-days-on-archive-org.html</link>
      <pubDate>Sun, 01 Jan 2012 00:00:00 &#43;0000</pubDate>
      <guid>https://www.blunix.com/blog/blogposts-from-blunix-early-days-on-archive-org.html</guid>
      <description></description>
    </item>
  </channel>
</rss>
