<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Hosting on Janik von Rotz</title>
    <link>https://janikvonrotz.ch/categories/hosting/</link>
    <description>Recent content in Hosting on Janik von Rotz</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Sat, 10 Oct 2026 09:14:14 +0200</lastBuildDate>
    <atom:link href="https://janikvonrotz.ch/categories/hosting/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Goodbye Vercel, Hello Kubernetes</title>
      <link>https://janikvonrotz.ch/2026/10/10/goodbye-vercel-hello-kubernetes/</link>
      <pubDate>Sat, 10 Oct 2026 09:14:14 +0200</pubDate>
      <guid>https://janikvonrotz.ch/2026/10/10/goodbye-vercel-hello-kubernetes/</guid>
      <description>&lt;p&gt;Many eons ago I decided to get rid of Vercel and welcome Kubernetes into my life. Entering the world of Vercel is very easy (even ai can do it). Kubernetes is the very opposite. You have to unlearn a lot of stuff and learn even more new stuff. Let me give you an introduction.&lt;/p&gt;&#xA;&lt;h3 id=&#34;lets-start-with-the-why&#34;&gt;Lets start with the why&lt;/h3&gt;&#xA;&lt;p&gt;I am/was a Vercel customer for a long time. Actually, when I created my account Vercel was still known as &amp;ldquo;Zeit&amp;rdquo; and their command line tool was &amp;ldquo;now&amp;rdquo;. The biggest selling point at that time was their DNS infrastructure. Nobody would update DNS records as fast as they did. Their deployments options were limited, but they did the job. It was overall a simple service.&lt;/p&gt;&#xA;&lt;p&gt;Today the company could not be more different. Big investors forced to company to &amp;ldquo;evolve&amp;rdquo;. Gone were love for  German names and the nerdy interface. DNS was no longer a priority, instead many more services and analytic tools were added. Keynotes were held and I have to admit they made some interesting stuff. Alas as many cloud service provider they overfitted. The Vercel dashboard looks like the AWS console peak garbage. A total mess. So much stuff nobody wants. A vendor-lock-in in disguise.&lt;/p&gt;&#xA;&lt;p&gt;As the enshittification prophecies, the offerings of Vercel got worse and  I had to pay more to keep my websites and apps running. The logic of billing changed many times and currently you get the worst possible option &amp;ldquo;Edge Requests&amp;rdquo;. Whenever a request their server, it will be billed to whoever answers the request. This includes requests by bots, crawlers and a very few humans.&lt;/p&gt;&#xA;&lt;h3 id=&#34;finding-an-alternative&#34;&gt;Finding an alternative&lt;/h3&gt;&#xA;&lt;p&gt;The new platform had to be self-hosted, that was for use. The self-hosted alternatives to Vercel are &lt;a href=&#34;https://coolify.io/&#34;&gt;Coolify&lt;/a&gt; and &lt;a href=&#34;https://dokploy.com/&#34;&gt;Dockploy&lt;/a&gt;. I build a Docker-based deployment myself and therefore was not interested in these products. Also they offer more than I need. My requirements were simple:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Whenever I commit in one of my git repos with a static site, the system builds the static site and publishes it under a specified domain.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h3 id=&#34;why-kubernetes&#34;&gt;Why Kubernetes?&lt;/h3&gt;&#xA;&lt;p&gt;At the same time I started doubting Vercel, I taught myself Kubernetes and everything important in the &lt;a href=&#34;https://landscape.cncf.io/&#34;&gt;CNCF landscape&lt;/a&gt;. In Kubernetes you deal with resources. One of the resources is a &lt;a href=&#34;https://kubernetes.io/docs/concepts/workloads/controllers/deployment/&#34;&gt;deployment&lt;/a&gt;. If you apply this resource (and much more) to a Kubernetes cluster, the cluster will do everything in the world to make this deployment happening. I really liked this idea and level of abstraction. This was enough to sell me.&lt;/p&gt;&#xA;&lt;p&gt;For a while I put Kubernetes on hold, because I feared the complexity. Once I chipped the slices of the unknown away I learned that this system is actually  very simple. A minimal setup of Kubernetes can  replace Docker on a server. The most complex setup can run Google.&lt;/p&gt;&#xA;&lt;p&gt;Another reason to opt for Kuberenetes was the fact that Kubernetes established itself as the  &lt;a href=&#34;https://en.wikipedia.org/wiki/Lingua_franca&#34;&gt;lingua franca&lt;/a&gt; for service providers and software vendors. Whatever software you chose, as long as it was shipped as Kubernetes manifest, it can be run on any Kubernetes cluster. And thus as a customer you have the option to switch the cloud provider that is running your software.&lt;/p&gt;&#xA;&lt;h3 id=&#34;how-to-get-there&#34;&gt;How to get there?&lt;/h3&gt;&#xA;&lt;p&gt;At the end of this year I will have migrated all my Vercel projects to my Kubernetes cluster. This includes the deployments of my company. The process of creating a new deployment has become very simple. Building the system to make it possible was hard. I already covered some parts:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://janikvonrotz.ch/2025/12/31/deploy-forgejo-runner-to-kubernetes-cluster/&#34;&gt;Deploy Forgejo runner to Kubernetes cluster&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://janikvonrotz.ch/2026/01/02/forgejo-action-to-update-kubernetes-deployment/&#34;&gt;Forgejo action to update Kubernetes deployment&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;To provide the full picture I also want to cover these topics (in no particular order):&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Get a managed Kubernetes cluster&lt;/li&gt;&#xA;&lt;li&gt;Manage multiple kubeconfigs&lt;/li&gt;&#xA;&lt;li&gt;Kubernetes on the command line&lt;/li&gt;&#xA;&lt;li&gt;DNS for a Kubernetes cluster and services&lt;/li&gt;&#xA;&lt;li&gt;Create a Helm Chart and deploy to Kubernetes&lt;/li&gt;&#xA;&lt;li&gt;Manage secrets with sops and age&lt;/li&gt;&#xA;&lt;li&gt;TLS certificates with Kubernetes and Infomaniak&lt;/li&gt;&#xA;&lt;li&gt;Service account to update Kubernetes deployments&lt;/li&gt;&#xA;&lt;li&gt;Backup  Kubernetes volumes with K8up&lt;/li&gt;&#xA;&lt;li&gt;Monitor a Kubernetes cluster&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;So stay tuned for more.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
