<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Painite</title><link>https://blog.painite.ch/en/tags/arch-linux/</link><atom:link href="https://blog.painite.ch/en/tags/arch-linux/index.xml" rel="self" type="application/rss+xml"/><description>Arch-Linux</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Tue, 16 Jun 2026 00:00:00 +0000</lastBuildDate><image><url>https://blog.painite.ch/media/icon_hu_fc098d57d83abf3d.png</url><title>Arch-Linux</title><link>https://blog.painite.ch/en/tags/arch-linux/</link></image><item><title>From Homelab to Hetzner: Ten Years of Self-Hosting</title><link>https://blog.painite.ch/en/blog/ten-years-self-hosting/</link><pubDate>Tue, 16 Jun 2026 00:00:00 +0000</pubDate><guid>https://blog.painite.ch/en/blog/ten-years-self-hosting/</guid><media:content url="https://blog.painite.ch/blog/ten-years-self-hosting/featured.png" medium="image"/><enclosure url="https://blog.painite.ch/blog/ten-years-self-hosting/featured.png" type="image/png" length="517192"/><description>&lt;p&gt;Over ten years ago I had a Dell PowerEdge running Ubuntu in a closet at home. ownCloud for files, Plex for media, a torrent client downloading everything Plex needed. That was my &amp;ldquo;homelab&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Ten years later I have a single Hetzner box running everything. No basement, no fan noise, no electricity bill. This is the story of how the second setup replaced the first - and why it took me a decade to get here.&lt;/p&gt;
&lt;h2 id="the-dell-era"&gt;The Dell Era&lt;/h2&gt;
&lt;p&gt;The home setup was fun while it lasted. Ubuntu on a Dell PowerEdge, ownCloud for files, Plex for media, torrents for the rest. It worked.&lt;/p&gt;
&lt;p&gt;What killed it was money. Running a server 24/7 isn&amp;rsquo;t free, and when I started thinking about upgrading the hardware, the math stopped making sense. The Dell was getting old, but buying a new server for the closet felt like throwing good money after bad.&lt;/p&gt;
&lt;h2 id="discovering-hetzner"&gt;Discovering Hetzner&lt;/h2&gt;
&lt;p&gt;Around the same time I had a job where we used &lt;strong&gt;Hetzner root servers&lt;/strong&gt;. I saw the prices. For what I was about to spend on new hardware plus years of electricity, I could rent something better - in a real datacenter, with real internet and someone else&amp;rsquo;s power bill.&lt;/p&gt;
&lt;p&gt;For reference: my Hetzner box today runs around &lt;strong&gt;90 CHF a month&lt;/strong&gt;. Symmetric 1 Gbit internet alone at home would be 30-40 CHF before electricity or hardware. The math wasn&amp;rsquo;t close.&lt;/p&gt;
&lt;p&gt;I moved my stuff over. That was about ten years ago.&lt;/p&gt;
&lt;h2 id="owncloud--nextcloud"&gt;ownCloud → Nextcloud&lt;/h2&gt;
&lt;p&gt;Somewhere in here I switched from ownCloud to Nextcloud. The migration was painless - same codebase under the hood. I don&amp;rsquo;t fully remember why I switched. Probably a mix of &amp;ldquo;everyone else was&amp;rdquo; and &amp;ldquo;Nextcloud was iterating faster.&amp;rdquo; It stuck. It&amp;rsquo;s still the spine of my data layer today.&lt;/p&gt;
&lt;h2 id="from-host-to-docker"&gt;From Host to Docker&lt;/h2&gt;
&lt;p&gt;The first version of my Hetzner setup ran services directly on the OS - Nginx as a reverse proxy on the host, packages installed alongside. It worked, but every upgrade was a small adventure.&lt;/p&gt;
&lt;p&gt;I learned &lt;strong&gt;Docker&lt;/strong&gt; around then and the pattern flipped. Services moved into containers. The reverse proxy eventually moved into a container too. Today everything runs in Docker. Updates are predictable. Rollbacks are clean. The host stays clean.&lt;/p&gt;
&lt;p&gt;And no, I haven&amp;rsquo;t moved to Kubernetes. The overhead doesn&amp;rsquo;t pay off until you have multiple physical machines, and I don&amp;rsquo;t need 99.9% uptime. Docker is simpler. Cheaper. Fine.&lt;/p&gt;
&lt;h2 id="plex--jellyfin--the-arr-stack"&gt;Plex → Jellyfin + the *arr Stack&lt;/h2&gt;
&lt;p&gt;The media side evolved too. &lt;strong&gt;Plex&lt;/strong&gt; got replaced by &lt;strong&gt;Jellyfin&lt;/strong&gt; - fully open source, no account, runs on my server. The *&lt;strong&gt;arr stack&lt;/strong&gt; (Sonarr, Radarr, Lidarr, Prowlarr) replaced my hand-managed torrent client. Now I tag what I want and the stack handles the rest. The old &amp;ldquo;download and shuffle files&amp;rdquo; approach is just gone.&lt;/p&gt;
&lt;h2 id="the-migration-that-birthed-arch"&gt;The Migration That Birthed Arch&lt;/h2&gt;
&lt;p&gt;One day I couldn&amp;rsquo;t edit a particular file on the Hetzner box anymore - some filesystem or permission state I never fully diagnosed. Rather than fight it, I rented a new Hetzner server, set it up fresh, and &lt;code&gt;rsync&lt;/code&gt;&amp;rsquo;d everything over.&lt;/p&gt;
&lt;p&gt;Fresh install meant a free choice of OS. I picked &lt;strong&gt;Arch&lt;/strong&gt;, and it&amp;rsquo;s been Arch since. People look at me funny for running Arch on a server. My reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Small footprint.&lt;/strong&gt; I install only what I need.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Current packages.&lt;/strong&gt; I get up-to-date versions instead of waiting six months for a backport.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fast security updates.&lt;/strong&gt; When something breaks in the broader Linux world, Arch ships a patch quickly.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The only real pain was &lt;strong&gt;UFW&lt;/strong&gt; - setting it up cleanly on Arch took more effort than I expected. After that, nothing.&lt;/p&gt;
&lt;h2 id="the-setup-today"&gt;The Setup Today&lt;/h2&gt;
&lt;p&gt;The box itself: one Hetzner dedicated server with the OS on an SSD and &lt;strong&gt;two 16 TB drives in RAID 0&lt;/strong&gt; (via LVM) for the data. The backup NUC at home runs on SSDs now too - upgraded a while back.&lt;/p&gt;
&lt;p&gt;Network: &lt;strong&gt;headscale&lt;/strong&gt; on the server, &lt;strong&gt;tailscale&lt;/strong&gt; clients on my devices, and on the server itself. The *&lt;strong&gt;arr stack&lt;/strong&gt; lives entirely inside the VPN - no public exposure. Public surface is VPN, HTTP/HTTPS, and the occasional game server port. &lt;strong&gt;Let&amp;rsquo;s Encrypt&lt;/strong&gt; via nginx and certbot handles the certs.&lt;/p&gt;
&lt;h2 id="backups"&gt;Backups&lt;/h2&gt;
&lt;p&gt;Running everything on one Hetzner box is a real single point of failure - so backups have to be solid.&lt;/p&gt;
&lt;p&gt;I use &lt;strong&gt;borg&lt;/strong&gt; for backups, and they go to a &lt;strong&gt;NUC at home&lt;/strong&gt;. The NUC also runs &lt;strong&gt;Zabbix&lt;/strong&gt;, which monitors everything. If a backup fails, or a service goes down, I see it.&lt;/p&gt;
&lt;p&gt;This is the part I&amp;rsquo;d defend most loudly. Self-hosting without real backups is just data you&amp;rsquo;re going to lose later.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve restored from these a few times - usually individual files. Mount the borg archive, copy over, done. Simple, which is the whole point.&lt;/p&gt;
&lt;h2 id="identity"&gt;Identity&lt;/h2&gt;
&lt;p&gt;A more recent addition: &lt;strong&gt;Keycloak&lt;/strong&gt;, integrated with several services so I have one login layer instead of N. Once you have that running, adding new services gets a lot less friction-y.&lt;/p&gt;
&lt;h2 id="the-scope-of-it"&gt;The Scope of It&lt;/h2&gt;
&lt;p&gt;What started as ownCloud and Plex grew. The box now runs Nextcloud, my &lt;strong&gt;mailserver&lt;/strong&gt;, Immich, Jellyfin + the *arr stack, Vaultwarden, Vikunja, ntfy, AdGuard Home, Matomo, Keycloak - and recently &lt;strong&gt;Matrix&lt;/strong&gt; with bridges, so I can keep one chat layer across multiple networks. Over the years I&amp;rsquo;ve also run a few &lt;strong&gt;game servers&lt;/strong&gt; on it for friends.&lt;/p&gt;
&lt;p&gt;A few of these services I share with family and friends too. They get the benefit, I run the box.&lt;/p&gt;
&lt;p&gt;It crept up on me. Each thing was one small addition. The total is a lot.&lt;/p&gt;
&lt;p&gt;My digital life would be useless without that box. I&amp;rsquo;m dependent on it - but only on my own stuff. Not on a cloud provider. Along the way I moved off Google completely. That&amp;rsquo;s the trade I&amp;rsquo;d take any day.&lt;/p&gt;
&lt;h2 id="whats-next"&gt;What&amp;rsquo;s Next&lt;/h2&gt;
&lt;p&gt;The current setup is mature but mutable. The next chapter is an &lt;strong&gt;immutable OS&lt;/strong&gt; approach: &lt;strong&gt;Fedora CoreOS&lt;/strong&gt;, &lt;strong&gt;Butane/Ignition&lt;/strong&gt; for declarative config, &lt;strong&gt;Quadlets&lt;/strong&gt; for systemd-native containers. Everything in Git, the system rebuilt from config rather than patched in place.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m not there yet. But that&amp;rsquo;s where this is heading.&lt;/p&gt;
&lt;p&gt;Further out, I want a real security monitoring layer. I deployed &lt;strong&gt;Wazuh&lt;/strong&gt; at work; something similar at home is on the list. The architecture switch comes first though.&lt;/p&gt;
&lt;h2 id="looking-back"&gt;Looking Back&lt;/h2&gt;
&lt;p&gt;Calling this a &amp;ldquo;homelab&amp;rdquo; stopped fitting somewhere around year three. One Hetzner box in a datacenter isn&amp;rsquo;t really &lt;em&gt;home&lt;/em&gt; anything. But the spirit is the same - my data, my services, my call on every choice.&lt;/p&gt;
&lt;p&gt;Ten years in, I&amp;rsquo;d move to Hetzner earlier. I&amp;rsquo;d start with Docker on day one. And I&amp;rsquo;d pick Arch (or something like it) the first time, not on the second go. The rest I&amp;rsquo;d let unfold the same way - the trial and error was the learning.&lt;/p&gt;</description></item></channel></rss>