Streamlining My GCP SSH Workflow: Using SSH Configuration Tricks

In my use of Google Cloud Platform (GCP), I often recreate virtual machines (VMs), requiring frequent updates to connection information. This process becomes cumbersome, especially when dealing with stale entries in the known_hosts file and...

Use Drone plugins in Gitea Actions

Drone.IO is a CI/CD platform that uses Docker Containers for each pipeline step. This makes it easy to use existing Docker containers as steps in your pipeline. You can go futher and create special containers that are designed to be used as...

Experimenting with Proxmox on Apple Silicon: Turning Your M1 MacBook Air into a Virtual Datacentre

In an effort to create an easy-to-manage VM environment that I can use on the go, even with spotty internet, I decided to try running Proxmox on my Apple Silicon MacBook Air. I could use Parallels or VMware Fusion, but I instead chose Proxm...

Bye-bye Docker Hub, time to self-host all of my Docker images

One of the great things about Gitea, is that it comes with a built-in Docker registry. This means that you don't need to be reliant on Docker Hub (or its rate-limits) to host your docker images, or any other OCI compliant image for that mat...

Let Wireguard clients use your IP Blocks advertised by BGP

As an addendum to my previous post on giving yourself an IPv6 address using wireguard , I wanted to show how, if you are lucky enough to have a IPv4 range before the "great IPv4 exhaustion", you can assign those addresses to clients using w...

Giving yourself IPv6 with Wireguard

After many years of asking, my Internet Service Provider (ISP) still doesn't support IPv6; the same goes for many other ISPs. This is a problem for many reasons, the first being the exhaustion of IPv4 addresses, leading some ISPs to impleme...

Instead of Docker-in-Docker, what about Docker-on-Fly?

In my ever-ending quest to do things that are probably not the best idea that aren't a part of a usual use-case, I wanted to see if I could run a docker daemon on Fly.io. Even though you can think of Fly.io as a "container"-service hosting ...

Adding SFTP abilities to Namespace.so's ephemeral instances

Update (February 2026): Namespace has since added native file upload support to their CLI. You can now use nsc instance upload to copy files directly to an instance, making the shell scripts in this post unnecessary. This post is kept for h...

Build your own CDN - Part 3: Allowing bring-your-own domains with automatic TLS certificates

Now that we are able to synch TLS certs and the Caddy configuration across various points-of-presence, we now need to ensure that Caddy will only request certificates for approved names. As we are doing this for Gitea Pages, we won't know w...

Build your own CDN - Part 2: Using Nomad to manage Caddy

In the previous post we discussed how to provision, and keep TLS certs in synch across multiple Caddy instances. In this post we will look at how to dynamically create and distribute Caddy configuration to multiple nodes using Hashicorp's N...