Using Fly.io as a remote builder for nixpkgs

A service I enjoy using, and write about often, is fly.io, as it lets me have compute on demand, without having to worry about provisioning and managing an entire server. Editor's Note: This was a fun experiment, but you are likely better o...

4 min

Build your own CDN - Part 1: Sync TLS certificates across your PoPs with Caddy

Gitea Pages will need many unique TLS certificates, and from past experience I know that a single Amazon CloudFront distribution limits how many certificates it can hold. I am building a Content Delivery Network (CDN) from scratch to be abl...

3 min

Using Nix with Gitea Actions

Carl Sagan once said, "If you wish to make an apple pie from scratch, you must first invent the universe." A reproducible build does not need to go quite that far. Nix can provide the build environment inside Gitea Actions with a small addi...

2 min

Watchtower... but for Kubernetes!?!

Watchtower runs on a schedule and checks for newer Docker container images. When it finds one, it pulls the image and recreates the container. Keel applies the same approach to Kubernetes workloads, including Helm releases, DaemonSets, Stat...

2 min

Publishing a static site to Bunny.net using Gitea Actions

Bunny.net (formerly BunnyCDN) can host a static site by serving files from a storage zone through a pull zone. The workflow below uses Gitea Actions to build a Hugo site, upload it over FTP, and purge the CDN cache after each deployment. Cr...

3 min

Secure SSH Access with SSH Certificates Managed by HashiCorp's Vault

SSH user certificates can restrict which users may connect and which commands they may run. In the setup below, the server trusts a Certificate Authority (CA) public key and accepts user certificates signed by that CA. This does not replace...

4 min

Playing around with Gitea Actions on Fly.io

Fly.io is a "serverless" hosting platform usually used for web services, but it can also run long-running tasks. I wanted to try running the Gitea Actions runner there. Treat this as a proof of concept. There are better ways to do this, but...

3 min