LIAM JOHN DAVISON

A Little Bit of Data Sovereignty with Forgejo and Raspberry Pi

Liam Davison

In a somewhat irrational urge to add some data sovereignty to my life, I have set up a new 'homelab' server with a Raspberry Pi 5 at home. I've wanted to become less dependent on GitHub for my code hosting for some time, partly because I have lots of little projects which go nowhere and clutter up my GitHub account, and partly because I'm genuinely interested in exploring more sovereign options.

I bought a Raspberry Pi 5 8Gb, and an expensive 1Tb SSD drive for storage (note to self: don't look at the price history on amazon again; that SSD was about a quarter of the price last year). I've been installing some docker images, managing them with a tool called Portainer, and set up a free Cloudflare tunnel to route traffic to my Raspberry Pi.

I've installed the Forgejo software forge docker image, backed by a Postgres DB. I've cloned all my GitHub projects over to git.liamjd.net, and hopefully over time I'll start using Forgejo as my 'source of truth', with the public facing GitHub as a mere push mirror. For now, I'll likely get my self confused over which version of which repository I am working with!

I spent around 6 hours trying to get Forgejo Action Runners working – it's a complicated process, and the documentation is unclear and incomplete. With some AI assistance I've managed to get some workflows running, including a fairly heavy Kotlin Native compilation process for my APIViaduct library.

Forgejo is a competent but not feature complete code repository – the Dutch government is using it to enhance their own data sovereignty by migrating over from GitHub, so clearly it has potential for serious use. But it does not provide any of the security or code quality tooling that GitHub and GitLab offer, which I think is a significant omission. It also requires a lot more manual configuration and management, compared to the other projects.

The End of Cantilevers

Liam Davison

With some sadness, I have fully decommissioned my Cantilevers project. The application and website have been deleted, and the domain redirects to this blog. The project was a valiant attempt, but ultimately the technology choices were not suitable for the project goals. Bascule continues to be developed and supported. The Cantilevers blog posts have been preserved on this site.

The Cantilevers web editor was dependent on my APIViaduct project, which I intend to keep alive and am continuing to maintain. Most recently, I have been working on converting the project to a GraalVM native image, to improve the AWS Lambda function cold start times. I don't currently have a use case for APIViaduct, but am keen to find one to drive further development of the library.