<rss xmlns:source="http://source.scripting.com/" version="2.0">
  <channel>
    <title>Paul Tibbetts</title>
    <link>https://micro.paultibbetts.uk/</link>
    <description></description>
    
    <language>en</language>
    
    <lastBuildDate>Tue, 20 Jan 2026 11:07:29 +0000</lastBuildDate>
    <item>
      <title></title>
      <link>https://micro.paultibbetts.uk/2026/01/20/my-website-is-now-hosted.html</link>
      <pubDate>Tue, 20 Jan 2026 11:07:29 +0000</pubDate>
      
      <guid>http://paultibbetts.micro.blog/2026/01/20/my-website-is-now-hosted.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://paultibbetts.uk&#34;&gt;My website&lt;/a&gt; is now hosted on a Raspberry Pi 🎉&lt;/p&gt;
</description>
      <source:markdown>[My website](https://paultibbetts.uk) is now hosted on a Raspberry Pi 🎉
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://micro.paultibbetts.uk/2026/01/14/since-running-my-pangolin-on.html</link>
      <pubDate>Wed, 14 Jan 2026 11:50:32 +0000</pubDate>
      
      <guid>http://paultibbetts.micro.blog/2026/01/14/since-running-my-pangolin-on.html</guid>
      <description>&lt;p&gt;Since running my &lt;a href=&#34;https://paultibbetts.uk/2025/12/30/pangolin-on-a-pi/&#34;&gt;Pangolin on a Pi&lt;/a&gt; experiment my host has added&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This is a service aimed at hobbyists, and shouldn&amp;rsquo;t be used for nuclear power station command and control systems.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;to their &lt;a href=&#34;https://www.mythic-beasts.com/order/rpi/&#34;&gt;sign up page&lt;/a&gt; (&lt;a href=&#34;https://web.archive.org/web/20251112041130/https://www.mythic-beasts.com/order/rpi&#34;&gt;before&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m sure it&amp;rsquo;s a coincidence, but today I am moving Pangolin to a VPS.&lt;/p&gt;
</description>
      <source:markdown>Since running my [Pangolin on a Pi](https://paultibbetts.uk/2025/12/30/pangolin-on-a-pi/) experiment my host has added

&gt; This is a service aimed at hobbyists, and shouldn&#39;t be used for nuclear power station command and control systems. 

to their [sign up page](https://www.mythic-beasts.com/order/rpi/) ([before](https://web.archive.org/web/20251112041130/https://www.mythic-beasts.com/order/rpi)). 

I&#39;m sure it&#39;s a coincidence, but today I am moving Pangolin to a VPS.
</source:markdown>
    </item>
    
    <item>
      <title>HomeBox in my homelab installation notes</title>
      <link>https://micro.paultibbetts.uk/2026/01/11/homebox-in-my-homelab-installation.html</link>
      <pubDate>Sun, 11 Jan 2026 14:56:05 +0000</pubDate>
      
      <guid>http://paultibbetts.micro.blog/2026/01/11/homebox-in-my-homelab-installation.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://homebox.software/&#34;&gt;HomeBox&lt;/a&gt; is a self-hosted inventory management system that I&amp;rsquo;ve just installed into my homelab. This is a log of how I did it.&lt;/p&gt;
&lt;h2 id=&#34;architecture&#34;&gt;Architecture&lt;/h2&gt;
&lt;p&gt;HomeBox can run entirely independently using a SQLite database, the local file system for storage, and its own user system for authentication. However it can also use PostgreSQL, S3-compatible storage, and &lt;abbr title=&#34;OpenID Connect&#34;&gt;OIDC&lt;/abbr&gt; for auth.&lt;/p&gt;
&lt;p&gt;Since I have all of those things already running that&amp;rsquo;s how I set it up.&lt;/p&gt;
&lt;h2 id=&#34;install&#34;&gt;Install&lt;/h2&gt;
&lt;p&gt;The docs contain an &lt;a href=&#34;https://homebox.software/en/installation.html#docker-compose&#34;&gt;example Docker compose file&lt;/a&gt; so I started with that. I use Ansible to configure my virtual machines and have one dedicated to Docker Compose stacks, so in my code I created a new directory for HomeBox and added the example Docker Compose file.&lt;/p&gt;
&lt;p&gt;If I was using the default setup I could have stopped there but I&amp;rsquo;m using the extra things I mentioned above and each one of them needs a secret. Instead of writing the secrets as plain-text I used &lt;a href=&#34;https://docs.ansible.com/projects/ansible/latest/vault_guide/vault.html&#34;&gt;Ansible vault&lt;/a&gt; to encrypt a template file in my repo and then write that as &lt;code&gt;.env&lt;/code&gt; to the same directory as the compose file. Docker Compose will automatically read it and use its values when referenced in the &lt;code&gt;docker-compose.yaml&lt;/code&gt; file.&lt;/p&gt;
&lt;h2 id=&#34;database&#34;&gt;Database&lt;/h2&gt;
&lt;p&gt;I have a virtual machine dedicated to running Postgres and use the &lt;a href=&#34;https://github.com/geerlingguy/ansible-role-postgresql/&#34;&gt;geerlingguy/docker-role-postgresql&lt;/a&gt; role to configure it. In my &lt;code&gt;group_vars/postgres/main.yaml&lt;/code&gt; file I added lines for a new &lt;code&gt;homebox&lt;/code&gt; database and user to &lt;code&gt;postgresql_databases&lt;/code&gt;, &lt;code&gt;postgresql_users&lt;/code&gt; and &lt;code&gt;postgresql_hba_entries&lt;/code&gt;. The new &lt;code&gt;postgresql_user&lt;/code&gt; uses a password of &lt;code&gt;&amp;quot;{{ vault_homebox_database_password }}&amp;quot;&lt;/code&gt; so I created a new password and entered it into my &lt;code&gt;group_vars/postgres/vault.yaml&lt;/code&gt; file which is also encrypted with Ansible vault.&lt;/p&gt;
&lt;p&gt;To use it I added:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;- &lt;span style=&#34;color:#ae81ff&#34;&gt;HBOX_DATABASE_DRIVER=postgres&lt;/span&gt;
- &lt;span style=&#34;color:#ae81ff&#34;&gt;HBOX_DATABASE_HOST=postgres.infra.home.arpa&lt;/span&gt;
- &lt;span style=&#34;color:#ae81ff&#34;&gt;HBOX_DATABASE_PORT=5432&lt;/span&gt;
- &lt;span style=&#34;color:#ae81ff&#34;&gt;HBOX_DATABASE_USERNAME=homebox&lt;/span&gt;
- &lt;span style=&#34;color:#ae81ff&#34;&gt;HBOX_DATABASE_PASSWORD=${HBOX_DATABASE_PASSWORD}&lt;/span&gt;
- &lt;span style=&#34;color:#ae81ff&#34;&gt;HBOX_DATABASE_DATABASE=homebox&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;to the &lt;code&gt;environment&lt;/code&gt; part of the &lt;code&gt;docker-compose.yaml&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The role that sets up the Docker Compose stacks doesn&amp;rsquo;t read the values I set for the Postgres role, so I had to copy the password I used for the database into the encrypted file that creates the &lt;code&gt;.env&lt;/code&gt; for HomeBox. I now have that same password written twice, once for the database and once for HomeBox to use it.&lt;/p&gt;
&lt;h2 id=&#34;storage&#34;&gt;Storage&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;m currently running &lt;a href=&#34;https://www.min.io/&#34;&gt;MinIO&lt;/a&gt; on my &lt;a href=&#34;https://www.truenas.com/truenas-community-edition/&#34;&gt;TrueNAS Scale&lt;/a&gt; machine and I can use that for S3-compatible storage. I set it up before they changed their license and now migrating to an alternative is yet another thing on my TODO list.&lt;/p&gt;
&lt;p&gt;I created a new bucket by using the &lt;a href=&#34;https://minio.github.io/mc/&#34;&gt;mc&lt;/a&gt; CLI client to run:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;mc mb lab/homebox
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To use it I added:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;- &lt;span style=&#34;color:#ae81ff&#34;&gt;AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}&lt;/span&gt;
- &lt;span style=&#34;color:#ae81ff&#34;&gt;AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}&lt;/span&gt;
- &lt;span style=&#34;color:#ae81ff&#34;&gt;HBOX_STORAGE_CONN_STRING=s3://homebox?awssdk=v2&amp;amp;endpoint=http://&amp;lt;NAS_IP&amp;gt;:9000&amp;amp;disable_https=true&amp;amp;s3ForcePathStyle=true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;to the &lt;code&gt;environment&lt;/code&gt; part of my &lt;code&gt;docker-compose.yaml&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The &amp;ldquo;AWS&amp;rdquo; (Minio) values are also secrets added to the template that writes out the &lt;code&gt;.env&lt;/code&gt; file.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;HBOX_STORAGE_CONN_STRING&lt;/code&gt; value comes from the &lt;a href=&#34;https://homebox.software/en/configure/storage.html#tested-s3-compatible-storage&#34;&gt;HomeBox docs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Note to self: I should also set up &lt;code&gt;nas.infra.home.arpa&lt;/code&gt; like I did for Postgres.&lt;/p&gt;
&lt;h2 id=&#34;oidc&#34;&gt;OIDC&lt;/h2&gt;
&lt;p&gt;I have &lt;a href=&#34;https://kanidm.com/&#34;&gt;Kanidm&lt;/a&gt; set up as an &lt;abbr title=&#34;Identity Provider&#34;&gt;IdP&lt;/abbr&gt; and it can do OIDC for HomeBox to use for authentication.&lt;/p&gt;
&lt;p&gt;To create the client in Kanidm I ran:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;kanidm system oauth2 create homebox HomeBox &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://homebox.cloud.paultibbetts.uk&amp;#34;&lt;/span&gt;
kanidm group create homebox_users
kanidm group add-members homebox_users paul
kanidm system oauth2 update-scope-map homebox homebox_users openid profile email
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and to set the logo for it I ran:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;curl -o homebox.svg https://raw.githubusercontent.com/sysadminsmedia/homebox/refs/heads/main/docs/public/lilbox.svg
kanidm system oauth2 set-image homebox homebox.svg svg
rm homebox.svg
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The docker compose environment values to use Kanidm for OIDC are:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;- &lt;span style=&#34;color:#ae81ff&#34;&gt;HBOX_OPTIONS_HOSTNAME=homebox.cloud.paultibbetts.uk&lt;/span&gt;
- &lt;span style=&#34;color:#ae81ff&#34;&gt;HBOX_OIDC_ENABLED=true&lt;/span&gt;
- &lt;span style=&#34;color:#ae81ff&#34;&gt;HBOX_OIDC_ISSUER_URL=https://&amp;lt;kanidm_domain&amp;gt;/oauth2/openid/homebox&lt;/span&gt;
- &lt;span style=&#34;color:#ae81ff&#34;&gt;HBOX_OIDC_CLIENT_ID=homebox&lt;/span&gt;
- &lt;span style=&#34;color:#ae81ff&#34;&gt;HBOX_OIDC_CLIENT_SECRET=${HBOX_OIDC_CLIENT_SECRET}&lt;/span&gt;
- &lt;span style=&#34;color:#ae81ff&#34;&gt;HBOX_OPTIONS_TRUST_PROXY=true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;where &lt;code&gt;HBOX_OIDCD_CLIENT_SECRET&lt;/code&gt; is another secret added to the &lt;code&gt;.env&lt;/code&gt; template.&lt;/p&gt;
&lt;h2 id=&#34;dns&#34;&gt;DNS&lt;/h2&gt;
&lt;p&gt;I use &lt;a href=&#34;https://pi-hole.net/&#34;&gt;Pi-hole&lt;/a&gt; for ad-blocking and custom DNS records in my homelab.&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t yet have an automated way to configure it, so I did it using the web UI, and wrote another reminder to automate this process.&lt;/p&gt;
&lt;p&gt;I have an A record for the reverse proxy I use so I created a CNAME for HomeBox that points &lt;code&gt;homebox.cloud.paultibbetts.uk&lt;/code&gt; to the reverse proxy.&lt;/p&gt;
&lt;p&gt;I could set up an A record for HomeBox but that would mean writing out the IP of the reverse proxy, whereas using a CNAME means I can enter its domain, which is easier to remember than numbers. It also means I could move the reverse proxy to another server and I would only need to update the A record for it and all the things pointing to it with CNAMEs would still work.&lt;/p&gt;
&lt;h2 id=&#34;reverse-proxy&#34;&gt;Reverse proxy&lt;/h2&gt;
&lt;p&gt;I use &lt;a href=&#34;https://caddyserver.com/&#34;&gt;Caddy&lt;/a&gt; as a reverse proxy. This is configured by an Ansible role. Well it should be, I left all the tasks in the playbook but I only use it once in this one playbook so it doesn&amp;rsquo;t need to be.&lt;/p&gt;
&lt;p&gt;The Caddyfile that configures all my virtual hosts is a template that Ansible writes out. I use &lt;a href=&#34;https://caddyserver.com/docs/automatic-https#dns-challenge&#34;&gt;Cloudflare&amp;rsquo;s DNS challenge&lt;/a&gt; when Caddy requests TLS certificates from Lets Encrypt and that needs a token for Cloudflare so I use an Ansible template file so I can encrypt the token using Ansible vault. I use the DNS challenge because my homelab isn&amp;rsquo;t on the internet so it&amp;rsquo;s not accessible to Lets Encrypt when it tries to do the regular HTTP challenge.&lt;/p&gt;
&lt;p&gt;For HomeBox I added:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;https://homebox.cloud.paultibbetts.uk {
  reverse_proxy apps.infra.home.arpa:3100
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;where &lt;code&gt;apps.infra.home.arpa&lt;/code&gt; is an A record for the VM with Docker Compose running HomeBox. The &lt;code&gt;3100&lt;/code&gt; port was defined earlier in the Docker Compose yaml file:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:
  - &lt;span style=&#34;color:#ae81ff&#34;&gt;3100&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;7745&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;deploy&#34;&gt;Deploy&lt;/h2&gt;
&lt;p&gt;To deploy I ran the &lt;code&gt;apps.yaml&lt;/code&gt; playbook to write the &lt;code&gt;docker-compose.yaml&lt;/code&gt; file and the &lt;code&gt;.env&lt;/code&gt; file that contains all the secrets. This also runs &lt;code&gt;docker compose up -d&lt;/code&gt; so the stack is up and running by the end of it.&lt;/p&gt;
&lt;p&gt;To add the virtual host to Caddy I ran my &lt;code&gt;ingress.yaml&lt;/code&gt; playbook that configures Caddy.&lt;/p&gt;
&lt;p&gt;Because this is my writeup I can pretend it all worked perfectly the first time and I definitely didn&amp;rsquo;t have a typo in my domain.&lt;/p&gt;
&lt;h2 id=&#34;initial-test&#34;&gt;Initial test&lt;/h2&gt;
&lt;p&gt;I registered a user account using my email and set a password, just in case. I then logged out and tried again using OIDC and it logged me into the same account - this is because my email in Kanidm is the same one I used when registering. Some apps make separate accounts when logging in using a password or with OIDC but I like this approach more.&lt;/p&gt;
&lt;p&gt;HomeBox doesn&amp;rsquo;t have a super user, it uses a multi-tenant setup where everyone gets their own inventory and you have to invite others to access yours. I haven&amp;rsquo;t tried this yet. I might not ever need it - I don&amp;rsquo;t want anyone else seeing how many unused cables I refuse to throw away.&lt;/p&gt;
&lt;p&gt;Creating my account proved the database worked ✅, and logging in with Kanidm proved OIDC worked ✅, so I created an item in HomeBox and uploaded a photo and that proved the storage with MinIO worked ✅.&lt;/p&gt;</description>
      <source:markdown>[HomeBox](https://homebox.software/) is a self-hosted inventory management system that I&#39;ve just installed into my homelab. This is a log of how I did it.

&lt;!--more--&gt;

## Architecture

HomeBox can run entirely independently using a SQLite database, the local file system for storage, and its own user system for authentication. However it can also use PostgreSQL, S3-compatible storage, and &lt;abbr title=&#34;OpenID Connect&#34;&gt;OIDC&lt;/abbr&gt; for auth. 

Since I have all of those things already running that&#39;s how I set it up.

## Install

The docs contain an [example Docker compose file](https://homebox.software/en/installation.html#docker-compose) so I started with that. I use Ansible to configure my virtual machines and have one dedicated to Docker Compose stacks, so in my code I created a new directory for HomeBox and added the example Docker Compose file.

If I was using the default setup I could have stopped there but I&#39;m using the extra things I mentioned above and each one of them needs a secret. Instead of writing the secrets as plain-text I used [Ansible vault](https://docs.ansible.com/projects/ansible/latest/vault_guide/vault.html) to encrypt a template file in my repo and then write that as `.env` to the same directory as the compose file. Docker Compose will automatically read it and use its values when referenced in the `docker-compose.yaml` file.

## Database

I have a virtual machine dedicated to running Postgres and use the [geerlingguy/docker-role-postgresql](https://github.com/geerlingguy/ansible-role-postgresql/) role to configure it. In my `group_vars/postgres/main.yaml` file I added lines for a new `homebox` database and user to `postgresql_databases`, `postgresql_users` and `postgresql_hba_entries`. The new `postgresql_user` uses a password of `&#34;{{ vault_homebox_database_password }}&#34;` so I created a new password and entered it into my `group_vars/postgres/vault.yaml` file which is also encrypted with Ansible vault.

To use it I added:
```yaml
- HBOX_DATABASE_DRIVER=postgres
- HBOX_DATABASE_HOST=postgres.infra.home.arpa
- HBOX_DATABASE_PORT=5432
- HBOX_DATABASE_USERNAME=homebox
- HBOX_DATABASE_PASSWORD=${HBOX_DATABASE_PASSWORD}
- HBOX_DATABASE_DATABASE=homebox
```
to the `environment` part of the `docker-compose.yaml`. 

The role that sets up the Docker Compose stacks doesn&#39;t read the values I set for the Postgres role, so I had to copy the password I used for the database into the encrypted file that creates the `.env` for HomeBox. I now have that same password written twice, once for the database and once for HomeBox to use it.

## Storage

I&#39;m currently running [MinIO](https://www.min.io/) on my [TrueNAS Scale](https://www.truenas.com/truenas-community-edition/) machine and I can use that for S3-compatible storage. I set it up before they changed their license and now migrating to an alternative is yet another thing on my TODO list.

I created a new bucket by using the [mc](https://minio.github.io/mc/) CLI client to run:
```sh
mc mb lab/homebox
```

To use it I added:
```yaml
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
- HBOX_STORAGE_CONN_STRING=s3://homebox?awssdk=v2&amp;endpoint=http://&lt;NAS_IP&gt;:9000&amp;disable_https=true&amp;s3ForcePathStyle=true
```
to the `environment` part of my `docker-compose.yaml`.

The &#34;AWS&#34; (Minio) values are also secrets added to the template that writes out the `.env` file.

The `HBOX_STORAGE_CONN_STRING` value comes from the [HomeBox docs](https://homebox.software/en/configure/storage.html#tested-s3-compatible-storage).

Note to self: I should also set up `nas.infra.home.arpa` like I did for Postgres.

## OIDC

I have [Kanidm](https://kanidm.com/) set up as an &lt;abbr title=&#34;Identity Provider&#34;&gt;IdP&lt;/abbr&gt; and it can do OIDC for HomeBox to use for authentication.

To create the client in Kanidm I ran:

```sh
kanidm system oauth2 create homebox HomeBox &#34;https://homebox.cloud.paultibbetts.uk&#34;
kanidm group create homebox_users
kanidm group add-members homebox_users paul
kanidm system oauth2 update-scope-map homebox homebox_users openid profile email
```

and to set the logo for it I ran:

```sh
curl -o homebox.svg https://raw.githubusercontent.com/sysadminsmedia/homebox/refs/heads/main/docs/public/lilbox.svg
kanidm system oauth2 set-image homebox homebox.svg svg
rm homebox.svg
```

The docker compose environment values to use Kanidm for OIDC are:

```yaml
- HBOX_OPTIONS_HOSTNAME=homebox.cloud.paultibbetts.uk
- HBOX_OIDC_ENABLED=true
- HBOX_OIDC_ISSUER_URL=https://&lt;kanidm_domain&gt;/oauth2/openid/homebox
- HBOX_OIDC_CLIENT_ID=homebox
- HBOX_OIDC_CLIENT_SECRET=${HBOX_OIDC_CLIENT_SECRET}
- HBOX_OPTIONS_TRUST_PROXY=true
```

where `HBOX_OIDCD_CLIENT_SECRET` is another secret added to the `.env` template.

## DNS

I use [Pi-hole](https://pi-hole.net/) for ad-blocking and custom DNS records in my homelab.

I don&#39;t yet have an automated way to configure it, so I did it using the web UI, and wrote another reminder to automate this process.

I have an A record for the reverse proxy I use so I created a CNAME for HomeBox that points `homebox.cloud.paultibbetts.uk` to the reverse proxy.

I could set up an A record for HomeBox but that would mean writing out the IP of the reverse proxy, whereas using a CNAME means I can enter its domain, which is easier to remember than numbers. It also means I could move the reverse proxy to another server and I would only need to update the A record for it and all the things pointing to it with CNAMEs would still work.

## Reverse proxy

I use [Caddy](https://caddyserver.com/) as a reverse proxy. This is configured by an Ansible role. Well it should be, I left all the tasks in the playbook but I only use it once in this one playbook so it doesn&#39;t need to be.

The Caddyfile that configures all my virtual hosts is a template that Ansible writes out. I use [Cloudflare&#39;s DNS challenge](https://caddyserver.com/docs/automatic-https#dns-challenge) when Caddy requests TLS certificates from Lets Encrypt and that needs a token for Cloudflare so I use an Ansible template file so I can encrypt the token using Ansible vault. I use the DNS challenge because my homelab isn&#39;t on the internet so it&#39;s not accessible to Lets Encrypt when it tries to do the regular HTTP challenge.

For HomeBox I added:
```
https://homebox.cloud.paultibbetts.uk {
  reverse_proxy apps.infra.home.arpa:3100
}
```

where `apps.infra.home.arpa` is an A record for the VM with Docker Compose running HomeBox. The `3100` port was defined earlier in the Docker Compose yaml file:

```yaml
ports:
  - 3100:7745
```

## Deploy

To deploy I ran the `apps.yaml` playbook to write the `docker-compose.yaml` file and the `.env` file that contains all the secrets. This also runs `docker compose up -d` so the stack is up and running by the end of it.

To add the virtual host to Caddy I ran my `ingress.yaml` playbook that configures Caddy.

Because this is my writeup I can pretend it all worked perfectly the first time and I definitely didn&#39;t have a typo in my domain.

## Initial test

I registered a user account using my email and set a password, just in case. I then logged out and tried again using OIDC and it logged me into the same account - this is because my email in Kanidm is the same one I used when registering. Some apps make separate accounts when logging in using a password or with OIDC but I like this approach more.

HomeBox doesn&#39;t have a super user, it uses a multi-tenant setup where everyone gets their own inventory and you have to invite others to access yours. I haven&#39;t tried this yet. I might not ever need it - I don&#39;t want anyone else seeing how many unused cables I refuse to throw away.

Creating my account proved the database worked ✅, and logging in with Kanidm proved OIDC worked ✅, so I created an item in HomeBox and uploaded a photo and that proved the storage with MinIO worked ✅.
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://micro.paultibbetts.uk/2026/01/08/adam-wathan-creator-of-tailwind.html</link>
      <pubDate>Thu, 08 Jan 2026 11:22:56 +0000</pubDate>
      
      <guid>http://paultibbetts.micro.blog/2026/01/08/adam-wathan-creator-of-tailwind.html</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/tailwindlabs/tailwindcss/discussions/14677#discussioncomment-15435530&#34;&gt;Adam Wathan&lt;/a&gt;, creator of Tailwind CSS:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;had to lay off most of the team on Monday because AI has gutted our business so badly&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ouch.&lt;/p&gt;
&lt;p&gt;More details in his &lt;a href=&#34;https://x.com/adamwathan/status/2008909129591443925&#34;&gt;morning walk podcast&lt;/a&gt;: Tailwind is more popular than ever but visits to the docs, where they advertise paid services, is down 40%.&lt;/p&gt;
</description>
      <source:markdown>[Adam Wathan](https://github.com/tailwindlabs/tailwindcss/discussions/14677#discussioncomment-15435530), creator of Tailwind CSS:

&gt; had to lay off most of the team on Monday because AI has gutted our business so badly

Ouch. 

More details in his [morning walk podcast](https://x.com/adamwathan/status/2008909129591443925): Tailwind is more popular than ever but visits to the docs, where they advertise paid services, is down 40%.
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://micro.paultibbetts.uk/2026/01/06/trying-to-close-all-my.html</link>
      <pubDate>Tue, 06 Jan 2026 12:20:13 +0000</pubDate>
      
      <guid>http://paultibbetts.micro.blog/2026/01/06/trying-to-close-all-my.html</guid>
      <description>&lt;p&gt;Trying to close all my browser tabs is like fighting a hydra.&lt;/p&gt;
</description>
      <source:markdown>Trying to close all my browser tabs is like fighting a hydra. 
</source:markdown>
    </item>
    
    <item>
      <title>How to play The Beginner&#39;s Guide on a modern computer</title>
      <link>https://micro.paultibbetts.uk/2025/12/31/how-to-play-the-beginners.html</link>
      <pubDate>Wed, 31 Dec 2025 14:49:39 +0000</pubDate>
      
      <guid>http://paultibbetts.micro.blog/2025/12/31/how-to-play-the-beginners.html</guid>
      <description>&lt;p&gt;For a game about the game development process I find it kind of fitting you need to run obscure commands from the internet to get it to work on a modern computer.&lt;/p&gt;
&lt;p&gt;Without them, you can&amp;rsquo;t play the game at all. This feels intentional, like a puzzle that exists before the game even starts, and is almost impossible to solve.&lt;/p&gt;
&lt;p&gt;The solution is pretty easy once you know it, you reduce how hard the machine is allowed to work, and is a reference to how we should slow ourselves down to better appreciate things.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://images.unsplash.com/photo-1618944087986-2a78922c8412?q=80&amp;amp;w=1528&amp;amp;auto=format&amp;amp;fit=crop&amp;amp;ixlib=rb-4.1.0&amp;amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&#34; alt=&#34;lamppost&#34; title=&#34;...&#34;&gt;&lt;/p&gt;
&lt;p&gt;When you&amp;rsquo;re ready to play, this is how you do it:&lt;/p&gt;
&lt;h2 id=&#34;windows-11&#34;&gt;Windows 11&lt;/h2&gt;
&lt;p&gt;Press &lt;code&gt;Windows&lt;/code&gt; + &lt;code&gt;R&lt;/code&gt; to open the Run dialog.&lt;/p&gt;
&lt;p&gt;Type in &lt;code&gt;msconfig&lt;/code&gt; and click &amp;ldquo;OK&amp;rdquo;. This opens &amp;ldquo;System Configuration&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Select the &amp;ldquo;Boot&amp;rdquo; tab.&lt;/p&gt;
&lt;p&gt;Click &amp;ldquo;Advanced Options…&amp;rdquo;&lt;/p&gt;
&lt;p&gt;In the new popup window check the &amp;ldquo;Number of processors&amp;rdquo; box and from the dropdown choose &amp;ldquo;8&amp;rdquo;, then click &amp;ldquo;OK&amp;rdquo; to close this window.&lt;/p&gt;
&lt;p&gt;Now click &amp;ldquo;Apply&amp;rdquo; and then &amp;ldquo;OK&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;You must restart your computer for this to take effect. Afterwards the game should start without crashing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Remember to undo this after playing the game&lt;/strong&gt; as this fix has temporarily lowered the performance of your computer. It is not permanent and will not cause any damage, but you will struggle running as many apps and tabs in your browser while you have the fix applied.&lt;/p&gt;
&lt;h2 id=&#34;linux&#34;&gt;Linux&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s a lot easier to do this in Linux. You don&amp;rsquo;t need to reboot after, you can limit the change to apply only to The Beginner&amp;rsquo;s Guide, not the rest of your system, and you don&amp;rsquo;t need to remember to turn it off after.&lt;/p&gt;
&lt;h3 id=&#34;wineproton&#34;&gt;Wine/Proton&lt;/h3&gt;
&lt;p&gt;Use the &lt;code&gt;WINE_CPU_TOPOLOGY&lt;/code&gt; environment variable to limit the processors to 8:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;WINE_CPU_TOPOLOGY=8:0,1,2,3,4,5,6,7
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;steam&#34;&gt;Steam&lt;/h3&gt;
&lt;p&gt;In Steam right click the game and choose &amp;ldquo;Properties&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;In &amp;ldquo;General&amp;rdquo; for the &amp;ldquo;Launch Options&amp;rdquo; use&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;WINE_CPU_TOPOLOGY=8:0,1,2,3,4,5,6,7 %command%
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;other-launchers&#34;&gt;Other launchers&lt;/h3&gt;
&lt;p&gt;Steam is the only launcher I&amp;rsquo;ve tested this on.&lt;/p&gt;
&lt;p&gt;For Lutris, Heroic or Bottles you need to set an environment variable using that launcher&amp;rsquo;s config for the game.&lt;/p&gt;
&lt;h2 id=&#34;credits&#34;&gt;Credits&lt;/h2&gt;
&lt;p&gt;Thanks to &lt;a href=&#34;https://unsplash.com/photos/black-street-light-under-blue-sky-gtQEUHhMCK8&#34;&gt;Adam Eperjesi&lt;/a&gt; for the Unsplash image, &lt;a href=&#34;https://gameplay.tips/guides/the-beginners-guide-game-crashing-fix.html&#34;&gt;Gameplay.tips&lt;/a&gt; for the Windows guide, &lt;a href=&#34;https://steamcommunity.com/app/303210/discussions/0/3772364735644808241/#c4347733139652152557&#34;&gt;fleakuda&lt;/a&gt; for linking to it, and everyone who contributes to &lt;a href=&#34;https://www.protondb.com/&#34;&gt;ProtonDB&lt;/a&gt;, especially &lt;a href=&#34;https://www.protondb.com/app/303210#0l18q-LYdZ&#34;&gt;ShatteredScales&lt;/a&gt; for the Wine environment variable.&lt;/p&gt;</description>
      <source:markdown>For a game about the game development process I find it kind of fitting you need to run obscure commands from the internet to get it to work on a modern computer.

Without them, you can&#39;t play the game at all. This feels intentional, like a puzzle that exists before the game even starts, and is almost impossible to solve.

The solution is pretty easy once you know it, you reduce how hard the machine is allowed to work, and is a reference to how we should slow ourselves down to better appreciate things.

![lamppost](https://images.unsplash.com/photo-1618944087986-2a78922c8412?q=80&amp;w=1528&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D &#34;...&#34;)

When you&#39;re ready to play, this is how you do it:

&lt;!--more--&gt;

## Windows 11

Press `Windows` + `R` to open the Run dialog.

Type in `msconfig` and click &#34;OK&#34;. This opens &#34;System Configuration&#34;.

Select the &#34;Boot&#34; tab.

Click &#34;Advanced Options…&#34;

In the new popup window check the &#34;Number of processors&#34; box and from the dropdown choose &#34;8&#34;, then click &#34;OK&#34; to close this window.

Now click &#34;Apply&#34; and then &#34;OK&#34;.

You must restart your computer for this to take effect. Afterwards the game should start without crashing.

**Remember to undo this after playing the game** as this fix has temporarily lowered the performance of your computer. It is not permanent and will not cause any damage, but you will struggle running as many apps and tabs in your browser while you have the fix applied.

## Linux

It&#39;s a lot easier to do this in Linux. You don&#39;t need to reboot after, you can limit the change to apply only to The Beginner&#39;s Guide, not the rest of your system, and you don&#39;t need to remember to turn it off after.

### Wine/Proton

Use the `WINE_CPU_TOPOLOGY` environment variable to limit the processors to 8:

```
WINE_CPU_TOPOLOGY=8:0,1,2,3,4,5,6,7
```
### Steam

In Steam right click the game and choose &#34;Properties&#34;. 

In &#34;General&#34; for the &#34;Launch Options&#34; use 

```
WINE_CPU_TOPOLOGY=8:0,1,2,3,4,5,6,7 %command%
```
### Other launchers

Steam is the only launcher I&#39;ve tested this on.

For Lutris, Heroic or Bottles you need to set an environment variable using that launcher&#39;s config for the game.

## Credits

Thanks to [Adam Eperjesi](https://unsplash.com/photos/black-street-light-under-blue-sky-gtQEUHhMCK8) for the Unsplash image, [Gameplay.tips](https://gameplay.tips/guides/the-beginners-guide-game-crashing-fix.html) for the Windows guide, [fleakuda](https://steamcommunity.com/app/303210/discussions/0/3772364735644808241/#c4347733139652152557) for linking to it, and everyone who contributes to [ProtonDB](https://www.protondb.com/), especially [ShatteredScales](https://www.protondb.com/app/303210#0l18q-LYdZ) for the Wine environment variable.
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://micro.paultibbetts.uk/2025/12/30/i-tried-to-turn-pangolin.html</link>
      <pubDate>Tue, 30 Dec 2025 20:12:49 +0000</pubDate>
      
      <guid>http://paultibbetts.micro.blog/2025/12/30/i-tried-to-turn-pangolin.html</guid>
      <description>&lt;p&gt;I tried to turn &lt;a href=&#34;https://paultibbetts.uk/2025/12/30/pangolin-on-a-pi/&#34;&gt;Pangolin on a Pi&lt;/a&gt; into a guide. It didn&amp;rsquo;t want to be one.&lt;/p&gt;
</description>
      <source:markdown>I tried to turn [Pangolin on a Pi](https://paultibbetts.uk/2025/12/30/pangolin-on-a-pi/) into a guide. It didn&#39;t want to be one.
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://micro.paultibbetts.uk/2025/12/28/spent-yesterday-dealing-with-a.html</link>
      <pubDate>Sun, 28 Dec 2025 11:12:58 +0000</pubDate>
      
      <guid>http://paultibbetts.micro.blog/2025/12/28/spent-yesterday-dealing-with-a.html</guid>
      <description>&lt;p&gt;Spent yesterday dealing with a homelab problem I had baked into a VM template a year ago.&lt;/p&gt;
&lt;p&gt;Makes me wonder what other bugs I&amp;rsquo;ve created and haven&amp;rsquo;t found yet.&lt;/p&gt;
</description>
      <source:markdown>Spent yesterday dealing with a homelab problem I had baked into a VM template a year ago.

Makes me wonder what other bugs I&#39;ve created and haven&#39;t found yet.
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://micro.paultibbetts.uk/2025/09/26/heading-to-alpkits-big-shakeout.html</link>
      <pubDate>Fri, 26 Sep 2025 14:09:18 +0000</pubDate>
      
      <guid>http://paultibbetts.micro.blog/2025/09/26/heading-to-alpkits-big-shakeout.html</guid>
      <description>&lt;p&gt;Heading to Alpkit’s &lt;a href=&#34;https://alpkit.com/pages/bigshakeout&#34;&gt;Big Shakeout Festival&lt;/a&gt; for the weekend.&lt;/p&gt;
</description>
      <source:markdown>Heading to Alpkit’s [Big Shakeout Festival](https://alpkit.com/pages/bigshakeout) for the weekend. 
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://micro.paultibbetts.uk/2025/08/13/two-weeks-of-rest-and.html</link>
      <pubDate>Wed, 13 Aug 2025 12:37:44 +0000</pubDate>
      
      <guid>http://paultibbetts.micro.blog/2025/08/13/two-weeks-of-rest-and.html</guid>
      <description>&lt;p&gt;Two weeks of rest and I&amp;rsquo;m recovered from my trip. Time to swap back to my nerd blog and do some computer stuff.&lt;/p&gt;
</description>
      <source:markdown>Two weeks of rest and I&#39;m recovered from my trip. Time to swap back to my nerd blog and do some computer stuff.
</source:markdown>
    </item>
    
    <item>
      <title>Checking in with my homelab after leaving it for a month</title>
      <link>https://micro.paultibbetts.uk/2025/08/13/checking-in-with-my-homelab.html</link>
      <pubDate>Wed, 13 Aug 2025 12:36:00 +0000</pubDate>
      
      <guid>http://paultibbetts.micro.blog/2025/08/13/checking-in-with-my-homelab.html</guid>
      <description>&lt;p&gt;I recently had the pleasure of going outside and touching some grass, which means I haven&amp;rsquo;t worked on my homelab for about a month, and now I&amp;rsquo;m catching up.&lt;/p&gt;
&lt;h2 id=&#34;i-didnt-need-to-use-it&#34;&gt;I didn&amp;rsquo;t need to use it&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;m not running that many apps or services right now but it was still interesting to realise I didn&amp;rsquo;t need to use it whilst I was away. I went hiking and camping for 9 days and didn&amp;rsquo;t even think about computers, which was nice, and when I got back I was recovering and still didn&amp;rsquo;t use it.&lt;/p&gt;
&lt;p&gt;It turns out my homelab is an indoors-only sort of thing.&lt;/p&gt;
&lt;h2 id=&#34;it-all-worked-fine&#34;&gt;It all worked fine&lt;/h2&gt;
&lt;p&gt;The one app I did use was &lt;a href=&#34;https://www.freshrss.org/&#34;&gt;FreshRSS&lt;/a&gt;, which syncs my RSS feeds with &lt;a href=&#34;https://netnewswire.com/&#34;&gt;NetNewsWire&lt;/a&gt; on my phone and my laptop. The few times I used it I had new content to read, although I have that many unread articles I would have been fine if it had stopped working.&lt;/p&gt;
&lt;p&gt;To use FreshRSS I had to be connected to my Wireguard VPN, so that also worked.&lt;/p&gt;
&lt;h2 id=&#34;my-monitoring-failed&#34;&gt;My monitoring failed&lt;/h2&gt;
&lt;p&gt;One thing that didn&amp;rsquo;t work was my monitoring setup.&lt;/p&gt;
&lt;p&gt;Whilst I was away there was a brief power-cut to my homelab and all of my machines turned off. When the power came back they all turned on and resumed normal functions, except my Raspberry Pi.&lt;/p&gt;
&lt;p&gt;This Raspberry Pi runs &lt;a href=&#34;https://github.com/louislam/uptime-kuma&#34;&gt;Uptime Kuma&lt;/a&gt;, for monitoring apps and services, as well as &lt;a href=&#34;https://www.beszel.dev/&#34;&gt;Beszel&lt;/a&gt;, for monitoring servers. I&amp;rsquo;m using an &lt;a href=&#34;https://argon40.com/products/argon-one-m-2-expansion-board-nvme?pr_prod_strat=e5_desc&amp;amp;pr_rec_id=5175427e9&amp;amp;pr_rec_pid=6824727707713&amp;amp;pr_ref_pid=6740406796353&amp;amp;pr_seq=uniform&#34;&gt;Argon One NVME case&lt;/a&gt; and I hadn&amp;rsquo;t set it to turn on when it receives power, so the Pi stayed off, and even though all of my services started working again I wasn&amp;rsquo;t told about it.&lt;/p&gt;
&lt;p&gt;The immediate fix was to &lt;a href=&#34;https://micro.paultibbetts.uk/2025/08/13/how-to-set-the-argon.html&#34;&gt;set the Argon One NVME case to turn on the Raspberry Pi 4 when it receives power&lt;/a&gt;, but in the long-term I might need to rethink my monitoring setup.&lt;/p&gt;
&lt;h2 id=&#34;theres-been-lots-of-updates&#34;&gt;There&amp;rsquo;s been lots of updates&lt;/h2&gt;
&lt;p&gt;Before I went away I set up &lt;a href=&#34;https://docs.renovatebot.com/&#34;&gt;Renovate&lt;/a&gt; to track the dependencies in my homelab repo and send me pull requests when there are updates available. Now I&amp;rsquo;m back I can see it has maxed out at (the default) 10 updates and is waiting for me to review them before continuing.&lt;/p&gt;
&lt;p&gt;I like this way of doing updates, it&amp;rsquo;s much easier than manually checking everything every time.&lt;/p&gt;
&lt;h2 id=&#34;is-it-ready-yet&#34;&gt;&amp;ldquo;Is it ready yet?&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;My &lt;a href=&#34;https://micro.paultibbetts.uk/categories/pangolin-on-a-pi&#34;&gt;Pangolin on a Pi&lt;/a&gt; project stalled whilst I was away. This was meant to give friends and family easier access to the apps and services I&amp;rsquo;m running.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://mealie.io/&#34;&gt;Mealie&lt;/a&gt; is the main app being used, but a close second now is &lt;a href=&#34;https://homebox.software/en/&#34;&gt;Homebox&lt;/a&gt;, which is for inventory management.&lt;/p&gt;
&lt;p&gt;I guess now I&amp;rsquo;ve recovered and my brain power&amp;rsquo;s been restored I&amp;rsquo;ll have to finish this.&lt;/p&gt;</description>
      <source:markdown>I recently had the pleasure of going outside and touching some grass, which means I haven&#39;t worked on my homelab for about a month, and now I&#39;m catching up.

&lt;!--more--&gt;

## I didn&#39;t need to use it

I&#39;m not running that many apps or services right now but it was still interesting to realise I didn&#39;t need to use it whilst I was away. I went hiking and camping for 9 days and didn&#39;t even think about computers, which was nice, and when I got back I was recovering and still didn&#39;t use it.

It turns out my homelab is an indoors-only sort of thing.

## It all worked fine

The one app I did use was [FreshRSS](https://www.freshrss.org/), which syncs my RSS feeds with [NetNewsWire](https://netnewswire.com/) on my phone and my laptop. The few times I used it I had new content to read, although I have that many unread articles I would have been fine if it had stopped working.

To use FreshRSS I had to be connected to my Wireguard VPN, so that also worked.

## My monitoring failed

One thing that didn&#39;t work was my monitoring setup.

Whilst I was away there was a brief power-cut to my homelab and all of my machines turned off. When the power came back they all turned on and resumed normal functions, except my Raspberry Pi. 

This Raspberry Pi runs [Uptime Kuma](https://github.com/louislam/uptime-kuma), for monitoring apps and services, as well as [Beszel](https://www.beszel.dev/), for monitoring servers. I&#39;m using an [Argon One NVME case](https://argon40.com/products/argon-one-m-2-expansion-board-nvme?pr_prod_strat=e5_desc&amp;pr_rec_id=5175427e9&amp;pr_rec_pid=6824727707713&amp;pr_ref_pid=6740406796353&amp;pr_seq=uniform) and I hadn&#39;t set it to turn on when it receives power, so the Pi stayed off, and even though all of my services started working again I wasn&#39;t told about it.

The immediate fix was to [set the Argon One NVME case to turn on the Raspberry Pi 4 when it receives power](https://micro.paultibbetts.uk/2025/08/13/how-to-set-the-argon.html), but in the long-term I might need to rethink my monitoring setup.

## There&#39;s been lots of updates

Before I went away I set up [Renovate](https://docs.renovatebot.com/) to track the dependencies in my homelab repo and send me pull requests when there are updates available. Now I&#39;m back I can see it has maxed out at (the default) 10 updates and is waiting for me to review them before continuing.

I like this way of doing updates, it&#39;s much easier than manually checking everything every time.

## &#34;Is it ready yet?&#34;

My [Pangolin on a Pi](https://micro.paultibbetts.uk/categories/pangolin-on-a-pi) project stalled whilst I was away. This was meant to give friends and family easier access to the apps and services I&#39;m running.

[Mealie](https://mealie.io/) is the main app being used, but a close second now is [Homebox](https://homebox.software/en/), which is for inventory management.

I guess now I&#39;ve recovered and my brain power&#39;s been restored I&#39;ll have to finish this.
</source:markdown>
    </item>
    
    <item>
      <title>How to set the Argon One NVME case to turn on Raspberry Pi when it receives power</title>
      <link>https://micro.paultibbetts.uk/2025/08/13/how-to-set-the-argon.html</link>
      <pubDate>Wed, 13 Aug 2025 12:19:00 +0000</pubDate>
      
      <guid>http://paultibbetts.micro.blog/2025/08/13/how-to-set-the-argon.html</guid>
      <description>&lt;p&gt;We don&amp;rsquo;t get many power-cuts where I live but that doesn&amp;rsquo;t mean they never happen.&lt;/p&gt;
&lt;p&gt;My monitoring apps are installed on a Raspberry Pi 4 which lives in an &lt;a href=&#34;https://argon40.com/en-gb/products/argon-one-m-2-expansion-board&#34;&gt;Argon One NVME case&lt;/a&gt; and by default &lt;strong&gt;it does not turn on when it receives power, you have to move the jumper pin&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;the-jumper-pin&#34;&gt;The Jumper Pin&lt;/h2&gt;
&lt;p&gt;You can find the instructions for the jumper pin on pages 6 and 7 of &lt;a href=&#34;https://argon40.com/blogs/argon-resources/argon-one-m-2-case-installation-guide&#34;&gt;the manual&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;By default it connects pins 1 and 2 and this means you need to press the power button to turn on the Raspberry Pi.&lt;/p&gt;
&lt;p&gt;To change it to turn on the Pi when it receives power you need to move it to pins 2 and 3.&lt;/p&gt;
&lt;img src=&#34;https://eu.uploads.micro.blog/163170/2025/img-5440.jpg&#34; alt=&#34;Photo showing the location of the jumper pin in the correct position&#34;&gt;
</description>
      <source:markdown>We don&#39;t get many power-cuts where I live but that doesn&#39;t mean they never happen.

My monitoring apps are installed on a Raspberry Pi 4 which lives in an [Argon One NVME case](https://argon40.com/en-gb/products/argon-one-m-2-expansion-board) and by default **it does not turn on when it receives power, you have to move the jumper pin**.

## The Jumper Pin

You can find the instructions for the jumper pin on pages 6 and 7 of [the manual](https://argon40.com/blogs/argon-resources/argon-one-m-2-case-installation-guide).

By default it connects pins 1 and 2 and this means you need to press the power button to turn on the Raspberry Pi.

To change it to turn on the Pi when it receives power you need to move it to pins 2 and 3.

&lt;img src=&#34;https://eu.uploads.micro.blog/163170/2025/img-5440.jpg&#34; alt=&#34;Photo showing the location of the jumper pin in the correct position&#34;&gt;
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://micro.paultibbetts.uk/2025/07/28/geneva-manchester.html</link>
      <pubDate>Mon, 28 Jul 2025 16:49:00 +0000</pubDate>
      
      <guid>http://paultibbetts.micro.blog/2025/07/28/geneva-manchester.html</guid>
      <description>&lt;p&gt;Geneva ✈️ Manchester&lt;/p&gt;
&lt;img src=&#34;https://eu.uploads.micro.blog/163170/2025/img-5384.jpg&#34; alt=&#34;Auto-generated description: An airplane wing with orange accents is visible against a backdrop of blue sky and white clouds.&#34;&gt;
</description>
      <source:markdown>Geneva ✈️ Manchester

&lt;img src=&#34;https://eu.uploads.micro.blog/163170/2025/img-5384.jpg&#34; alt=&#34;Auto-generated description: An airplane wing with orange accents is visible against a backdrop of blue sky and white clouds.&#34;&gt;
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://micro.paultibbetts.uk/2025/07/27/completed-the-tour-du-mont.html</link>
      <pubDate>Sun, 27 Jul 2025 12:27:00 +0000</pubDate>
      
      <guid>http://paultibbetts.micro.blog/2025/07/27/completed-the-tour-du-mont.html</guid>
      <description>&lt;p&gt;Completed the &lt;a href=&#34;https://pinthewild.micro.blog/categories/tour-du-mont-blanc&#34;&gt;Tour du Mont Blanc&lt;/a&gt;!&lt;/p&gt;
&lt;img src=&#34;https://eu.uploads.micro.blog/163170/2025/img-5375.jpg&#34; alt=&#34;Me posing under the Les Houches Tour du Mont-Blanc archway, surrounded by mountainous scenery and buildings.&#34;&gt;
</description>
      <source:markdown>Completed the [Tour du Mont Blanc](https://pinthewild.micro.blog/categories/tour-du-mont-blanc)!

&lt;img src=&#34;https://eu.uploads.micro.blog/163170/2025/img-5375.jpg&#34; alt=&#34;Me posing under the Les Houches Tour du Mont-Blanc archway, surrounded by mountainous scenery and buildings.&#34;&gt;
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://micro.paultibbetts.uk/2025/07/19/starting-the-tour-du-mont.html</link>
      <pubDate>Sat, 19 Jul 2025 07:18:50 +0000</pubDate>
      
      <guid>http://paultibbetts.micro.blog/2025/07/19/starting-the-tour-du-mont.html</guid>
      <description>&lt;p&gt;Starting the Tour du Mont Blanc today, will be posting from &lt;a href=&#34;https://pinthewild.micro.blog&#34;&gt;my hiking blog&lt;/a&gt; but there will inevitably be a double post or two&lt;/p&gt;
</description>
      <source:markdown>Starting the Tour du Mont Blanc today, will be posting from [my hiking blog](https://pinthewild.micro.blog) but there will inevitably be a double post or two
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://micro.paultibbetts.uk/2025/07/18/chamonix.html</link>
      <pubDate>Fri, 18 Jul 2025 19:02:40 +0000</pubDate>
      
      <guid>http://paultibbetts.micro.blog/2025/07/18/chamonix.html</guid>
      <description>&lt;p&gt;Chamonix 🇫🇷&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://eu.uploads.micro.blog/163170/2025/81e0dc9f01.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;A scenic view of a mountain town features colorful flowers in the foreground, a river flanked by buildings, lush greenery, and snow-capped peaks under a clear blue sky.&#34;&gt;&lt;img src=&#34;https://eu.uploads.micro.blog/163170/2025/3f00b5ad60.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;A picturesque mountain town features charming buildings with a snowy mountain backdrop under a clear blue sky.&#34;&gt;&lt;img src=&#34;https://eu.uploads.micro.blog/163170/2025/830b899ce5.jpg&#34; width=&#34;450&#34; height=&#34;600&#34; alt=&#34;&#34;&gt;&lt;img src=&#34;https://eu.uploads.micro.blog/163170/2025/4aec0207ea.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
</description>
      <source:markdown>Chamonix 🇫🇷

&lt;img src=&#34;https://eu.uploads.micro.blog/163170/2025/81e0dc9f01.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;A scenic view of a mountain town features colorful flowers in the foreground, a river flanked by buildings, lush greenery, and snow-capped peaks under a clear blue sky.&#34;&gt;&lt;img src=&#34;https://eu.uploads.micro.blog/163170/2025/3f00b5ad60.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;A picturesque mountain town features charming buildings with a snowy mountain backdrop under a clear blue sky.&#34;&gt;&lt;img src=&#34;https://eu.uploads.micro.blog/163170/2025/830b899ce5.jpg&#34; width=&#34;450&#34; height=&#34;600&#34; alt=&#34;&#34;&gt;&lt;img src=&#34;https://eu.uploads.micro.blog/163170/2025/4aec0207ea.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;&#34;&gt;
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://micro.paultibbetts.uk/2025/07/18/manchester-geneva.html</link>
      <pubDate>Fri, 18 Jul 2025 11:21:59 +0000</pubDate>
      
      <guid>http://paultibbetts.micro.blog/2025/07/18/manchester-geneva.html</guid>
      <description>&lt;p&gt;Manchester ✈️ Geneva&lt;/p&gt;
&lt;img src=&#34;https://eu.uploads.micro.blog/163170/2025/e6c2941981.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;&#34;&gt;
</description>
      <source:markdown>Manchester ✈️ Geneva

&lt;img src=&#34;https://eu.uploads.micro.blog/163170/2025/e6c2941981.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;&#34;&gt;
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://micro.paultibbetts.uk/2025/07/11/setting-off-to-the-other.html</link>
      <pubDate>Fri, 11 Jul 2025 12:59:29 +0000</pubDate>
      
      <guid>http://paultibbetts.micro.blog/2025/07/11/setting-off-to-the-other.html</guid>
      <description>&lt;p&gt;Setting off to the other side of the island for the weekend.&lt;/p&gt;
&lt;p&gt;Only 9 hours to go.&lt;/p&gt;
</description>
      <source:markdown>Setting off to the other side of the island for the weekend. 

Only 9 hours to go.
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://micro.paultibbetts.uk/2025/07/10/booked-my-flight-to-switzerland.html</link>
      <pubDate>Thu, 10 Jul 2025 14:35:20 +0000</pubDate>
      
      <guid>http://paultibbetts.micro.blog/2025/07/10/booked-my-flight-to-switzerland.html</guid>
      <description>&lt;p&gt;Booked my flight to Switzerland to hike the &lt;a href=&#34;https://www.autourdumontblanc.com/en/&#34;&gt;Tour du Mont Blanc&lt;/a&gt;, so now I&amp;rsquo;m doing some last minute shopping for new gear and replacements of all the lost and broken things since my last week long trip.&lt;/p&gt;
</description>
      <source:markdown>Booked my flight to Switzerland to hike the [Tour du Mont Blanc](https://www.autourdumontblanc.com/en/), so now I&#39;m doing some last minute shopping for new gear and replacements of all the lost and broken things since my last week long trip. 
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://micro.paultibbetts.uk/2025/07/05/pangolin-works-on-my-ipv.html</link>
      <pubDate>Sat, 05 Jul 2025 10:24:45 +0000</pubDate>
      
      <guid>http://paultibbetts.micro.blog/2025/07/05/pangolin-works-on-my-ipv.html</guid>
      <description>&lt;p&gt;Pangolin works on my IPv6 only Pi 🎉&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve got some tidying up to do, then it needs a write-up.&lt;/p&gt;
&lt;img src=&#34;https://eu.uploads.micro.blog/163170/2025/screenshot-2025-07-05-at-11.19.16.png&#34; width=&#34;600&#34; height=&#34;451&#34; alt=&#34;&#34;&gt;
</description>
      <source:markdown>Pangolin works on my IPv6 only Pi 🎉

I&#39;ve got some tidying up to do, then it needs a write-up.

&lt;img src=&#34;https://eu.uploads.micro.blog/163170/2025/screenshot-2025-07-05-at-11.19.16.png&#34; width=&#34;600&#34; height=&#34;451&#34; alt=&#34;&#34;&gt;
</source:markdown>
    </item>
    
    <item>
      <title>Pangolin on a Pi project progress</title>
      <link>https://micro.paultibbetts.uk/2025/07/03/pangolin-on-a-pi-project.html</link>
      <pubDate>Thu, 03 Jul 2025 15:54:12 +0000</pubDate>
      
      <guid>http://paultibbetts.micro.blog/2025/07/03/pangolin-on-a-pi-project.html</guid>
      <description>&lt;p&gt;Most things in tech play out like &lt;a href=&#34;https://youtu.be/5W4NFcamRhM?si=UfMWOyK6d9hEitz-&#34;&gt;that scene from Malcom in the Middle&lt;/a&gt;, where Hal&amp;rsquo;s trying to do one thing and then he needs to do another, and another, until he&amp;rsquo;s forgotten where he started.&lt;/p&gt;
&lt;p&gt;Pangolin on a Pi started off as a quick little test that turned into a week long adventure.&lt;/p&gt;
&lt;h2 id=&#34;pangolin&#34;&gt;Pangolin&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://docs.fossorial.io/Getting%20Started/overview&#34;&gt;Pangolin&lt;/a&gt; is an app that lets you tunnel into a private network, securely, from the outer internet. This means you can run your own apps and services at home and use Pangolin to let your friends and family connect to them.&lt;/p&gt;
&lt;p&gt;You can do the same thing with &lt;a href=&#34;https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/&#34;&gt;Cloudflare tunnels&lt;/a&gt; except that way Cloudflare can read everything that goes through the tunnel and they don&amp;rsquo;t want you using it for movies, so you&amp;rsquo;re not supposed to use it for Jellyfin or Plex.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m not planning on using it for Jellyfin, but I like that the option&amp;rsquo;s there with Pangolin, and that it&amp;rsquo;s hosted on my own server.&lt;/p&gt;
&lt;h2 id=&#34;hosting&#34;&gt;Hosting&lt;/h2&gt;
&lt;p&gt;Except it&amp;rsquo;s not my own server, because I don&amp;rsquo;t have one of those huge internet cables like the big companies do, so I have to rent access to one from them.&lt;/p&gt;
&lt;p&gt;It doesn&amp;rsquo;t need to be a big server, only 1GB of RAM and 1 vCPU, which you can get for $1 per month if you go with &lt;a href=&#34;https://my.racknerd.com/aff.php?aff=13788&amp;amp;pid=912&#34;&gt;RackNerd&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Which is great if you live in the US, since you&amp;rsquo;re close to any one of the 6 data centres you can choose from for that offer, but I don&amp;rsquo;t, I live all the way across the pond.&lt;/p&gt;
&lt;h2 id=&#34;uk-hosting&#34;&gt;UK Hosting&lt;/h2&gt;
&lt;p&gt;The closer this server is to where I am the better. In the UK server hosting mainly happens in London, which is close enough to me to be super fast, even if there are other places I could choose.&lt;/p&gt;
&lt;p&gt;Like Manchester, which is closer to me than London. I was surprised to find they had their own data centres I could host from. I could only find one company that offered it publicly though, which was ran by an American company.&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t want to talk about recent events, but I don&amp;rsquo;t want to spend my money with a company that pays its taxes to a government that just bombed the country my friend&amp;rsquo;s family lives in. I&amp;rsquo;m not getting involved in any of this. I will choose a different company.&lt;/p&gt;
&lt;p&gt;Preferably one in the UK; as I&amp;rsquo;ve aged I&amp;rsquo;ve realised it&amp;rsquo;s up to us to keep this island afloat.&lt;/p&gt;
&lt;h2 id=&#34;mythic-beasts&#34;&gt;Mythic Beasts&lt;/h2&gt;
&lt;p&gt;A quick Reddit search led me to &lt;a href=&#34;https://www.mythic-beasts.com/&#34;&gt;Mythic Beasts&lt;/a&gt;, an independent, privately owned company based in the UK, with lots of good reviews.&lt;/p&gt;
&lt;p&gt;They even had a blog, and it didn&amp;rsquo;t take long to find a post titled &amp;ldquo;&lt;a href=&#34;https://www.mythic-beasts.com/blog/2025/02/25/supporting-the-open-rights-group/&#34;&gt;Supporting the Open Rights Group&lt;/a&gt;&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Yep, that&amp;rsquo;s all I need to read, I&amp;rsquo;m hosting my server here with these beasts.&lt;/p&gt;
&lt;h2 id=&#34;pi&#34;&gt;Pi?&lt;/h2&gt;
&lt;p&gt;Mythic Beasts have their own &lt;a href=&#34;https://www.mythic-beasts.com/order/rpi/&#34;&gt;rack of Raspberry Pis&lt;/a&gt; you can rent from.&lt;/p&gt;
&lt;p&gt;Hosting on someone else&amp;rsquo;s computer isn&amp;rsquo;t a natural fit for the self-hosted way of doing things. But doing it on a Pi? That feels better for some reason.&lt;/p&gt;
&lt;p&gt;Time to do a little test&amp;hellip;&lt;img src=&#34;https://eu.uploads.micro.blog/163170/2025/rick-n-morty-quick-adventure.png&#34; width=&#34;500&#34; height=&#34;250&#34; alt=&#34;Rick &amp; Morty quick adventure meme 1/2: Rick &amp; Morty stand in a school hallway next to a glowing green portal, with the caption LETS GO. IN AND OUT. 20 MINUTE ADVENTURE.&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;terraform-provider&#34;&gt;Terraform Provider?&lt;/h2&gt;
&lt;p&gt;I could have just clicked on the website to order a Pi. Maybe I should have.&lt;/p&gt;
&lt;p&gt;Mythic Beasts have an API, so you can script your order and the management of the Pi, not that it needs much management. What they don&amp;rsquo;t have, which surprised me a little, is a Terraform Provider.&lt;/p&gt;
&lt;p&gt;A Terraform Provider is the bit that connects Terraform, an industry standard tool for writing down servers as code, to the API of the server provider.&lt;/p&gt;
&lt;p&gt;An ex member of staff &lt;a href=&#34;https://github.com/jbayfield/terraform-provider-mythic/tree/main&#34;&gt;started one&lt;/a&gt; using the older version of the Terraform Provider code, but they had archived it and since left the company.&lt;/p&gt;
&lt;p&gt;Which gave me an idea.&lt;/p&gt;
&lt;h2 id=&#34;i-will-write-one&#34;&gt;I will write one!&lt;/h2&gt;
&lt;p&gt;I was looking for a chance to practise writing Go, as well as create a project to put on my GitHub, which had gotten a little quiet recently, and now I&amp;rsquo;d found one.&lt;/p&gt;
&lt;p&gt;How hard could it be?&lt;/p&gt;
&lt;h2 id=&#34;why-arent-the-docs-accurate&#34;&gt;WHY AREN&amp;rsquo;T THE DOCS ACCURATE?!&lt;/h2&gt;
&lt;p&gt;A small gripe, if I may, is that it helps if your API documentation is accurate. The docs I was reading were mostly accurate, and I could get around whatever differences there were, but it had been a while since I&amp;rsquo;d coded against someone else&amp;rsquo;s API and I&amp;rsquo;d forgotten this happens.&lt;/p&gt;
&lt;h2 id=&#34;ipv6&#34;&gt;IPv6?&lt;/h2&gt;
&lt;p&gt;Since there are no more IPv4 addresses left the Pis are IPv6 only. Mythic Beasts host proxies that let you get into the Pis from IPv4 connections, which works for websites, but Pangolin needs a different type of access.&lt;/p&gt;
&lt;h2 id=&#34;newt&#34;&gt;Newt?&lt;/h2&gt;
&lt;p&gt;Pangolin is the website part of the project, it&amp;rsquo;s the bit the users see and is hosted on the Pi. It works by letting only the right users into the secure Wireguard tunnel that goes into your home network.&lt;/p&gt;
&lt;p&gt;The thing that you host at home that sets up the other side of the tunnel is called Newt. It uses Wireguard for the tunnel, and that speaks to the Pi on a particular port which &lt;strong&gt;isn&amp;rsquo;t proxied by Mythic Beasts&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;another-proxy&#34;&gt;Another proxy?&lt;/h2&gt;
&lt;p&gt;Maybe you could get another proxy for this, but then you&amp;rsquo;re hosting a tunnel for your tunnel.&lt;/p&gt;
&lt;p&gt;So no.&lt;/p&gt;
&lt;h2 id=&#34;ipv6-1&#34;&gt;IPv6!&lt;/h2&gt;
&lt;p&gt;You don&amp;rsquo;t need a proxy if you can connect to the Pi through IPv6.&lt;/p&gt;
&lt;p&gt;Except I couldn&amp;rsquo;t.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve known for years that we&amp;rsquo;ve ran out of IPv4 addresses and that they&amp;rsquo;re being passed around from company to company for larger and larger amounts of money.&lt;/p&gt;
&lt;p&gt;Somehow IPv4 still works and we&amp;rsquo;re still using it, so I always thought I could deal with it when it became a problem.&lt;/p&gt;
&lt;p&gt;Like it just had.&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;&amp;hellip;&lt;/h2&gt;
&lt;img src=&#34;https://eu.uploads.micro.blog/163170/2025/rick-n-morty-meme-one-week-later.png&#34; width=&#34;500&#34; height=&#34;287&#34; alt=&#34;Rick &amp; Morty meme 2/2: One week later&#34;&gt;
I now have IPv6 working at home which means I can connect to the Pi without a proxy 🎉.
&lt;p&gt;I will write up what I did another time, this quick update is over 1,000 words already.&lt;/p&gt;
&lt;p&gt;The next steps are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;install Newt on my home server&lt;/li&gt;
&lt;li&gt;connect it to the Pi&lt;/li&gt;
&lt;li&gt;profit&lt;/li&gt;
&lt;/ul&gt;</description>
      <source:markdown>Most things in tech play out like [that scene from Malcom in the Middle](https://youtu.be/5W4NFcamRhM?si=UfMWOyK6d9hEitz-), where Hal&#39;s trying to do one thing and then he needs to do another, and another, until he&#39;s forgotten where he started.

Pangolin on a Pi started off as a quick little test that turned into a week long adventure.

## Pangolin

[Pangolin](https://docs.fossorial.io/Getting%20Started/overview) is an app that lets you tunnel into a private network, securely, from the outer internet. This means you can run your own apps and services at home and use Pangolin to let your friends and family connect to them.

&lt;!--more--&gt;

You can do the same thing with [Cloudflare tunnels](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/) except that way Cloudflare can read everything that goes through the tunnel and they don&#39;t want you using it for movies, so you&#39;re not supposed to use it for Jellyfin or Plex.

I&#39;m not planning on using it for Jellyfin, but I like that the option&#39;s there with Pangolin, and that it&#39;s hosted on my own server.

## Hosting

Except it&#39;s not my own server, because I don&#39;t have one of those huge internet cables like the big companies do, so I have to rent access to one from them.

It doesn&#39;t need to be a big server, only 1GB of RAM and 1 vCPU, which you can get for $1 per month if you go with [RackNerd](https://my.racknerd.com/aff.php?aff=13788&amp;pid=912). 

Which is great if you live in the US, since you&#39;re close to any one of the 6 data centres you can choose from for that offer, but I don&#39;t, I live all the way across the pond.

## UK Hosting

The closer this server is to where I am the better. In the UK server hosting mainly happens in London, which is close enough to me to be super fast, even if there are other places I could choose.

Like Manchester, which is closer to me than London. I was surprised to find they had their own data centres I could host from. I could only find one company that offered it publicly though, which was ran by an American company. 

I don&#39;t want to talk about recent events, but I don&#39;t want to spend my money with a company that pays its taxes to a government that just bombed the country my friend&#39;s family lives in. I&#39;m not getting involved in any of this. I will choose a different company.

Preferably one in the UK; as I&#39;ve aged I&#39;ve realised it&#39;s up to us to keep this island afloat. 

## Mythic Beasts

A quick Reddit search led me to [Mythic Beasts](https://www.mythic-beasts.com/), an independent, privately owned company based in the UK, with lots of good reviews.

They even had a blog, and it didn&#39;t take long to find a post titled &#34;[Supporting the Open Rights Group](https://www.mythic-beasts.com/blog/2025/02/25/supporting-the-open-rights-group/)&#34;.

Yep, that&#39;s all I need to read, I&#39;m hosting my server here with these beasts.

## Pi?

Mythic Beasts have their own [rack of Raspberry Pis](https://www.mythic-beasts.com/order/rpi/) you can rent from.

Hosting on someone else&#39;s computer isn&#39;t a natural fit for the self-hosted way of doing things. But doing it on a Pi? That feels better for some reason.

Time to do a little test...&lt;img src=&#34;https://eu.uploads.micro.blog/163170/2025/rick-n-morty-quick-adventure.png&#34; width=&#34;500&#34; height=&#34;250&#34; alt=&#34;Rick &amp; Morty quick adventure meme 1/2: Rick &amp; Morty stand in a school hallway next to a glowing green portal, with the caption LETS GO. IN AND OUT. 20 MINUTE ADVENTURE.&#34;&gt;

## Terraform Provider?

I could have just clicked on the website to order a Pi. Maybe I should have.

Mythic Beasts have an API, so you can script your order and the management of the Pi, not that it needs much management. What they don&#39;t have, which surprised me a little, is a Terraform Provider.

A Terraform Provider is the bit that connects Terraform, an industry standard tool for writing down servers as code, to the API of the server provider.

An ex member of staff [started one](https://github.com/jbayfield/terraform-provider-mythic/tree/main) using the older version of the Terraform Provider code, but they had archived it and since left the company.

Which gave me an idea.

## I will write one!

I was looking for a chance to practise writing Go, as well as create a project to put on my GitHub, which had gotten a little quiet recently, and now I&#39;d found one.

How hard could it be?

## WHY AREN&#39;T THE DOCS ACCURATE?!

A small gripe, if I may, is that it helps if your API documentation is accurate. The docs I was reading were mostly accurate, and I could get around whatever differences there were, but it had been a while since I&#39;d coded against someone else&#39;s API and I&#39;d forgotten this happens.

## IPv6?

Since there are no more IPv4 addresses left the Pis are IPv6 only. Mythic Beasts host proxies that let you get into the Pis from IPv4 connections, which works for websites, but Pangolin needs a different type of access.

## Newt?

Pangolin is the website part of the project, it&#39;s the bit the users see and is hosted on the Pi. It works by letting only the right users into the secure Wireguard tunnel that goes into your home network.

The thing that you host at home that sets up the other side of the tunnel is called Newt. It uses Wireguard for the tunnel, and that speaks to the Pi on a particular port which **isn&#39;t proxied by Mythic Beasts**.

## Another proxy?

Maybe you could get another proxy for this, but then you&#39;re hosting a tunnel for your tunnel.

So no.

## IPv6!

You don&#39;t need a proxy if you can connect to the Pi through IPv6. 

Except I couldn&#39;t.

I&#39;ve known for years that we&#39;ve ran out of IPv4 addresses and that they&#39;re being passed around from company to company for larger and larger amounts of money. 

Somehow IPv4 still works and we&#39;re still using it, so I always thought I could deal with it when it became a problem. 

Like it just had.

## ...
&lt;img src=&#34;https://eu.uploads.micro.blog/163170/2025/rick-n-morty-meme-one-week-later.png&#34; width=&#34;500&#34; height=&#34;287&#34; alt=&#34;Rick &amp; Morty meme 2/2: One week later&#34;&gt;
I now have IPv6 working at home which means I can connect to the Pi without a proxy 🎉.

I will write up what I did another time, this quick update is over 1,000 words already.

The next steps are:

- install Newt on my home server
- connect it to the Pi
- profit
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://micro.paultibbetts.uk/2025/06/30/pushed-my-developer-environment-setup.html</link>
      <pubDate>Mon, 30 Jun 2025 14:30:38 +0000</pubDate>
      
      <guid>http://paultibbetts.micro.blog/2025/06/30/pushed-my-developer-environment-setup.html</guid>
      <description>&lt;p&gt;Pushed my &lt;a href=&#34;https://github.com/paultibbetts/dev&#34;&gt;developer environment setup scripts repo&lt;/a&gt; up to GitHub.&lt;/p&gt;
&lt;p&gt;As mentioned in the readme:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This is what works for me. I don&amp;rsquo;t expect or encourage anyone else to use them.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Planning on writing a few posts about it, so more details on it soon.&lt;/p&gt;
</description>
      <source:markdown>Pushed my [developer environment setup scripts repo](https://github.com/paultibbetts/dev) up to GitHub.

As mentioned in the readme: 

&gt; This is what works for me. I don&#39;t expect or encourage anyone else to use them.

Planning on writing a few posts about it, so more details on it soon.
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://micro.paultibbetts.uk/2025/06/30/this-weeks-aim-is-to.html</link>
      <pubDate>Mon, 30 Jun 2025 10:37:31 +0000</pubDate>
      
      <guid>http://paultibbetts.micro.blog/2025/06/30/this-weeks-aim-is-to.html</guid>
      <description>&lt;p&gt;This week&amp;rsquo;s aim is to find a better balance 🧘&lt;/p&gt;
</description>
      <source:markdown>This week&#39;s aim is to find a better balance 🧘
</source:markdown>
    </item>
    
    <item>
      <title></title>
      <link>https://micro.paultibbetts.uk/2025/06/23/smoking-bbq-candy-httpssharefireboardiofec.html</link>
      <pubDate>Mon, 23 Jun 2025 15:58:13 +0000</pubDate>
      
      <guid>http://paultibbetts.micro.blog/2025/06/23/smoking-bbq-candy-httpssharefireboardiofec.html</guid>
      <description>&lt;p&gt;Smoking BBQ Candy&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://share.fireboard.io/FE826C&#34;&gt;share.fireboard.io/FE826C&lt;/a&gt;&lt;/p&gt;
&lt;img src=&#34;https://eu.uploads.micro.blog/163170/2025/79c7e98986.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;&#34;&gt;
</description>
      <source:markdown>Smoking BBQ Candy

[share.fireboard.io/FE826C](https://share.fireboard.io/FE826C)

&lt;img src=&#34;https://eu.uploads.micro.blog/163170/2025/79c7e98986.jpg&#34; width=&#34;600&#34; height=&#34;450&#34; alt=&#34;&#34;&gt;
</source:markdown>
    </item>
    
    <item>
      <title>Why would you want a home server?</title>
      <link>https://micro.paultibbetts.uk/2025/06/21/why-would-you-want-a.html</link>
      <pubDate>Sat, 21 Jun 2025 16:15:58 +0000</pubDate>
      
      <guid>http://paultibbetts.micro.blog/2025/06/21/why-would-you-want-a.html</guid>
      <description>&lt;p&gt;Some thoughts to help you work out if you want a home server.&lt;/p&gt;
&lt;h2 id=&#34;whats-a-home-server&#34;&gt;What&amp;rsquo;s a Home Server?&lt;/h2&gt;
&lt;p&gt;If you thought servers were big black boxes with blinky lights in noisy rooms then you&amp;rsquo;d be mostly correct, but a growing number of us are running them at home and they&amp;rsquo;re smaller and quieter than you think.&lt;/p&gt;
&lt;p&gt;If you just want to block adverts with &lt;a href=&#34;https://pi-hole.net/&#34;&gt;Pi-hole&lt;/a&gt; then you don&amp;rsquo;t need that much power and you can get away with a teeny tiny &lt;a href=&#34;https://www.raspberrypi.com/products/raspberry-pi-zero-w/&#34;&gt;Raspberry Pi Zero&lt;/a&gt; that fits in your hand and costs £15.&lt;/p&gt;
&lt;p&gt;A home server is any machine that lets you host things in your home.&lt;/p&gt;
&lt;h2 id=&#34;self-hosting&#34;&gt;Self-hosting&lt;/h2&gt;
&lt;p&gt;There&amp;rsquo;s a bunch of things you can self-host.&lt;/p&gt;
&lt;h3 id=&#34;services&#34;&gt;Services&lt;/h3&gt;
&lt;p&gt;Some services are only available by self-hosting them.&lt;/p&gt;
&lt;p&gt;Blocking adverts in the browser alone means you still had to download the advert, even if you didn&amp;rsquo;t see it. &lt;a href=&#34;https://pi-hole.net/&#34;&gt;Pi-hole&lt;/a&gt; blocks adverts by stopping your network from fetching the advert in the first place, which makes your browsing experience faster.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://jellyfin.org/&#34;&gt;Jellyfin&lt;/a&gt; lets you host your own Netflix, and apps like &lt;a href=&#34;https://github.com/janeczku/calibre-web&#34;&gt;calibre-web&lt;/a&gt; and &lt;a href=&#34;https://www.audiobookshelf.org/&#34;&gt;audiobookshelf&lt;/a&gt; do the same for your books and podcasts.&lt;/p&gt;
&lt;p&gt;Having a home server lets you make the most of your own media.&lt;/p&gt;
&lt;h3 id=&#34;applications&#34;&gt;Applications&lt;/h3&gt;
&lt;p&gt;There are open source versions of loads of apps you&amp;rsquo;re already using, like Word processors and spreadsheets and stuff, as well as new ones you didn&amp;rsquo;t realise you&amp;rsquo;d need.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://mealie.io/&#34;&gt;Mealie&lt;/a&gt; is one of my recent favourites, it&amp;rsquo;s a recipe management app that lets me do meal planning and then generate a shopping list with all the ingredients I need.&lt;/p&gt;
&lt;p&gt;I use &lt;a href=&#34;https://www.freshrss.org/&#34;&gt;FreshRSS&lt;/a&gt; to keep up to date with RSS feeds as well as keep my phone and laptop clients in sync with each other.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.wireguard.com/&#34;&gt;Wireguard&lt;/a&gt; lets me access my home server from anywhere.&lt;/p&gt;
&lt;p&gt;You can find more at &lt;a href=&#34;https://www.awesome-homelab.com/&#34;&gt;Awesome Homelab&lt;/a&gt; and on &lt;a href=&#34;https://www.reddit.com/r/selfhosted/&#34;&gt;Reddit&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;storage&#34;&gt;Storage&lt;/h3&gt;
&lt;p&gt;If you&amp;rsquo;ve read my &lt;a href=&#34;https://micro.paultibbetts.uk/2025/06/20/why-would-you-want-a.html&#34;&gt;Why would you want a NAS?&lt;/a&gt; post you&amp;rsquo;ll know whether you need &lt;em&gt;something&lt;/em&gt; for storage.&lt;/p&gt;
&lt;p&gt;What I didn&amp;rsquo;t mention is that the line between a home server and &amp;ldquo;a NAS&amp;rdquo; can be a little blurry.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;NAS&amp;rdquo; just means network storage and &amp;ldquo;a NAS&amp;rdquo; usually refers to the machine you dedicate to doing NAS things. You don&amp;rsquo;t have to own &amp;ldquo;a NAS&amp;rdquo; to have NAS.&lt;/p&gt;
&lt;h4 id=&#34;nas--self-host&#34;&gt;NAS + self host&lt;/h4&gt;
&lt;p&gt;Most NAS software has the ability to run custom apps somehow, so if you mainly wanted storage and only wanted to run a few apps you could get away with using your NAS device as a home server.&lt;/p&gt;
&lt;p&gt;You can run your own apps even on the consumer NAS devices like the ones from Synology.&lt;/p&gt;
&lt;h4 id=&#34;home-server--network-attached-storage&#34;&gt;Home server + Network Attached Storage&lt;/h4&gt;
&lt;p&gt;If you wanted the opposite, mainly to self-host with a little bit of network storage, you could get away with plugging in some drives to your home server and making them available over the network.&lt;/p&gt;
&lt;p&gt;This could be as small as a Raspberry Pi 5 with an NVME plugged in to it.&lt;/p&gt;
&lt;h4 id=&#34;home-server-with-nas-virtualised&#34;&gt;Home server with NAS virtualised&lt;/h4&gt;
&lt;p&gt;Some people set up their home server for virtualisation and use a virtual machine to run their NAS software and then use other virtual machines for self-hosting, which means the same device is now both &amp;ldquo;a NAS&amp;rdquo; and &amp;ldquo;a home server&amp;rdquo;.&lt;/p&gt;
&lt;h4 id=&#34;home-server-and-a-nas&#34;&gt;Home server and a NAS&lt;/h4&gt;
&lt;p&gt;I personally have different machines for my NAS and my home server, and I think I&amp;rsquo;m right, but then my NAS is sat idle 99% of the time, so maybe I&amp;rsquo;m not.&lt;/p&gt;</description>
      <source:markdown>Some thoughts to help you work out if you want a home server.

&lt;!--more--&gt;

## What&#39;s a Home Server?
  
If you thought servers were big black boxes with blinky lights in noisy rooms then you&#39;d be mostly correct, but a growing number of us are running them at home and they&#39;re smaller and quieter than you think.

If you just want to block adverts with [Pi-hole](https://pi-hole.net/) then you don&#39;t need that much power and you can get away with a teeny tiny [Raspberry Pi Zero](https://www.raspberrypi.com/products/raspberry-pi-zero-w/) that fits in your hand and costs £15.

A home server is any machine that lets you host things in your home.

## Self-hosting

There&#39;s a bunch of things you can self-host.

### Services

Some services are only available by self-hosting them.

Blocking adverts in the browser alone means you still had to download the advert, even if you didn&#39;t see it. [Pi-hole](https://pi-hole.net/) blocks adverts by stopping your network from fetching the advert in the first place, which makes your browsing experience faster.

[Jellyfin](https://jellyfin.org/) lets you host your own Netflix, and apps like [calibre-web](https://github.com/janeczku/calibre-web) and [audiobookshelf](https://www.audiobookshelf.org/) do the same for your books and podcasts.

Having a home server lets you make the most of your own media.

### Applications

There are open source versions of loads of apps you&#39;re already using, like Word processors and spreadsheets and stuff, as well as new ones you didn&#39;t realise you&#39;d need.

[Mealie](https://mealie.io/) is one of my recent favourites, it&#39;s a recipe management app that lets me do meal planning and then generate a shopping list with all the ingredients I need.

I use [FreshRSS](https://www.freshrss.org/) to keep up to date with RSS feeds as well as keep my phone and laptop clients in sync with each other.

[Wireguard](https://www.wireguard.com/) lets me access my home server from anywhere.

You can find more at [Awesome Homelab](https://www.awesome-homelab.com/) and on [Reddit](https://www.reddit.com/r/selfhosted/).

### Storage

If you&#39;ve read my [Why would you want a NAS?](https://micro.paultibbetts.uk/2025/06/20/why-would-you-want-a.html) post you&#39;ll know whether you need _something_ for storage.

What I didn&#39;t mention is that the line between a home server and &#34;a NAS&#34; can be a little blurry. 

&#34;NAS&#34; just means network storage and &#34;a NAS&#34; usually refers to the machine you dedicate to doing NAS things. You don&#39;t have to own &#34;a NAS&#34; to have NAS.

#### NAS + self host

Most NAS software has the ability to run custom apps somehow, so if you mainly wanted storage and only wanted to run a few apps you could get away with using your NAS device as a home server.

You can run your own apps even on the consumer NAS devices like the ones from Synology.

#### Home server + Network Attached Storage

If you wanted the opposite, mainly to self-host with a little bit of network storage, you could get away with plugging in some drives to your home server and making them available over the network.

This could be as small as a Raspberry Pi 5 with an NVME plugged in to it.

#### Home server with NAS virtualised

Some people set up their home server for virtualisation and use a virtual machine to run their NAS software and then use other virtual machines for self-hosting, which means the same device is now both &#34;a NAS&#34; and &#34;a home server&#34;.

#### Home server and a NAS

I personally have different machines for my NAS and my home server, and I think I&#39;m right, but then my NAS is sat idle 99% of the time, so maybe I&#39;m not.
</source:markdown>
    </item>
    
  </channel>
</rss>
