NL EN

Development

A European alternative to GitHub: Forgejo, Gitea or GitLab?

Mans Ziesel ·

Short answer

For most teams Forgejo is the most obvious European alternative to GitHub. It is entirely free software, sits under a German non-profit association, and can take over repositories, issues, pull requests and releases from GitHub. Gitea is similar, but is run by a commercial company. GitLab can do more, but is heavier to run and partly closed software.

Why do teams look for an alternative to GitHub?

Usually for one of three reasons. Code is the most important thing a software company has, and it sits with an American company. Clients ask where their source code is. Or the team simply wants to decide for itself which version runs, who has access and where the backups are.

GitHub is a good product. The point is not that it works badly, but that you have no say over it.

What are the three options?

Forgejo Gitea GitLab
Who sets the direction Codeberg e.V., a German non-profit association A commercial company GitLab Inc., an American company
Licence Only free software, GPL v3 or later since version 9 Open core: an open version plus paid features Open core: Community Edition plus closed paid features
CI/CD Forgejo Actions Gitea Actions GitLab CI
Weight One program or container with a database Comparable to Forgejo Larger: its own documentation assumes 8 vCPU and 16 GB of memory for a single server

Forgejo or Gitea?

They share a history. In October 2022 Gitea’s domains and trademark were transferred to a commercial company. Part of the community did not agree and started Forgejo, under the wing of Codeberg e.V.

At first Forgejo was a soft fork that kept taking changes from Gitea. In early 2024 it became a hard fork with its own codebase. They still look alike, but they are drifting further apart.

The difference lies mainly in who sets the direction. Forgejo publishes only free software, under an association that holds the domains. Gitea works with an open core model, where some features are paid. For the day-to-day developer they feel comparable.

When do you choose GitLab?

When you want more than a Git server with CI. GitLab has built-in parts for project planning, security scans and registries, and large organisations like working with it. On the other hand it is much heavier to run, and some features are only in the paid, closed version. For a team of a few developers it is often more than needed.

Does CI/CD work like it does on GitHub?

Forgejo Actions looks like GitHub Actions: workflows in YAML, in a folder in your repository, run by a runner. The Forgejo project says plainly that it was designed to be familiar, but not to be compatible. In practice simple workflows often run after small changes. Workflows that rely on actions from the GitHub Marketplace or on features only GitHub has need going through.

What do you take with you when you switch?

More than just the code. When you move from GitHub, Forgejo’s migration feature also fetches the wiki, labels, milestones, issues, pull requests and releases. If you currently run Gitea up to and including version 1.22, you can upgrade the whole installation to Forgejo.

Plan the move per repository or per team, not all at once. That way one team can keep working while the next moves over, and the first repository already shows you what the rest will need.

What you arrange yourself: going through the CI workflows, setting up webhooks and integrations again, and giving everyone a new address for the remote. That is work, but it is work you do once.

How do we do it?

We host Forgejo per client at its own address, on hardware we own, with the runners for Forgejo Actions included. We move your repositories from GitHub, GitLab or Gitea, and go through the workflows with you. How such a move goes from there is described under switching.

Want to know first why the location of your data matters? Read where is your data.

Questions

What is the difference between Forgejo and Gitea?

Forgejo started in October 2022 as a fork of Gitea, after Gitea's domains and trademark went to a commercial company. Forgejo sits under Codeberg e.V., a non-profit association, and publishes only free software. Since early 2024 it has been a fully separate project with its own codebase. Gitea works with an open core model.

Will my GitHub Actions workflows run in Forgejo?

Not as they are. Forgejo Actions is deliberately designed to feel familiar to anyone who knows GitHub Actions, but the project itself says it is not designed to be compatible. The structure of a workflow will feel familiar, but expect to review and adjust your workflows when you switch. You do that once, per repository.

Can I bring my issues and pull requests from GitHub to Forgejo?

Yes. When you move from GitHub, Forgejo's migration feature fetches the wiki, labels, milestones, issues, pull requests and releases as well as the code. You choose per part what comes along. Run a test migration of one repository first, so you see how users and references come across before you move the rest.

Can I switch from Gitea to Forgejo?

Yes, a direct upgrade is supported up to and including Gitea 1.22. You upgrade to Forgejo 10.0 first and from there to a newer version. If you run a newer Gitea, the route is a migration repository by repository rather than an upgrade of the whole installation. In both cases, make a backup first.

Why is the Dutch government choosing Forgejo?

In April 2026 code.overheid.nl went live, an initiative of the Dutch Ministry of the Interior: a self-hosted code platform for government that runs on Forgejo. It is in a pilot phase. The government describes Forgejo there as an open source, European and sovereign alternative to GitHub and GitLab. We have no part in it, but it says something about where Forgejo stands.

Tell us what you run.

An introduction costs nothing. You talk straight away to one of the two people who will actually do the work.