<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>DevOps Tips &amp; Articles on Martin Koníček | IT Strategie a Architektura</title>
    <link>https://www.martinkonicek.eu/archive/</link>
    <description>Recent content in DevOps Tips &amp; Articles on Martin Koníček | IT Strategie a Architektura</description>
    <generator>Hugo</generator>
    <language>cs</language>
    <lastBuildDate>Sat, 04 Apr 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://www.martinkonicek.eu/archive/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>OpenClaw on Proxmox: Why You Should Never Trust Open-Source Scripts Blindly</title>
      <link>https://www.martinkonicek.eu/archive/openclaw-proxmox-security/</link>
      <pubDate>Sat, 04 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/openclaw-proxmox-security/</guid>
      <description>&lt;p&gt;I run a homelab on Proxmox. When I came across &lt;a href=&#34;https://github.com/adadrag/Openclaw-Proxmox&#34; target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;OpenClaw&lt;/a&gt; — an automated LXC setup script for a browser automation gateway — I wanted to get it running quickly. I pulled the script, ran it, and had a working container in minutes. Convenient. Also a security disaster waiting to happen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Managing Kubernetes from Neovim: Installing kubectl.nvim on Ubuntu 24</title>
      <link>https://www.martinkonicek.eu/archive/neovim-kubectl/</link>
      <pubDate>Wed, 25 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/neovim-kubectl/</guid>
      <description>&lt;p&gt;kubectl.nvim is a Neovim plugin that lets you browse and manage Kubernetes clusters directly from your editor — without leaving your coding environment. This guide covers a complete setup from scratch on Ubuntu 24, including Neovim, lazy.nvim as the plugin manager, and kubectl.nvim itself with true color support.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Git-Crypt: Secure Secrets in Git Repos</title>
      <link>https://www.martinkonicek.eu/archive/git-crypt/</link>
      <pubDate>Mon, 09 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/git-crypt/</guid>
      <description>&lt;p&gt;Git-crypt provides transparent encryption for sensitive files within Git repositories, allowing teams to store secrets like API keys alongside public code without exposing them.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Resetting asciinema with Scroll Stacking</title>
      <link>https://www.martinkonicek.eu/archive/asciinema/</link>
      <pubDate>Sat, 10 Jan 2026 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/asciinema/</guid>
      <description>&lt;p&gt;Your asciinema recording looks broken: newlines don&amp;rsquo;t work, old text gets overwritten, or the screen fills with garbage. This simple tutorial shows how to &lt;strong&gt;reset&lt;/strong&gt; the terminal screen mid-recording using scroll stacking. Fix messy casts without starting over - just edit the file!&lt;/p&gt;</description>
    </item>
    <item>
      <title>LVM2 Setup Tutorial for Ubuntu on Raspberry Pi</title>
      <link>https://www.martinkonicek.eu/archive/ubuntu-rpi-lvm/</link>
      <pubDate>Fri, 09 Jan 2026 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/ubuntu-rpi-lvm/</guid>
      <description>&lt;p&gt;This tutorial details enabling LVM2 on Ubuntu for Raspberry Pi. &lt;strong&gt;Ubuntu kernels for Raspberry Pi include LVM2 drivers natively&lt;/strong&gt;, so no kernel recompilation  or creation of initrd initramfs needed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Disabling Auto Leveling on Creality Ender 3 S1 Pro with PrusaSlicer and OctoPrint</title>
      <link>https://www.martinkonicek.eu/archive/prusaslice-autoleveling/</link>
      <pubDate>Sun, 04 Jan 2026 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/prusaslice-autoleveling/</guid>
      <description>&lt;p&gt;This tutorial provides step-by-step instructions to disable auto bed leveling (G29 commands) on the Creality Ender 3 S1 Pro when using PrusaSlicer with OctoPrint integration. Newer versions of PrusaSlicer automatically insert G29 commands into the start G-code for printers with bed leveling capabilities, which can cause unwanted auto leveling cycles during prints. By switching to Expert mode and editing the Custom G-code in printer settings, you can remove these commands entirely while maintaining compatibility with OctoPrint for seamless print uploads and monitoring.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Forward MySQL Port 3306 from Ubuntu Host to LXD/LXC Container</title>
      <link>https://www.martinkonicek.eu/archive/mysql-lxc/</link>
      <pubDate>Thu, 01 Jan 2026 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/mysql-lxc/</guid>
      <description>&lt;p&gt;Learn step-by-step how to expose your MySQL server running inside an LXD/LXC container on Ubuntu by creating a dedicated profile with a proxy device. This setup forwards traffic from the host&amp;rsquo;s port 3306 to the container&amp;rsquo;s MySQL instance, making it accessible externally without direct network bridging. Ideal for secure, isolated database hosting on any Ubuntu system.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Running OctoPrint in Docker on Raspberry Pi with auto‑start via udev</title>
      <link>https://www.martinkonicek.eu/archive/octoprint/</link>
      <pubDate>Sat, 13 Dec 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/octoprint/</guid>
      <description>&lt;p&gt;Use Docker and Docker Compose on Raspberry Pi to run OctoPrint in a container and automatically start it when your Creality Ender 3 Pro USB serial adapter appears.&lt;/p&gt;</description>
    </item>
    <item>
      <title>5V UPS Solutions for Raspberry Pi in 2025: Beyond UPS HATs to Power Stations</title>
      <link>https://www.martinkonicek.eu/archive/5vups/</link>
      <pubDate>Sat, 15 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/5vups/</guid>
      <description>&lt;p&gt;As Raspberry Pi projects grow more complex and critical, reliable backup power solutions are essential. While UPS HATs have been popular for seamless power backup, their limited capacity often falls short for demanding or long-duration setups. In 2025, new trends favor compact power stations, 12V mini-UPS systems, and advanced DIY battery solutions — providing longer runtimes, better efficiency, and enhanced monitoring for your Raspberry Pi ecosystem.&lt;/p&gt;&#xA;&lt;!-- more --&gt;&#xA;&lt;p&gt;5V UPS Solutions for Raspberry Pi: New Trends and Recommendations in 2025&lt;/p&gt;</description>
    </item>
    <item>
      <title>AD Converter PCF8591 for Raspberry Pi</title>
      <link>https://www.martinkonicek.eu/archive/adconverter/</link>
      <pubDate>Sat, 15 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/adconverter/</guid>
      <description>&lt;p&gt;Have you ever wondered how to measure battery voltage with a Raspberry Pi? The PCF8591 ADC (Analog-to-Digital Converter) module, which can be purchased for as little as 2 USD, provides a simple solution for measuring analog voltages via I2C on your Raspberry Pi. This tutorial explains how it works, how to deal with higher voltages like those from a lead-acid battery, and how to calibrate the setup to get accurate readings.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Enabling Low-Range NodePorts Below 1024 in MicroK8s for Traefik Ingress</title>
      <link>https://www.martinkonicek.eu/archive/microk8s-nodeport/</link>
      <pubDate>Sat, 15 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/microk8s-nodeport/</guid>
      <description>&lt;p&gt;Discover how to configure MicroK8s to use NodePorts below 1024, a key step for setting up efficient ingress controllers like Traefik. This guide simplifies the process, ensuring a seamless integration of lower NodePorts in your Kubernetes environment.&lt;/p&gt;</description>
    </item>
    <item>
      <title>HyperV VM Backup Workflow: Automated Disaster Recovery to AWS S3</title>
      <link>https://www.martinkonicek.eu/archive/hyperv/</link>
      <pubDate>Sat, 15 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/hyperv/</guid>
      <description>&lt;p&gt;Recently, I ran into challenges backing up my MicroK8S cluster hosted on HyperV (essentially, my desktop workstation). While searching for backup tools for Windows, I found that most consumer-grade solutions—including Ashampoo Backup—are lacking, particularly for robust S3 support.&lt;/p&gt;</description>
    </item>
    <item>
      <title>OpenVPN Config Generator: Simplify Your VPN Setup with Static IPs and Automated Key Management</title>
      <link>https://www.martinkonicek.eu/archive/openvpn/</link>
      <pubDate>Sat, 15 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/openvpn/</guid>
      <description>&lt;p&gt;Configuring OpenVPN can often be a tedious task, especially when managing multiple clients with varying network settings. The OpenVPN Config Generator project offers a streamlined solution that automates key generation, static IP assignments, and configuration management to create your own private VPN LAN effortlessly.&lt;/p&gt;&#xA;&lt;!-- more --&gt;&#xA;&lt;p&gt;Simple configuration generator for OpenVPN which supports &lt;code&gt;static IPs, udp/tcp&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/koss822/misc/tree/master/Linux/Projects/openvpn/conf_generator&#34; target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;GitHub Project&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;about-project&#34; class=&#34;relative group&#34;&gt;About project &lt;span class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100&#34;&gt;&lt;a class=&#34;group-hover:text-primary-300 dark:group-hover:text-neutral-700&#34; style=&#34;text-decoration-line: none !important;&#34; href=&#34;#about-project&#34; aria-label=&#34;Kotva&#34;&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;This config generator is type of a tool I was always looking for. Actually you do not have to type some command to generate every simple config and you have all clients configurations in one config file - YAML. Every time you run a config generator it looks to YAML for a new config entries and generates only them. It automatically generates all certificates, not just client, but also CA authority, server keys, etc.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SOPS Git Hooks for Kubernetes Secrets Management</title>
      <link>https://www.martinkonicek.eu/archive/sops/</link>
      <pubDate>Sat, 15 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/sops/</guid>
      <description>&lt;p&gt;I decided to build a Git-based tool to manage Kubernetes secrets more efficiently. The whole idea was to automatically encrypt password and value fields in my Kubernetes YAML and Helm files before committing them into Git, and decrypt them effortlessly when checking out.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setting Up Custom SSL Authority for HTTPS on Nexus Sonatype</title>
      <link>https://www.martinkonicek.eu/archive/nexus-ssl/</link>
      <pubDate>Thu, 13 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/nexus-ssl/</guid>
      <description>&lt;p&gt;Configuring Nexus Sonatype to serve HTTPS traffic using a custom SSL certificate involves replacing the default Jetty configuration and keystore with your own. This allows you to use a certificate signed by your internal Certificate Authority (CA), improving security and trust within your network environment.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Configuring Sonatype Nexus as a DockerHub Proxy for MicroK8s: Safeguard Your Container Workflow</title>
      <link>https://www.martinkonicek.eu/archive/nexus-microk8s/</link>
      <pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/nexus-microk8s/</guid>
      <description>&lt;p&gt;In the rapidly shifting landscape of container images, relying solely on DockerHub for your Kubernetes workflows exposes you to supply chain interruptions and image unavailability. Notably, the unpublishing of Bitnami images by Broadcom left many DevOps teams scrambling for alternatives and showcased the risks of relying on external registries. This guide walks you through configuring Sonatype Nexus as a DockerHub proxy for MicroK8s, ensuring your critical images remain available and under your own control.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cleaning the containerd OverlayFS Directory in MicroK8s</title>
      <link>https://www.martinkonicek.eu/archive/microk8s-containerd-cleanup/</link>
      <pubDate>Tue, 04 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/microk8s-containerd-cleanup/</guid>
      <description>&lt;p&gt;Reclaiming disk space by safely resetting the containerd snapshotter storage without losing your Kubernetes configuration.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Troubleshooting Random Vim Help Pop-ups Caused by Nosleep Utilities</title>
      <link>https://www.martinkonicek.eu/archive/vim-help/</link>
      <pubDate>Mon, 03 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/vim-help/</guid>
      <description>&lt;p&gt;When using Vim inside a terminal emulator like PuTTY, users sometimes encounter the issue where the Vim help window randomly opens without user input. This problem is commonly caused by utilities designed to prevent the computer from sleeping or going idle—often called nosleep applications. These utilities send keystrokes such as Scroll Lock or Shift at intervals, which PuTTY configured with the terminal type &amp;ldquo;xterm&amp;rdquo; interprets incorrectly as the F1 key. Since F1 triggers the Vim help, the help window appears unexpectedly.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Running Raspberry Pi OS on QEMU x64: Emulating a Pi on Your Ubuntu PC</title>
      <link>https://www.martinkonicek.eu/archive/rpi-qemu/</link>
      <pubDate>Fri, 31 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/rpi-qemu/</guid>
      <description>&lt;p&gt;Running Raspberry Pi OS inside QEMU is a convenient way to test configurations or perform lightweight development without real hardware. However, the process can appear stalled during boot, especially when emulating ARM on x86_64. Here’s a step-by-step guide based on what worked for me when running Raspberry Pi OS under QEMU on an Ubuntu 24 system inside Hyper-V.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing RJ45 Wall Sockets into a Kopos 110 mm Cable Duct</title>
      <link>https://www.martinkonicek.eu/archive/kopos-sockets/</link>
      <pubDate>Sun, 19 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/kopos-sockets/</guid>
      <description>&lt;p&gt;When you want to integrate &lt;em&gt;data outlets&lt;/em&gt; neatly into a trunking system, the combination of &lt;strong&gt;Kopos ducts&lt;/strong&gt; and &lt;strong&gt;ABB Zoni&lt;/strong&gt; components offers a professional and visually clean solution. This guide explains how to mount an RJ45 outlet into a 110 mm Kopos cable duct using specific parts from K&amp;amp;V Elektro and provides practical installation tips.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Monitoring and Automatic Restart of Services with systemd: Liveness and Readiness Probes</title>
      <link>https://www.martinkonicek.eu/archive/systemd-liveness/</link>
      <pubDate>Sun, 12 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/systemd-liveness/</guid>
      <description>&lt;p&gt;Maintaining the reliability of critical services often requires continuous monitoring of their health and automatic recovery in case of failures. While Kubernetes offers built-in liveness and readiness probes for containerized applications, Linux system administrators can implement similar health checks and automated restarts for services managed by systemd. This article explores practical ways to perform health monitoring using systemd, focusing on DNS availability checks as an example, and how to configure systemd to automatically restart services that become unhealthy.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing BuildKit Rootless on Ubuntu</title>
      <link>https://www.martinkonicek.eu/archive/buildkit/</link>
      <pubDate>Wed, 01 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/buildkit/</guid>
      <description>&lt;p&gt;Running BuildKit in rootless mode increases your security and flexibility when building container images, especially on multi-user systems or CI environments where root privileges are restricted. This method uses a dedicated user and systemd service for isolation and automation, ensuring clean operation without elevated permissions. Docker is installed to provide a familiar runtime for container operations, while RootlessKit bridges the gap needed for rootless containerization.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Nexus Installation and Configuration Tutorial on Ubuntu with PostgreSQL</title>
      <link>https://www.martinkonicek.eu/archive/nexus/</link>
      <pubDate>Wed, 17 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/nexus/</guid>
      <description>&lt;p&gt;This tutorial guides through installing Sonatype Nexus Community Edition on Ubuntu with PostgreSQL, configuring permissions, setting up reverse proxy with Nginx, and optimizing Nexus settings.&lt;/p&gt;</description>
    </item>
    <item>
      <title>KeePass Batch Scripting for Secure and Automatic Database Unlock at Boot or Login</title>
      <link>https://www.martinkonicek.eu/archive/keepass/</link>
      <pubDate>Mon, 01 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/keepass/</guid>
      <description>&lt;p&gt;If you use KeePass to manage your passwords, you can securely automate database unlocking at boot or login using the &lt;code&gt;{PASSWORD_ENC}&lt;/code&gt; placeholder. This guide combines best practices, official documentation, and user insights, and now also explains how to set up your script to run automatically from the Windows Startup folder. Additionally, it details how KeePass’s Auto-Type feature works, including window title matching for automatic credential filling.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Monitoring backups on Proxmox using Nagios</title>
      <link>https://www.martinkonicek.eu/archive/proxmox-nagios/</link>
      <pubDate>Wed, 27 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/proxmox-nagios/</guid>
      <description>&lt;p&gt;Nagios can remotely monitor a Proxmox server by running custom scripts via the NRPE agent. For backups, the goal is to calculate the total size of files in the backup directory modified in the last 7 days and alert if the backup size falls below or exceeds desired thresholds.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Looking Far Ahead: How to Plan for the Next 10 Years</title>
      <link>https://www.martinkonicek.eu/archive/planning-ahead/</link>
      <pubDate>Sat, 09 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/planning-ahead/</guid>
      <description>&lt;p&gt;Planning ten years into the future is much like driving fast on a highway. When you want to travel quickly and safely, you don’t focus on the road right in front of your car—you look far ahead, half a kilometer down the road. This distant gaze helps you anticipate curves, obstacles, and opportunities, allowing you to make better decisions in the present.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Automatically Monitor and Restart a WireGuard Tunnel on MikroTik</title>
      <link>https://www.martinkonicek.eu/archive/mikrotik-restart/</link>
      <pubDate>Sun, 27 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/mikrotik-restart/</guid>
      <description>&lt;p&gt;Keeping your VPN connections robust is essential, especially when using WireGuard tunnels for remote access, site-to-site links, or secure communications. Like many network admins, I’ve faced the frustration of a WireGuard tunnel dropping—often at the least convenient moment. Performing a manual restart on the MikroTik each time is time-consuming and error-prone. This article walks you through a fully automated solution: continuously check the connection from a Linux server and, if needed, remotely restart the MikroTik WireGuard server—using secure workflows and best practices.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My Experience: Ensuring Reliable External USB Storage</title>
      <link>https://www.martinkonicek.eu/archive/usb-drive/</link>
      <pubDate>Fri, 25 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/usb-drive/</guid>
      <description>&lt;p&gt;As someone who regularly experiments with homelab setups, I wanted to expand my storage by attaching a 2TB SATA drive in an externally powered AXAGON USB 3.0 enclosure to my Odroid H4 Ultra Pro (an x86 mini-PC), running Proxmox VE. On paper, with external power and a quality enclosure, I expected flawless operation—however, I encountered a range of classic USB storage issues. Here’s my real-world troubleshooting journey and the persistent solutions I adopted.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Monica CRM - SMTP SSL Certificate Verification Error</title>
      <link>https://www.martinkonicek.eu/archive/monica-mail/</link>
      <pubDate>Thu, 24 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/monica-mail/</guid>
      <description>&lt;p&gt;Monica CRM is a privacy-focused personal relationship manager. Successfully configuring outbound email is essential for notifications and automations. One of the most common issues for new users is encountering errors related to SSL or STARTTLS when setting up SMTP delivery. This guide provides step-by-step instructions, optimal configuration examples using environment variables, and explanations to help ensure your Monica CRM deployment sends emails reliably.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Evolution of DNS and the Cursed systemd-resolved</title>
      <link>https://www.martinkonicek.eu/archive/evolution-of-dns/</link>
      <pubDate>Sat, 19 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/evolution-of-dns/</guid>
      <description>&lt;p&gt;Looking back at our technical beginnings, most of us remember relying on the &lt;code&gt;resolv.conf&lt;/code&gt; file. This small but powerful file was our window into the world of DNS—it was our personal guide, helping us translate domain names into IP addresses. Every administrator, whether experienced or a novice, had to work with it at some point. Then systemd arrived, bringing systemd-resolved, and our beloved &lt;code&gt;resolv.conf&lt;/code&gt; started behaving like an old friend who suddenly decided not to be as reliable as we thought.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Self-Hosted GitHub Action Runner on Kubernetes</title>
      <link>https://www.martinkonicek.eu/archive/github-runner/</link>
      <pubDate>Mon, 19 May 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/github-runner/</guid>
      <description>&lt;p&gt;I recently set up a self-hosted GitHub Action Runner on Kubernetes using the Action Runner Controller, aiming for more control over my CI/CD pipeline. This involved configuring Kubernetes with DNS, ingress, and microk8s, and securing my private Docker registry with TLS and a custom Certificate Authority.&lt;/p&gt;&#xA;&lt;h2 id=&#34;create-github-app-and-secrets&#34; class=&#34;relative group&#34;&gt;Create GitHub App and Secrets &lt;span class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100&#34;&gt;&lt;a class=&#34;group-hover:text-primary-300 dark:group-hover:text-neutral-700&#34; style=&#34;text-decoration-line: none !important;&#34; href=&#34;#create-github-app-and-secrets&#34; aria-label=&#34;Kotva&#34;&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;On your repository, go to Developer settings and create and install a GitHub App. You will obtain the necessary details for creating a Kubernetes secret:&lt;/p&gt;</description>
    </item>
    <item>
      <title>SSH in Visual Studio Code with KeePass</title>
      <link>https://www.martinkonicek.eu/archive/vs-code/</link>
      <pubDate>Mon, 19 May 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/vs-code/</guid>
      <description>&lt;p&gt;Remote SSH extension in Visual Studio Code allows you to directly edit files on a Linux machine and access the Linux console from your Windows workstation. For the best comfort when accessing a remote SSH server from Visual Studio Code, use KeePass with KeeAgent, which works as an SSH agent.&#xA;Why Use KeePass and KeeAgent?&lt;/p&gt;</description>
    </item>
    <item>
      <title>WebSocket Connection to WireGuard</title>
      <link>https://www.martinkonicek.eu/archive/wireguard/</link>
      <pubDate>Mon, 19 May 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/wireguard/</guid>
      <description>&lt;p&gt;&lt;em&gt;In some countries (e.g. Egypt) or some hotels, VPN connections are blocked and the only possibility is to tunnel them through WebSocket. In this article, I will focus on that.&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>How I Used HashiCorp Vault and External Secrets Operator</title>
      <link>https://www.martinkonicek.eu/archive/vault/</link>
      <pubDate>Fri, 09 May 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/vault/</guid>
      <description>&lt;p&gt;When building a Kubernetes deployment for an application using MySQL, I initially considered using a &lt;code&gt;ConfigMap&lt;/code&gt; to store my database connection details. However, I quickly ran into a problem: &lt;strong&gt;ConfigMaps are not designed for sensitive data&lt;/strong&gt; like passwords, and more importantly, I was using Argo CD for GitOps.&lt;/p&gt;</description>
    </item>
    <item>
      <title>RPI Zero Ethernet Gadget Mode</title>
      <link>https://www.martinkonicek.eu/archive/rpi-zero-gadget/</link>
      <pubDate>Tue, 06 May 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/rpi-zero-gadget/</guid>
      <description>&lt;h1 id=&#34;using-usb-gadget-mode-on-raspberry-pi-zero-for-sshrdp-access-on-windows-11&#34; class=&#34;relative group&#34;&gt;Using USB Gadget Mode on Raspberry Pi Zero for SSH/RDP Access on Windows 11 &lt;span class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100&#34;&gt;&lt;a class=&#34;group-hover:text-primary-300 dark:group-hover:text-neutral-700&#34; style=&#34;text-decoration-line: none !important;&#34; href=&#34;#using-usb-gadget-mode-on-raspberry-pi-zero-for-sshrdp-access-on-windows-11&#34; aria-label=&#34;Kotva&#34;&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;The Raspberry Pi Zero is a versatile device that can be configured to act as a USB Ethernet gadget, allowing you to connect to it via SSH or RDP over a single USB cable. This is especially useful when you want a direct network connection without additional hardware. In this article, we will guide you through setting up the Pi Zero in USB gadget mode and installing the necessary Windows 11 drivers for seamless connectivity.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fire! Except, not at all. 🔥🚫</title>
      <link>https://www.martinkonicek.eu/archive/fire/</link>
      <pubDate>Sat, 05 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/fire/</guid>
      <description>&lt;p&gt;Titanic-do you know what made this ship unique and why it hit the iceberg? 🚢🧊 The Titanic was unique because it was huge, and if you needed to turn it, it took several kilometers. That’s why it hit the iceberg, even though the captain knew about it long before. 🛑👨‍✈️&lt;/p&gt;</description>
    </item>
    <item>
      <title>Loki, Promtail and Syslog</title>
      <link>https://www.martinkonicek.eu/archive/syslog-promtail/</link>
      <pubDate>Wed, 12 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/syslog-promtail/</guid>
      <description>&lt;p&gt;On my home server, I was slowly getting annoyed that I didn’t really have an idea of what was happening in the syslog, and when an application, for example, throws an &lt;code&gt;Out of memory&lt;/code&gt; error, I simply don’t know about it. That’s why I decided to send syslog to Promtail, which pushes it to Loki (Grafana) and processes it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Outdated library in my scraper</title>
      <link>https://www.martinkonicek.eu/archive/old-library/</link>
      <pubDate>Sat, 08 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/old-library/</guid>
      <description>&lt;p&gt;Today I discovered that a container in my home Kubernetes crashed, which is responsible for downloading the price of the SP500 ETF fund, which is then taken by Prometheus and passed to my Grafana.&lt;/p&gt;</description>
    </item>
    <item>
      <title>MicroK8s and DockerHub</title>
      <link>https://www.martinkonicek.eu/archive/microk8s-docker/</link>
      <pubDate>Sun, 02 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/microk8s-docker/</guid>
      <description>&lt;p&gt;If you work with Docker, you&amp;rsquo;ve surely noticed recently that DockerHub requires authentication when you download a bit more from it. In this article, I&amp;rsquo;ve decided to describe how to handle this in connection with MicroK8s.&lt;/p&gt;&#xA;&lt;p&gt;The first thing we need to modify is the file &lt;code&gt;/var/snap/microk8s/current/args/certs.d/docker.io/hosts.toml&lt;/code&gt;. If any subdirectory or file doesn&amp;rsquo;t exist, create it. The file should look like this:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;server = &amp;#34;https://docker.io&amp;#34;&#xA;&#xA;[host.&amp;#34;https://registry-1.docker.io&amp;#34;]&#xA;  capabilities = [&amp;#34;pull&amp;#34;, &amp;#34;resolve&amp;#34;]&#xA;  [host.&amp;#34;https://registry-1.docker.io&amp;#34;.auth]&#xA;    username = &amp;#34;YOUR_DOCKERHUB_USERNAME&amp;#34;&#xA;    identitytoken = &amp;#34;dckr_pat_TOKEN&amp;#34;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You need to generate a token on the DockerHub website. You can do this by clicking on Account -&amp;gt; Personal Access Tokens&lt;/p&gt;</description>
    </item>
    <item>
      <title>Work on Home Server</title>
      <link>https://www.martinkonicek.eu/archive/server-work/</link>
      <pubDate>Sun, 02 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/server-work/</guid>
      <description>&lt;p&gt;So today I was working on my home server, and I accidentally discovered from monitoring that some services weren&amp;rsquo;t running. Since my home Kubernetes server is more for playing around, but also hosts some public things, I get messages from Nagios once every 24 hours, so it doesn&amp;rsquo;t disturb me too much, but at the same time makes me aware of the need to address issues.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My Home Server with Kubernetes</title>
      <link>https://www.martinkonicek.eu/archive/local-kubernetes/</link>
      <pubDate>Thu, 20 Feb 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/local-kubernetes/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s true that I run my own server with Kubernetes at home, but what does it actually look like, and what do I test on it? At the beginning, I built an &amp;ldquo;enterprise&amp;rdquo; solution that is on the level of large corporations, at least on the surface - I have my own repository for OCI images, my own pipelines in GitHub for creating OCI images, and even my own installation of ArgoCD.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Connect to an SSH/RDP Server in Azure with a Proxy</title>
      <link>https://www.martinkonicek.eu/archive/azure-ssh/</link>
      <pubDate>Fri, 14 Feb 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/azure-ssh/</guid>
      <description>&lt;p&gt;If you ever want to connect to a virtual machine in Azure from a corporate network and you don&amp;rsquo;t have a dedicated line or dedicated IP, you&amp;rsquo;ll likely run into issues. You&amp;rsquo;ll be behind a corporate proxy and won&amp;rsquo;t be able to get out easily, nor can you expect anyone to allow you access to all SSH or RDP ports on the external network.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I Wrote My Own Bookmark Management Application</title>
      <link>https://www.martinkonicek.eu/archive/own-app/</link>
      <pubDate>Sat, 08 Feb 2025 00:00:00 +0000</pubDate>
      <guid>https://www.martinkonicek.eu/archive/own-app/</guid>
      <description>&lt;p&gt;Recently, I&amp;rsquo;ve been dealing with an interesting problem. I have a large number of websites that I want to randomly visit a few of each day. It&amp;rsquo;s not an unsolvable problem - I copied the sites into Google Sheets and used ChatGPT to write a script that randomly selects ten sites and opens them in a new window.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
