<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Felix's Page</title><link>https://blog.9wd.eu/</link><description>Recent content on Felix's Page</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 19 Jul 2026 09:00:00 +0200</lastBuildDate><atom:link href="https://blog.9wd.eu/index.xml" rel="self" type="application/rss+xml"/><item><title>Streamlining App Packaging and Delivery in the Cloudron Ecosystem</title><link>https://blog.9wd.eu/posts/cloudron-community-apps/</link><pubDate>Sun, 19 Jul 2026 09:00:00 +0200</pubDate><guid>https://blog.9wd.eu/posts/cloudron-community-apps/</guid><description>&lt;p&gt;The Cloudron platform continues to bridge the gap between seamless user deployment and developer agility. By providing standardised mechanisms for configuration, lifecycle maintenance and robust backup/restore routines, Cloudron has long simplified self-hosting. Their recent addition, the &lt;a href="https://ca.cloudron.io/" class="external-link" target="_blank" rel="noopener"&gt;Community App Store&lt;/a&gt;, takes this a step further by opening up decentralised app distribution for independent developers while maintaining the platform&amp;rsquo;s signature stability.&lt;/p&gt;
&lt;p&gt;For external maintainers, publishing has now been made much simpler. They can log in to the Store with their Cloudron ID and publish a link to their app&amp;rsquo;s &lt;code&gt;CloudronVersions.json&lt;/code&gt; file. The Store then dynamically parses the app&amp;rsquo;s metadata.&lt;/p&gt;</description></item><item><title>Urban dictionary - or how I came up with my domain name</title><link>https://blog.9wd.eu/posts/urban-dictionary-naming-things/</link><pubDate>Sat, 16 May 2026 09:00:00 +0200</pubDate><guid>https://blog.9wd.eu/posts/urban-dictionary-naming-things/</guid><description>&lt;p&gt;When I was looking for a domain name, my main goal was short. I wrote a script to check which three-letter &lt;code&gt;.de&lt;/code&gt; combinations were still available, and added one more constraint: it should start with a number, so it would sort towards the top of any list.&lt;/p&gt;
&lt;p&gt;Among the surviving candidates I stumbled upon &lt;code&gt;9wd&lt;/code&gt;. What sealed it was purely physical — I liked how my fingers moved when typing &lt;code&gt;wd.de&lt;/code&gt;. That was the whole decision process. This was back in 2013, and I registered it without a second thought.&lt;/p&gt;</description></item><item><title>The Ambassador Scheme: What Every Content Creator Should Know</title><link>https://blog.9wd.eu/posts/fake-ambassador/</link><pubDate>Tue, 19 Nov 2024 09:00:00 +0100</pubDate><guid>https://blog.9wd.eu/posts/fake-ambassador/</guid><description>&lt;p&gt;As someone who regularly shares content featuring my cat, Abby, on &lt;a href="https://www.tiktok.com/@abby.uit.pijnacker" class="external-link" target="_blank" rel="noopener"&gt;TikTok&lt;/a&gt; and &lt;a href="https://www.instagram.com/abby.uit.pijnacker/" class="external-link" target="_blank" rel="noopener"&gt;Instagram&lt;/a&gt;, I’ve noticed an intriguing trend appearing in my direct messages. If you’re a casual or budding content creator, you might have come across it too: the “ambassador” scheme.&lt;/p&gt;
&lt;h3 id="the-ambassador-scheme-a-closer-look-"&gt;
 The &amp;ldquo;Ambassador&amp;rdquo; Scheme: A Closer Look 🕵️‍♂️
 &lt;a class="heading-link" href="#the-ambassador-scheme-a-closer-look-"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;Here&amp;rsquo;s how it usually unfolds:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The Approach&lt;/strong&gt;: A brand, often selling jewelry or pet accessories, reaches out with an enticing offer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Proposal&lt;/strong&gt;: They claim to be seeking &amp;ldquo;brand ambassadors&amp;rdquo; to help promote their products.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Incentive&lt;/strong&gt;: They offer you a selection of free items—perhaps four pieces of shiny jewelry or a bundle of pet accessories.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Condition&lt;/strong&gt;: You must cover the shipping cost.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Price Tag&lt;/strong&gt;: The shipping fee is suspiciously high, often around &lt;strong&gt;€60&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Bonus&lt;/strong&gt;: They tell you that your followers will get a 50% discount on their purchases, making you feel like you’re offering them an exclusive deal.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="whats-really-going-on-"&gt;
 What’s Really Going On? 🤔
 &lt;a class="heading-link" href="#whats-really-going-on-"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;These offers leverage the allure of being associated with a brand and receiving free products. While the promise might seem tempting, the steep &lt;em&gt;shipping fees&lt;/em&gt; often offset the brand&amp;rsquo;s costs and even turn a profit. Additionally, the original prices on their webshop are frequently marked up, making the 50% discount look more attractive than it truly is.&lt;/p&gt;</description></item><item><title>Navigating TikTok: From Casual Cat Videos to Couples' Account Success</title><link>https://blog.9wd.eu/posts/tiktok-observations/</link><pubDate>Wed, 13 Nov 2024 09:00:00 +0100</pubDate><guid>https://blog.9wd.eu/posts/tiktok-observations/</guid><description>&lt;p&gt;As a long-time TikTok user and cat-video enthusiast, I&amp;rsquo;ve always appreciated the platform for its ability to share lighthearted moments (check out my cat Abby at &lt;a href="https://www.tiktok.com/@abby.uit.pijnacker" class="external-link" target="_blank" rel="noopener"&gt;@abby.uit.pijnacker&lt;/a&gt;!). However, my wife and I recently embarked on a more ambitious project: our couples&amp;rsquo; account, &lt;a href="https://www.tiktok.com/@the_bartels" class="external-link" target="_blank" rel="noopener"&gt;@the_bartels&lt;/a&gt;. This adventure taught us valuable lessons about TikTok&amp;rsquo;s dynamics, so I&amp;rsquo;m excited to share these insights for anyone looking to start or revive their social media journey.&lt;/p&gt;
&lt;h2 id="1-embracing-the-teamwork-trend-"&gt;
 1. Embracing the &amp;ldquo;Teamwork&amp;rdquo; Trend 🤝
 &lt;a class="heading-link" href="#1-embracing-the-teamwork-trend-"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Our biggest growth strategy came from the &lt;em&gt;teamwork trend&lt;/em&gt;—a straightforward yet effective method that promises to follow back users who engage with specific hashtags and sounds. The results were impressive: we grew from zero to over &lt;strong&gt;3,500 followers&lt;/strong&gt; in just a few weeks! This trend involves daily interaction: not just following users back but also pruning those who unfollow to maintain a healthy, engaged community.&lt;/p&gt;</description></item><item><title>My recommendations for Nextcloud apps</title><link>https://blog.9wd.eu/posts/nextcloud-apps/</link><pubDate>Thu, 21 Mar 2024 18:30:00 +0100</pubDate><guid>https://blog.9wd.eu/posts/nextcloud-apps/</guid><description>&lt;p&gt;Nextcloud offers a variety of &lt;a href="https://apps.nextcloud.com/" class="external-link" target="_blank" rel="noopener"&gt;apps/plugins&lt;/a&gt; that can be installed to enhance its functionality. In addition to the standard apps, there are a few apps that should not be missing to make life easier for users and administrators alike. Below are my recommendations and a brief explanation of why I recommend them.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://apps.nextcloud.com/apps/welcome" class="external-link" target="_blank" rel="noopener"&gt;Welcome&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;The Welcome widget is helpful in guiding users where to find what in your organisation. It displays the contents of a markdown file directly on the dashboard, which can include links to important files or external tools. It also allows a support contact to be defined, which can then be reached via Nextcloud Talk.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apps.nextcloud.com/apps/impersonate" class="external-link" target="_blank" rel="noopener"&gt;Impersonate&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;A user is currently unavailable, but there is something in their account that needs to be accessed urgently? The &amp;ldquo;Impersonate&amp;rdquo; app makes it easy for administrators to become that user and access files and application data, as if they were the user.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apps.nextcloud.com/apps/groupfolders" class="external-link" target="_blank" rel="noopener"&gt;Group Folders&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Especially in a corporate environment, you have a lot of data that you want to share with users through a kind of &amp;ldquo;public folder&amp;rdquo;. The Group Folders application makes it easy to share folders with users without having a single user as the original owner of those folders. All that is required is for the admin to create groups and assign users to them from the Nextcloud user management and then (again from the admin backend) create the &amp;lsquo;group folder&amp;rsquo;. These folders will then appear in an extra tab in the file overview as well as next to the folders of the respective user.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This list will extended over time.&lt;/p&gt;</description></item><item><title>Backing up and restore Cloudron via autorestic</title><link>https://blog.9wd.eu/posts/restic-autorestic-cloudron/</link><pubDate>Sun, 03 Mar 2024 06:00:00 +0000</pubDate><guid>https://blog.9wd.eu/posts/restic-autorestic-cloudron/</guid><description>&lt;p&gt;In &lt;a href="https://blog.9wd.eu/posts/restic-autorestic-hetzner-storagebox/" &gt;a previous article&lt;/a&gt; I already described how to use autorestic to backup a server to a Hetzner Storagebox. Since then I have configured several Cloudron installations to use this method and would like to give some recommendations on the backup and restore process using this mechanism.&lt;/p&gt;
&lt;h2 id="backing-up"&gt;
 Backing up
 &lt;a class="heading-link" href="#backing-up"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;For the backup, I use the autoresponder configuration below, triggered by its native [cron implementation] (&lt;a href="https://autorestic.vercel.app/location/cron#installing-the-cron%29" class="external-link" target="_blank" rel="noopener"&gt;https://autorestic.vercel.app/location/cron#installing-the-cron)&lt;/a&gt;:&lt;/p&gt;</description></item><item><title>Review: Kruidvat Smart Finder</title><link>https://blog.9wd.eu/posts/kruidvat/</link><pubDate>Thu, 22 Feb 2024 18:00:00 +0200</pubDate><guid>https://blog.9wd.eu/posts/kruidvat/</guid><description>&lt;p&gt;For a trip abroad I recently bought an alternative to Apple&amp;rsquo;s AirTags sold by the Dutch chain Kruidvat. The &lt;a href="https://www.kruidvat.nl/kruidvat-smart-finder/p/5783769" class="external-link" target="_blank" rel="noopener"&gt;Kruidvat Smart Finder&lt;/a&gt; costs just €10 and can be registered as an &amp;lsquo;Other Item&amp;rsquo; within the FindMy app.&lt;/p&gt;
&lt;p&gt;Once added to the app, the tag behaves just like a regular AirTag and even allows you to share it with other Apple users. Only the hardware looks a little different. Compared to the original, the Kruidvat tag seems a bit power hungry. After three weeks on the road with my tags, the one that was the most active because I had it in my backpack was already low on battery power. The others basically stayed behind with the luggage at the lodge and rarely moved, only losing a single bar.&lt;/p&gt;</description></item><item><title>Use Distrobox to containerise your desktop</title><link>https://blog.9wd.eu/posts/distrobox-assemble/</link><pubDate>Sun, 06 Aug 2023 18:30:00 +0000</pubDate><guid>https://blog.9wd.eu/posts/distrobox-assemble/</guid><description>&lt;p&gt;When I first heard about the Steam Deck I was keen to get my hands on one, and while I cannot claim to be a gamer, I do have a few games in my Steam library that I enjoy firing up on the sofa in the evenings. The Steam Deck also has a desktop mode, but as SteamOS is immutable by default, additional applications need to be installed via flatpak, which does not offer the same variety of applications as other distributions such as Ubuntu. One way around this is to use &lt;a href="https://github.com/89luca89/distrobox" class="external-link" target="_blank" rel="noopener"&gt;Distrobox&lt;/a&gt; along with a rootless podman installation.&lt;/p&gt;</description></item><item><title>Unexpected invoices from fly.io?</title><link>https://blog.9wd.eu/posts/flyio-invoice/</link><pubDate>Wed, 02 Aug 2023 09:00:00 +0100</pubDate><guid>https://blog.9wd.eu/posts/flyio-invoice/</guid><description>&lt;p&gt;I&amp;rsquo;ve been running an instance of &lt;a href="../flyio/" &gt;uptime-kuma on fly.io&lt;/a&gt; for a while now. Their CLI makes it easy to deploy simple container applications and you can use up to three instances with 256MB of RAM and 3GB of persistent storage for free.&lt;/p&gt;
&lt;p&gt;A few days ago I got an email saying that my monthly bill would have been 41 cents, but since they don&amp;rsquo;t collect bills under $5, they&amp;rsquo;re giving me a 100% discount. Which is nice, but I wondered where the 41 cents came from, so I logged on to their dashboard. And it turns out that a new data volume was created four weeks ago. And because I now have two 3GB volumes instead of one, I was being charged for the usage.&lt;/p&gt;</description></item><item><title>Use the Cloudron OpenID Connect Provider to login to Gitea</title><link>https://blog.9wd.eu/posts/cloudron-oidc-gitea/</link><pubDate>Sun, 30 Jul 2023 08:30:00 +0000</pubDate><guid>https://blog.9wd.eu/posts/cloudron-oidc-gitea/</guid><description>&lt;p&gt;Cloudron &lt;a href="https://blog.cloudron.io/cloudron-7-4-released/" class="external-link" target="_blank" rel="noopener"&gt;recently added&lt;/a&gt; native support for OpenID Connect (oidc for short), which means that manual workarounds like &lt;a href="../cloudron-oidc-nextcloud/" &gt;using Kopano Meet as a bridge&lt;/a&gt; are no longer needed.&lt;/p&gt;
&lt;p&gt;One application I use quite often on my own Cloudron is Gitea. For example, the source code of this blog is hosted there, but also projects that I am working on on my own are in &lt;a href="https://git.9wd.eu/" class="external-link" target="_blank" rel="noopener"&gt;my own Gitea installation&lt;/a&gt;. My only problem with this is that login sessions are quite short and I have to constantly choose the right pair of auth credentials and then the separate 2fa code to login with. However, when logging in via oidc, Gitea has an optional setting to &amp;ldquo;Skip local 2FA&amp;rdquo; for a given identity provider.&lt;/p&gt;</description></item></channel></rss>