<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <title>nielmin&#39;s blog</title>
  <subtitle>Blog posts from nielmin&#39;s personal site</subtitle>
  <link href="https://nielmin.github.io/feed.xml" rel="self" />
  <link href="https://nielmin.github.io/" />
  <updated>2026-02-21T00:00:00Z</updated>
  <id>https://nielmin.github.io/</id>
  <author>
    <name>nielmin</name>
  </author>
  <entry>
    <title>Don&#39;t use Linux if you hate Microsoft</title>
    <link href="https://nielmin.github.io/blog/dont-use-linux-if-you-hate-microsoft/" />
    <updated>2025-10-03T00:00:00Z</updated>
    <id>https://nielmin.github.io/blog/dont-use-linux-if-you-hate-microsoft/</id>
    <content type="html">&lt;p&gt;With the end of Windows 10 coming in 2 weeks, people have a couple of options:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Stick with Windows 10 until they&#39;re forced to upgrade (like how some did with Windows 7).&lt;/li&gt;
&lt;li&gt;Buy a Mac and use macOS.&lt;/li&gt;
&lt;li&gt;Use Linux.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;And I want to talk about Option 3: Linux.
More specifically, the reason behind switching operating systems.
Because currently, I believe most people are switching to Linux because they hate Microsoft.
And that&#39;s the wrong way to do it.&lt;/p&gt;
&lt;h2&gt;Exponential Decay of Windows&lt;/h2&gt;
&lt;p&gt;Over the years, Microsoft has made Windows into a terrible user experience.
Even amongst non-technical people, their opinion of Windows at best is tolerable.
From hours-long updates that could break your PC to unhelpful BSOD, there&#39;ve been even more problems Microsoft has added recently.&lt;/p&gt;
&lt;p&gt;Here&#39;s a couple off the top of my head:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ads in your start menu.&lt;/li&gt;
&lt;li&gt;Copilot and Windows Recall.&lt;/li&gt;
&lt;li&gt;OneDrive uploading your files automatically without your permission.&lt;/li&gt;
&lt;li&gt;New system requirements.&lt;/li&gt;
&lt;li&gt;Telemetry.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All of this for an operating system that costs a $100, and treats the end user like shit.&lt;/p&gt;
&lt;p&gt;Because of this, people are looking for alternatives, specifically Linux.&lt;/p&gt;
&lt;p&gt;Cause unlike most modern software, Linux has continued to gradually get better over the year.
The biggest achievement being gaming.&lt;/p&gt;
&lt;p&gt;As long as the game you want to play doesn&#39;t require an anti-cheat, most games will run &lt;em&gt;fine&lt;/em&gt; on Linux.
That, in conjunction with better performance, lack of telemetry, ads, AI, etc., Linux is looking pretty good.
So good that many people might switch to Linux once Windows 10 reaches End of Life.&lt;/p&gt;
&lt;p&gt;But there&#39;s one glaring problem.&lt;/p&gt;
&lt;h2&gt;Linux is not Windows&lt;/h2&gt;
&lt;p&gt;While obvious, I don&#39;t think people know what this implies: &lt;strong&gt;they&#39;re going to have to learn how to use Linux&lt;/strong&gt; (yes, that includes the scary TERMINAL).
I&#39;ve seen so many new Linux users on &lt;a href=&quot;https://reddit.com/r/linux&quot;&gt;r/linux&lt;/a&gt; and in YouTube comments complain about how the thing they did on Windows doesn&#39;t work on Linux.
That because Linux doesn&#39;t behave like Windows (the thing that they&#39;re trying to get away from), Linux is &amp;quot;unintuitive&amp;quot;, &amp;quot;not user-friendly&amp;quot;, and &amp;quot;not ready for the public&amp;quot;.&lt;/p&gt;
&lt;p&gt;And that&#39;s bullshit.&lt;/p&gt;
&lt;p&gt;What these anonymous internet folks are actually saying is that they don&#39;t want to put in the effort to learn Linux (aka lazy).
They cry how they just want to &amp;quot;get work done&amp;quot; or &amp;quot;play videogames/create music/edit videos/use Photoshop&amp;quot;, not roleplay as a sysadmin.
And if that IS the case, then stop complaining and begrudingly use Windows.
Linux is free and worked on by volunteers around the globe.&lt;/p&gt;
&lt;p&gt;No one&#39;s forcing you to use Linux.&lt;/p&gt;
&lt;p&gt;No one&#39;s being paid to market Linux as the savior of OSes.&lt;/p&gt;
&lt;p&gt;Otherwise, if you&#39;re unwilling to learn even a modicum of the thing your planning on replacing and using for the forseeable future, you&#39;re going to fail and have a bad time.&lt;/p&gt;
&lt;h2&gt;How to Succeed in Linux (NOT CLICKBAIT!)&lt;/h2&gt;
&lt;p&gt;Instead of running to Linux because Windows is an abusive partner, learn to love something about Linux instead.
Instead of focusing on the things you hate about Windows, focus on the thing that excites you about Linux.
Instead of remembering all the bad memories you had with Windows, look forward to all the great ones you&#39;ll have with your new life-long partner Linux.&lt;/p&gt;
&lt;p&gt;Okay, enough that&#39;s enough personification of operating systems.&lt;/p&gt;
&lt;h2&gt;LoVe nOT hATe&lt;/h2&gt;
&lt;p&gt;Do you know what made me stick with Linux for the long run?&lt;/p&gt;
&lt;p&gt;No, it wasn&#39;t an ever-increasing amount of vitriol for Microsoft.&lt;/p&gt;
&lt;p&gt;No, it wasn&#39;t the freedom from ads and telemetry.&lt;/p&gt;
&lt;p&gt;No, it wasn&#39;t the lack of viruses or performance gains I would get.&lt;/p&gt;
&lt;p&gt;It was &lt;code&gt;rsync&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Yes, the highly acclaimed syncing tool that&#39;s used by sysadmins is what made me switch to Linux.
After experiencing data loss, I was looking for a simple yet robust backup tool for my personal files.
After googling a bunch about what was available, it was between &lt;code&gt;FreeFileSync&lt;/code&gt; and &lt;code&gt;rsync&lt;/code&gt;.
And in the end, the scriptablility of &lt;code&gt;rsync&lt;/code&gt; won, and I was willing to give up the familiarity of Windows just to get first-class support for &lt;code&gt;rsync&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;It&#39;s been 6 years since.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The people that will succeed in Linux and continue to use it are the ones that will find learning about it more exciting than hating.&lt;/p&gt;
&lt;p&gt;Maybe you saw Pewdiepie&#39;s video about Arch.&lt;/p&gt;
&lt;p&gt;Or maybe you happened to stumble upon a post from &lt;a href=&quot;https://reddit.com/r/unixporn&quot;&gt;r/unixporn&lt;/a&gt; and saw how cool and slick an operating system can be.&lt;/p&gt;
&lt;p&gt;At the end of the day, swiching to Linux will require some effort on your end, and it&#39;s better to go about it with earnest than dread.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Moving on from Pangolin Tunnels</title>
    <link href="https://nielmin.github.io/blog/moving-on-from-pangolin-tunnels/" />
    <updated>2025-10-30T00:00:00Z</updated>
    <id>https://nielmin.github.io/blog/moving-on-from-pangolin-tunnels/</id>
    <content type="html">&lt;p&gt;For quite a while now I&#39;ve been using &lt;a href=&quot;https://github.com/fosrl/pangolin&quot;&gt;Pangolin Tunnels&lt;/a&gt; on a VPS to access my homelab services.
It&#39;s been pretty solid for some months now, and it is a great FOSS alternative to Cloudflare Tunnels.
But me being me, I wanted to try out something else.&lt;/p&gt;
&lt;p&gt;That something else being &lt;a href=&quot;https://netbird.io/&quot;&gt;Netbird&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Simply put, Netbird is a more open-source and non-VC-backed version of &lt;a href=&quot;https://tailscale.com/&quot;&gt;Tailscale&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Before Pangolin Tunnels, I was using Tailscale with a &lt;a href=&quot;https://caddyserver.com/&quot;&gt;Caddy reverse proxy&lt;/a&gt; to redirect a custom domain to my homelab.
But when I saw that &lt;a href=&quot;https://tailscale.com/blog/series-c&quot;&gt;Tailscale raised $160M&lt;/a&gt; earlier this year, I started to look for some alternatives.
It&#39;s not because Tailscale got worse or anything, but because VC-backed stuff has a tendency to enshitify over time.&lt;/p&gt;
&lt;h3&gt;NetBird any good?&lt;/h3&gt;
&lt;p&gt;Honestly I couldn&#39;t tell you.
I thought latency would improve because of the mesh feature, but it&#39;s about the same as Tailscale from what I can remember.&lt;/p&gt;
&lt;p&gt;But latency isn&#39;t really that important to me since all I really need from my homelab is access to my &lt;a href=&quot;https://github.com/tomsquest/docker-radicale&quot;&gt;calendar &amp;amp; contacts&lt;/a&gt;, &lt;a href=&quot;https://github.com/miniflux/v2&quot;&gt;RSS reader&lt;/a&gt;, and &lt;a href=&quot;https://github.com/sentriz/gonic&quot;&gt;music server&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I will say that I&#39;ve been having some trouble getting the NetBird container to work with &lt;a href=&quot;https://www.redhat.com/en/blog/quadlet-podman&quot;&gt;Podman quadlet&lt;/a&gt;.
I prefer using quadlets whenever I can in place of Docker.
I recently learned about &lt;a href=&quot;https://www.redhat.com/en/blog/podman-kubernetes-secrets&quot;&gt;podman secrets&lt;/a&gt;, which has made me like Podman even more.
But for whatever reason I can&#39;t get it to work.&lt;/p&gt;
&lt;p&gt;This is non-working quadlet:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[Unit]
Description=NetBird container
Wants=network-online.target
After=network-online.target

[Container]
ContainerName=netbird
Image=docker.io/netbirdio/netbird:latest
AddCapability=NET_ADMIN SYS_ADMIN SYS_RESOURCE
Network=host
Volume=%h/containers/netbird-client:/var/lib/netbird:z
Secret=nb-sk-fedora,type=env,target=NB_SETUP_KEY
AutoUpdate=registry

[Service]
Restart=always

[Install]
WantedBy=multi-user.target default.target
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Maybe I&#39;m not understanding Podman Secrets fully.
Or maybe this is another case where the container has to run with root privileges.&lt;/p&gt;
&lt;p&gt;I&#39;ll fiddle with this later.&lt;/p&gt;
&lt;p&gt;In the meantime, the NetBird client is running using Docker Compose:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;services:
  netbird:
      container_name: netbird
      hostname: fedora
      cap_add:
          - NET_ADMIN
          - SYS_ADMIN
          - SYS_RESOURCE
      network_mode: host
      environment:
          - NB_SETUP_KEY=&amp;lt;SETUP-KEY&amp;gt;
      volumes:
          - /path/to/containers/folder/netbird-client:/var/lib/netbird
      image: netbirdio/netbird:latest
      restart: always
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;TL;DR&lt;/h3&gt;
&lt;p&gt;Nothing wrong with Pangolin Tunnels, just wanted to try out Netbird + Caddy again.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>No more Docker in my Homelab</title>
    <link href="https://nielmin.github.io/blog/no-more-docker-in-my-homelab/" />
    <updated>2026-02-14T00:00:00Z</updated>
    <id>https://nielmin.github.io/blog/no-more-docker-in-my-homelab/</id>
    <content type="html">&lt;p&gt;For 2 years now, I&#39;ve been using and running all my containers with &lt;a href=&quot;https://www.redhat.com/en/blog/quadlet-podman&quot;&gt;Podman Quadlets&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It it my preferred way of runnig containers, and has replaced Docker and Docker Compose in my homelab.&lt;/p&gt;
&lt;p&gt;Personally, Podman Quadlets just jive with the way I like to do things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Each container is its own rootless, systemd service (vs. Docker&#39;s rootful daemon).&lt;/li&gt;
&lt;li&gt;Each container is declared using systemd syntax (vs. Docker Compose YAML).&lt;/li&gt;
&lt;li&gt;Each container can be managed and viewed with SystemD &lt;code&gt;systemctl&lt;/code&gt; and &lt;code&gt;journalctl&lt;/code&gt; commands.&lt;/li&gt;
&lt;li&gt;Volumes, Networks, and Pods can be created and declared text files.&lt;/li&gt;
&lt;li&gt;Containers in a pod can be re/started all at once using &lt;code&gt;systemctl --user re/start&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But the one thing that kept me back (and Docker installed) was &lt;a href=&quot;https://immich.app/&quot;&gt;Immich&lt;/a&gt;, a self-hosted Google Photos replacement.&lt;/p&gt;
&lt;h2&gt;Not my first rodeo&lt;/h2&gt;
&lt;p&gt;A couple of months ago I tried to move Immich to Podman quadlets.&lt;/p&gt;
&lt;p&gt;Converting Immich&#39;s &lt;code&gt;docker-compose.yml&lt;/code&gt; and &lt;code&gt;example.env&lt;/code&gt; to the &lt;code&gt;podman quadlet&lt;/code&gt; equivalent wasn&#39;t hard, just tedious.
Factoring out each individual app into its own &lt;code&gt;.container&lt;/code&gt; quadlet was pretty straightforward, albeit a might messy.&lt;/p&gt;
&lt;p&gt;A &lt;code&gt;.container&lt;/code&gt; quadlet can only have one container declared in it, and SystemD does not support string interpolation (no &lt;code&gt;${UPLOAD_LOCATION}&lt;/code&gt; allowed).&lt;/p&gt;
&lt;p&gt;So the 2 Docker files (&lt;code&gt;docker-compose.yml&lt;/code&gt; and &lt;code&gt;example.env&lt;/code&gt;) became 5 podman quadlets, the fifth being an &lt;code&gt;immich.pod&lt;/code&gt; to group all Immich containers together:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;immich-server.container&lt;/code&gt; for the Immich server&lt;/li&gt;
&lt;li&gt;&lt;code&gt;immich-db.container&lt;/code&gt; for the Postgres database&lt;/li&gt;
&lt;li&gt;&lt;code&gt;immich-redis.container&lt;/code&gt; for the Redis container&lt;/li&gt;
&lt;li&gt;&lt;code&gt;immich-ml.container&lt;/code&gt; for the machine learning container&lt;/li&gt;
&lt;li&gt;&lt;code&gt;immich.pod&lt;/code&gt; to create a Pod for the containers above&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;(The environment variables are hard-coded in their respective &lt;code&gt;.container&lt;/code&gt; files.)&lt;/p&gt;
&lt;p&gt;And &lt;em&gt;almost&lt;/em&gt; everything worked.&lt;/p&gt;
&lt;h2&gt;What happened to my thumbnails?&lt;/h2&gt;
&lt;p&gt;For whatever reason, I could not get thumbnail generation to work, even though both OCI runtimes were runnig on the same host.&lt;/p&gt;
&lt;p&gt;I spent a couple of hours trying to troubleshoot the issue, from basic Samba permissions to archaic SELinux flags, and still could not find the solution.&lt;/p&gt;
&lt;p&gt;What I thought would be a relatively simple transition turned out to be a very frustrating reality.&lt;/p&gt;
&lt;p&gt;So I admitted defeat and reconciled that Docker was going to have to stay if I wanted to use Immich (until I eventually move to NixOS).&lt;/p&gt;
&lt;h2&gt;Second time&#39;s the charm&lt;/h2&gt;
&lt;p&gt;After having a frustrating time with my NixOS config, I decided to try again with Immich and Podman Quadlet.&lt;/p&gt;
&lt;p&gt;And I&#39;m happy to report that I finally got rid of Docker from my homelab.&lt;/p&gt;
&lt;p&gt;I&#39;m not entirely sure what changed between then and now.
Maybe it was because Immich released V2, or maybe &lt;code&gt;podman&lt;/code&gt; fixed something in one of their updates.&lt;/p&gt;
&lt;p&gt;Regardless, thumbnails generate as they should on my Samba share, and I am Docker free.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Self-hosting is simpler without hoarding</title>
    <link href="https://nielmin.github.io/blog/self-hosting-is-simpler-without-hoarding/" />
    <updated>2026-02-21T00:00:00Z</updated>
    <id>https://nielmin.github.io/blog/self-hosting-is-simpler-without-hoarding/</id>
    <content type="html">&lt;p&gt;I recently noticed there&#39;s a lot of &lt;a href=&quot;https://github.com/Ravencentric/awesome-arr&quot;&gt;effort&lt;/a&gt; put in a specific area in self-hosting: &lt;strong&gt;media&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;And I think it&#39;s a bit unecessary.&lt;/p&gt;
&lt;p&gt;Fhe value of self-hosting is becoming independent and having control of your data and privacy.
It is, first and foremost, about having access to tools you control that augment your digital experience without violating your rights.
Whether that&#39;s having an adblocker on your home network or a Frigate-based CCTV setup, your hosted services should add some convenience to your life.
Otherwise, what&#39;s the point (besides learning).&lt;/p&gt;
&lt;p&gt;However, the community (&lt;a href=&quot;https://reddit.com/r/selfhosted&quot;&gt;r/selfhosted&lt;/a&gt;) seems to over emphasize the &amp;quot;utility&amp;quot; of having your own Netflix.
I don&#39;t use any &lt;code&gt;-arr&lt;/code&gt; program in my own homelab, but it does seem a little excessive when a good chunk of someone&#39;s homelab is dedicated to media collection, organization, and consumption.&lt;/p&gt;
&lt;p&gt;I&#39;m also in the minority when I say this, but I don&#39;t rewatch/replay a lot of media.
I also don&#39;t do the whole &#39;passively watching a TV show or movie in the background on the 2nd monitor while I do X&#39; (cause multi-tasking is a myth).&lt;/p&gt;
&lt;p&gt;When I decide to spend time to watch something, I like to be very intentional.
It is my way of showing respect to the creators&#39; of said TV show/movie and their creation.
If I&#39;m going to spend 2 hours watching a film or episodes, I might as well pay attention, get immersed, and have a good time.
Otherwise I&#39;m wasting time and &amp;quot;disrespecting&amp;quot; the film/show.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;To clarify, when I say something is a &amp;quot;waste of time&amp;quot;, I&#39;m not saying that the time you spent watching something could&#39;ve been spent doing something more &amp;quot;productive&amp;quot;.
At least in this context, the use is a bit more literal and akin to &amp;quot;unecessary excess&amp;quot;.
For example, if I&#39;m on my phone reading something and not focusing on the film, both actions are being done without &lt;em&gt;intention&lt;/em&gt; (therefore being wasteful).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As a result, I don&#39;t tend to keep/hoard a lot of media stored on my NAS.
Once I&#39;ve finished watching a film or show, I&#39;ll seed until the ratio reaches &lt;code&gt;2.0&lt;/code&gt; and delete it from my drives.
For me, any subsequent (re)watch of is a waste (of time, hard drive space, attention, etc) because I should&#39;ve paid attention and gotten the most out of it the first time.&lt;/p&gt;
&lt;p&gt;Even the stuff I do save on my NAS (i.e. favorites) I haven&#39;t watched in a long time.
Simply put, why would I want to rewatch a favorite of mine if I don&#39;t have the time to give it the same attention and focus as before?&lt;/p&gt;
&lt;p&gt;I know my &amp;quot;relationship&amp;quot; with media is a weird one, but as a consequence my homelab is very lean and utilitarean.
It is not built around media consumption, but focused on independent tools that will help in my daily life.&lt;/p&gt;
&lt;p&gt;For example, I recently found out about &lt;a href=&quot;https://github.com/Bubka/2FAuth&quot;&gt;2fauth&lt;/a&gt;, a self-hosted 2FA web app.
It is a very simple app wrtten in PHP with SQLite as a database, but it is incredibly useful.
By hosting your own 2FA, it mitigates the fear of losing your phone and by extension your TOTP codes.
You can access them anywhere from any device with a browser, and aren&#39;t tethered to your smartphone.&lt;/p&gt;
&lt;p&gt;In conclusion, I don&#39;t understand the need to have a massive media library, and I find all the effort someone puts into media consumption and storage a bit excessive.&lt;/p&gt;
</content>
  </entry>
</feed>