Big News: Librelancer is now on Codeberg!.
TL;DR: If you’re using git to interact with Librelancer, change the remote with git remote set-url origin https://codeberg.org/Librelancer/Librelancer.git.
I’ve been intending to migrate off of GitHub since the start of this year, due to a lot of flakiness with GitHub’s availability in general. In their own updates they mention a couple of the issues experienced and the causes behind it.
Librelancer development has been affected a few times now by flakey GitHub actions runners, and issues browsing the repository. Recent GitHub interface developments have also negatively affected the experience of browsing and managing the repository, and the newer UI changes have lead to much worse performance on the client.
The move, however, was finally triggered by a wave of GitHub forks with vast amounts of LLM generated content. The no-LLM policy for contributions I instituted on the 11th of July 2026 has been seen somewhat as a dare for those who prefer to make floods of content with them. Librelancer is my hobby and this stuff just isn’t fun to deal with. Moving development off of GitHub onto a smaller platform focused on human-made content will help calm the storm as the barrier to entry is raised. Though that barrier of entry is just knowing git exists outside of GitHub.
Development of a hobby project works best when the maintainer and core contributors aren’t being annoyed by their tools, and it’s my hope Codeberg will be boring (in a good way!).
Moving a repository to Codeberg is actually quite easy! When you are in your own profile or an organisation page, there is an option to create a “New Migration”. Forgejo, which powers Codeberg, given a GitHub Personal Access Token and the URL, will seamlessly copy the entire repository and associated issues and PRs. There is also the option to only give the repository URL if you just need the code copied over, which is how dependencies are going to be slowly migrated to Codeberg.
What wasn’t seamless was migrating the build pipelines, as they were pretty tied to GitHub’s proprietary Actions offering.
Luckily, when it comes to migrating pipelines, Forgejo offers a clone of GitHub’s actions. Unluckily, as Codeberg does not have a large amount of resources floating around for people to run builds on, we need to run the builds ourselves. While Codeberg does offer small runners for FOSS projects, Librelancer is a large project and would most likely exceed those limits. We’d like to be good tenants, and let the people at Codeberg focus on code hosting.
Librelancer’s CI now runs on the same server as this website, librelancer.net! This was achieved by installing forgejo-runner and hooking it up to Codeberg as the runner for the pipelines. If you check the .forgejo/workflows/ folder, you’ll notice they are configured to run on librelancer-runner. This is our server!
There were a few speedbumps when setting up forgejo-runner, as I decided to go down the not so well travelled path and set it up using rootless podman as the backend. Installing podman itself was simple, just apt install podman. However, the following packages need to be installed or you will get errors that are reasonably difficult to debug:
These 3 packages enable the containers to access the network as created by forgejo-runner. In addition, I had to set up the following in my forgejo-runner configuration. Without this, the container was not able to communicate with librelancer.net. If your own CI does not involve uploading to the web server hosted on the same VPS, this may not apply to you.
container:
options: "--add-host=librelancer.net:10.8.0.1"
With this set up, we have a system that runners can be added to. The whole system can also be moved off of Codeberg to another forgejo instance if one day things turn pear-shaped with this provider.
Finally, thanks to everyone who has been supporting this project throughout the years. We’ve had some really exciting progress over the past couple of years and it is a joy to be able to share it openly with all. I hope this move leads to a more sustainable future for Librelancer.
~ Callum