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.