<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hetzner on Simon Shine</title><link>https://simonshine.dk/tags/hetzner/</link><description>Recent content in Hetzner on Simon Shine</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 25 Oct 2026 13:00:29 +0100</lastBuildDate><atom:link href="https://simonshine.dk/tags/hetzner/index.xml" rel="self" type="application/rss+xml"/><item><title>Running Forgejo on a Hetzner Kubernetes cluster</title><link>https://simonshine.dk/articles/running-forgejo-on-a-hetzner-kubernetes-cluster/</link><pubDate>Sun, 25 Oct 2026 13:00:29 +0100</pubDate><guid>https://simonshine.dk/articles/running-forgejo-on-a-hetzner-kubernetes-cluster/</guid><description>&lt;p&gt;I host my own git. Since May 2026 that has been a single &lt;a href="https://forgejo.org"&gt;Forgejo&lt;/a&gt; pod on a Talos cluster at
Hetzner, deployed from Nix with &lt;a href="https://github.com/hall/kubenix"&gt;kubenix&lt;/a&gt; and the upstream &lt;a href="https://code.forgejo.org/forgejo-helm/forgejo-helm"&gt;forgejo-helm&lt;/a&gt; chart.&lt;/p&gt;
&lt;p&gt;The first deploy was Forgejo 14.0.4 on chart 16.2.2, SQLite, and a 20Gi volume. Five months later
it runs on Postgres, has been knocked over by crawlers three times. Most of what changed in the
deployment came from those outages.&lt;/p&gt;
&lt;h2 id="tldr"&gt;
 tl;dr
 &lt;a class="heading-anchor" href="#tldr" aria-label="Link to this section"&gt;&amp;para;&lt;/a&gt;
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The chart is vendored and pinned in &lt;code&gt;charts.toml&lt;/code&gt;; kubenix renders it with &lt;code&gt;chart2json&lt;/code&gt;, so the
Helm values are a Nix attrset and &lt;code&gt;nix build .#test&lt;/code&gt; asserts on the output.&lt;/li&gt;
&lt;li&gt;No OAuth client secret is in git. A Job generates it into Vault, and VSO renders it back.&lt;/li&gt;
&lt;li&gt;A runner that registers on every pod start from an &lt;code&gt;emptyDir&lt;/code&gt; leaves three offline rows per
rollout. I have 29 of them.&lt;/li&gt;
&lt;li&gt;A crawler walking every ref of one repository in every archive format put 16.2G of tarballs on a
20Gi volume. Source archives are now off.&lt;/li&gt;
&lt;li&gt;A crawler on &lt;code&gt;blame&lt;/code&gt;, &lt;code&gt;commit&lt;/code&gt;, &lt;code&gt;commits&lt;/code&gt; and &lt;code&gt;src&lt;/code&gt; pages took the Actions API down, and three
release runs were recorded as failures while their steps passed. An Envoy Gateway rate limit of
60 a minute on those paths fixed it.&lt;/li&gt;
&lt;li&gt;Hetzner volumes only grow. Going from 40Gi to 10Gi was a new claim, a &lt;code&gt;tar&lt;/code&gt; pipe, and a sha256
over all 3638 files.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="the-chart-is-a-directory"&gt;
 The chart is a directory
 &lt;a class="heading-anchor" href="#the-chart-is-a-directory" aria-label="Link to this section"&gt;&amp;para;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;The chart is vendored with &lt;code&gt;helm-vendor&lt;/code&gt;, a small CLI of mine that keeps a registry in
&lt;code&gt;charts.toml&lt;/code&gt; and unpacks each chart into &lt;code&gt;charts/&lt;/code&gt;. Forgejo publishes its chart only as an OCI
artifact:&lt;/p&gt;</description></item><item><title>nixos-anywhere on Hetzner</title><link>https://simonshine.dk/articles/nixos-anywhere-on-hetzner/</link><pubDate>Fri, 20 Feb 2026 00:55:22 +0100</pubDate><guid>https://simonshine.dk/articles/nixos-anywhere-on-hetzner/</guid><description>&lt;h2 id="tldr"&gt;
 tl;dr:
 &lt;a class="heading-anchor" href="#tldr" aria-label="Link to this section"&gt;&amp;para;&lt;/a&gt;
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I installed NixOS using &lt;a href="https://github.com/nix-community/nixos-anywhere"&gt;nixos-anywhere&lt;/a&gt; for the first time.&lt;/li&gt;
&lt;li&gt;Along the way I also finally tried (and succeeded) to use &lt;a href="https://github.com/nix-community/disko"&gt;disko&lt;/a&gt; and &lt;a href="https://github.com/serokell/deploy-rs"&gt;deploy-rs&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Deploying from MacBook&amp;rsquo;s aarch64-darwin to the VM&amp;rsquo;s x86-64 required a few tweaks.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tonight I wanted to try and run OpenClaw. I thought I would give it a persistent VM and that it
should run NixOS, of course. I already run several NixOS VMs in the cloud, but their deployment was
made with &lt;a href="https://github.com/apricote/hcloud-upload-image/"&gt;nixos-infect&lt;/a&gt;, which I promised myself I wouldn&amp;rsquo;t do again.&lt;/p&gt;</description></item></channel></rss>