After a longer hiatus, I decided yesterday to tackle setting up my own Matrix server again. The last time I tried this, it was quite a battle with cryptic error messages, Docker permission problems, and federation headaches. This time should be different – and indeed: A lot has changed!
TL;DR: It finally works smoothlyThe key takeaways upfront:
✅ Docker installation runs cleanly through
✅ .well-known federation is recognized immediately
✅ Element X with Sliding Sync works out-of-the-box
✅ Traefik integration without hickups
✅ IPv4 & IPv6 federation active from the start
In short: What used to cost hours or days now works in under an hour. But let me explain step by step...
We live in a time in which our most personal conversations happen through screens and keyboards. Every email, message, and document we send travels through countless servers before reaching its destination. As someone who works in IT, I've seen firsthand how easily digital communication can be intercepted or compromised.
That's why I rely on OpenPGP – not because I have anything to hide, but because I value the fundamental right to private communication. It's one of the most robust encryption standards available, protecting digital conversations for over three decades.
OpenPGP: More Than Just Encryption
OpenPGP operates on a beautifully simple concept. Imagine you have a special lockbox that only you can open. You can give copies of the lock to anyone, but the key stays with you. When someone wants to send you a secret message, they lock it with your lock and send it. Only your key can open it.
This is essentially how OpenPGP works, but with mathematical precision. You generate two mathematically linked keys: a public key you share freely, and a private key that stays securely with you. The mathematics is so solid that even powerful computers would need centuries to break properly implemented encryption.
Beyond hiding messages, OpenPGP also lets you sign them, creating a digital fingerprint that proves authenticity and prevents tampering. Think of it as an impossible-to-forge tamper-evident seal.
If you've ever tried to send emails from a shell script, you've likely run into tools like mail, mailx, or even sendmail. They seem easy at first glance – but quickly become frustrating: strange formatting, attachment issues, encoding errors, and cryptic failure messages.
💨 Common Issues with mailx
Different implementations across distros (BSD vs. Heirloom vs. GNU)
When I started blogging (sometime in the 2000's), a popular tradition alongside the blogroll – a curated list of recommended blogs – was the “blog baton.” Bloggers would write about a specific topic and then pass it on to others, encouraging them to share their own perspectives.
These year-end and New Year lists of standard apps used by bloggers feel like a modern take on that tradition, as they pop up across the web. While I wasn’t directly invited to join the conversation this time, I decided to jump in after seeing Oliver’s take on the topic, which caught my interest.
A domain accessible only within the internal network can be incredibly useful when you host multiple services within your home lab. Not only does it provide a clean organization, but it also offers additional security since the services are not directly accessible from outside. In this article, I’ll show you how to set up an internal domain using an additional Nginx Proxy Manager (NPM) and an AdGuard Home Server within your home lab to structure and secure your self-hosted services.
I wanted to replace my internal root CA with an accepted Let's Encrypt wildcard certificate, so I treated myself to an additional domain for internal use only. Like my external domain ‘klein.ruhr’, this is hosted by netcup and I use the Cloudflare.com name servers (only the pure DNS name servers, no additional services).
Recently, a controversy surrounding WordPress founder Matt Mullenweg has caused unrest within the community.
At the center of the conflict is the hosting provider WP Engine, which Mullenweg accused of benefiting from the open-source nature of WordPress without contributing enough back to the project. This dispute escalated when Mullenweg demanded substantial financial compensation and threatened drastic measures. As a result, a significant portion of the workforce at Mullenweg’s company Automattic left the company.
This development, along with the increasing commercialization of WordPress, led me to switch to Ghost. Ghost offers a powerful, streamlined, and privacy-friendly alternative, focusing on what really matters: publishing content.
In the era of the GDPR (General Data Protection Regulation), it's essential for you to run your website in compliance with data protection regulations. Ghost is a modern, fast content management system that's gaining popularity in the self-hosting community. In this post, I'll guide you through how to run Ghost CMS with Docker-Compose while meeting GDPR requirements.
Requirements and Setup
Before you begin, make sure that Docker and Docker-Compose are installed on your server.
After introducing you to my daily companions in my homelab post, where I explained my Proxmox cluster and showcased other notable features of my #homelab, it’s time to dive into the software that powers my daily workflow.
At work, I’m required to use Windows 11 – sometimes necessity dictates our tools. However, in my personal life, I gravitate toward macOS and always keep at least one Linux system running. My go-to distribution is usually #Debian-based, and right now, it’s Linux Mint.
Since macOS is my primary operating system for personal use, this article will focus heavily on the software I use on macOS. Don’t worry if you’re not a Mac user – I rely on open-source software wherever possible, so many of these tools are available across multiple platforms.
Here’s a rundown of the apps and software that keep my digital life organized and efficient: