RSSAmplifier

Blog

Lukáš Zapletal

Recent content on Lukáš Zapletal

lukas.zapletalovi.comRSS feed ↗20 posts

Latest posts

Using Image Builder With AWS Dynamic Credentials

Image Builder supports uploading images to AWS through its build or upload commands. For example: image-builder upload rhel-10.1-ami-x86_64.raw \ --to=aws \ --aws-region=eu-central-1 \ --aws-bucket=my-bucket \ --aws-ami-name my-rhel This works with static credentials (AWS access key ID and secret). The industry is moving away from long-lived secrets toward dynamic credentials: short-lived…

Netbird DNS Split Configuration

Many companies provide NetBird VPN access configured with a mandatory DNS resolving service to ensure malware protection. While this is a solid IT recommendation for the general workforce, it can be frustrating if you run your own DNS blocker at home (like Pi-hole or AdGuard Home) and want to keep your personal traffic routing through it for better performance or hostname rewrites. If your…

Running Jellyfin in Podman

This guide covers deploying a streamlined, self-hosted audio and video archiving setup using Podman Quadlets. The stack integrates UN/BT tools and a web-based file management. All services are running rootful with SELinux in enforcing mode. Some containers are configured with host network for maximum performance of the network stack, this only works in rootful mode. By leveraging Quadlets, we can…

Running Immich in Podman

Immich has rapidly become the go-to solution for self-hosters looking to replace Google Photos. It is a high-performance, self-hosted photo and video backup application that boasts mobile apps, smooth timeline scrolling, and robust machine-learning capabilities for facial recognition and object detection. While the official documentation heavily leans on Docker Compose, deploying Immich using…

Hardened ssh in Fedora 43

If you have a Fedora 43 (or older) system with public IP with ssh port opened, you are probably getting a lot of records like these: sshd-session[20884]: refusing RSA key: Invalid key length [preauth] sshd-session[31595]: Invalid user shop from 172.94.9.155 port 37434 sshd-session[57487]: Connection closed by 139.0.12.92 port 62968 These are scripts, bots or AI, trying to get in. As you already…

SecureBoot/HTTPS Provisioning with Foreman/Satellite

We live in a world where security is paramount, yet network provisioning is often still done via the ancient PXE protocol, which is by design basically an insecure remote execution. Hardware has moved on since the PXE times, and we now have powerful BMC software with capabilities that are a great fit for a secure, end-to-end network provisioning workflow. This post describes a way to leverage the…

Deploy AdGuard Home via Podman Quadlets

Update 2026: Few changes, added host network mode which is more simple and less confusing. Let&rsquo;s install AdGuard Home via Podman Quadlets. Volumes: sudo podman volume create adguard-work sudo podman volume create adguard-conf Everything must be done as root since AdGuard needs to bind UDP port. Volume units: cat <<EOF | sudo tee /etc/containers/systemd/adguard-work.volume > /dev/null…

Fixed Hugo alias noindex bug

I was experiencing a weird behavior of Google treating my blog - specifically with pages that had an alias. Turned out that Hugo generator, which I use for my blog, use client side redirect for aliases: --- type: 'post' aliases: - /2013/07/hidden-gems-of-xterm.html date: '2013-07-17T00:00:00Z' tags: - linux - fedora title: Hidden gems of xterm --- Generates this alias page: <!DOCTYPE html> <html…

Reserved Custom Keyboard Key in VSCode

While my primary editor is, and always will be, Vim, I find myself using VS Code more and more for longer editing sessions on larger projects. With its great Go support, decent (though not ideal) refactoring tools, and Copilot, it&rsquo;s an excellent tool. Recently, I was exploring its Git capabilities and realized there are no default shortcuts for important actions like git commit or git push.…

Connect to Ancient SSH Server

Modern Linux distributions configure OpenSSH client to refuse connecting to servers without newer ciphers or key exchange algos. Symptoms are: Unable to negotiate with 192.168.200.83 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss The solution is clunky, so I created a small Debian-based container with OpenSSH client installed, it is an &ldquo;oldstable&rdquo; version old…

Directory Similarity Comparison Tool: walkalike

I wrote a small but fast tool called walkalike which calculates how two or more filesystem trees (or OS images) are similar. Usage: walkalike dir1 dirN Processing is optimized for SSDs and index creation is parallelized. Example command: walkalike testdata/a testdata/b Should print: 0.4444444444444 testdata/a testdata/b Similarity coefficient is between 0.0, when two trees are not similar at all,…

Generate testing MTLS certificates more easily

I found a much better tool to generate testing X509 TLS certificates than my own script which by the way is not correct. Here is how to generate a MTLS pair for typical web testing: #!/bin/bash -e wget -nc https://raw.githubusercontent.com/redhat-qe-security/certgen/refs/heads/master/certgen/lib.sh source lib.sh x509KeyGen ca x509KeyGen server x509KeyGen client x509SelfSign --notAfter '13 years'…

MacOS Text Replacements in Firefox

I use MacOS built-in text replacement feature a ton, however, after I started using Firefox recently I quickly found out that it does not work. The feature is disabled in about:config via setting named widget.macos.automatic.text_replacement , but even if you enable it it only works for textarea and not for widely used input element. And there is no solution so far. Well, there is a workaround by…

Deploy Invidious via Podman

Here is how you deploy Invidious via Podman 5.x or higher. All commands are executed as a normal user, if you want to use root then you need to modify some paths. Root-less containers are preferred together with SELinux in enforcing mode for maximum security. Create a new volume for database: podman volume create invidious-db Start a temporary container: podman run --rm -it --name invidious-init…

Unifi Controller in Fedora/CentOS/RHEL

Update: Updated in 2026 with newer MongoDB version. This article contains instructions how to run Unifi Controller from Ubiquiti via podman from Fedora, CentOS, RHEL, clones or pretty much any Linux distribution as long as it is version 5.x or higher. I tested this on Fedora versions 40-43 running with SELinux in enforcing mode and rootless containers via quadlets. The article assumes this is a…

AWS CLI via Podman

The extensive AWS CLI is quite painful to install on Fedora or RHEL since the API is moving so fast that is gets outdated quite quickly. Luckily, Amazon provides containers published both on AWS and Docker registries. Configuration is easy: podman run --rm -it -v ~/.aws:/root/.aws amazon/aws-cli configure AWS Access Key ID [****************xwcz]: AWS Secret Access Key [****************CAC1]:…

Fedora 40 on Intel NUC 13th gen

My main machine for all upstream work was Intel NUC 8th gen running i3-8109U CPU, 32 GB RAM and NVME, SSD and two USB HDDs. Originally, I only used this little machine as a file server and backup server but shortly after I added bunch of other services which ended up with this mess of NVMe/SSD/HDD. Last week when I was testing bootable container installations of Anaconda in a libvirt VM and…

Synchronize files with rclone over WebDAV

We have a mix of devices at home ranging from Linux workstations, servers, Macbooks, a Mac Mini and a Windows PC. Up until now, I was using Samba for a home &ldquo;share&rdquo; folder which was also used to do backups of the Windows PC (family photos and videos). But it was always a pain, smb protocol is somehow slow, unreliable and painful to set up for seamless MacOS integration. In fact, it…

Enable libvirt 5.6+ over TCP

I use libvirt quite a lot during my development and I like to use it both through local UNIX sockets and unauthenticated TCP. With the libvirt version 5.6.0 the project moved to socket activation and many tutorials on the internet are not correct on how to setup libvirt for TCP communication. This post will help. The first thing to realize is that the options which were previously used for this…

About Structured Logging in Go 1.21

About structured logging in Go 1.21 Upcoming version of the Go programming language, which is expected to be released in the fall of 2023, will introduce a new package named slog . It provides a clean and consistent API for structured logging. Let&rsquo;s take a closer look on how to use this new library. Structured logging utilizes key-value structures for storing messages which can be parsed,…