Gitea, Forgejo and GitLab Community Edition are the three realistic choices when a team wants Git hosting on its own server instead of GitHub. The short answer: Gitea or Forgejo if you want a light service that runs on a small VM and you mainly need repositories, pull requests, issues and basic CI; GitLab CE if you want the full platform, including groups within groups, mature CI/CD and the option to move to paid tiers later, and you can give it a much larger server. Between Gitea and Forgejo the code is similar, so the decision is about licence, governance and release policy. Facts below were checked against the official documentation on 24 October 2026. Not tested yet: we have not run these three side by side, so there are no memory or speed measurements here.
Side-by-side comparison
| Point | Gitea | Forgejo | GitLab CE |
|---|---|---|---|
| Licence | Free, open source (MIT); Gitea Enterprise and Gitea Cloud from CommitGo are commercial | Free, open source (GPL v3 or later from v9.0; v8.0 and earlier were MIT) | Free, open source (MIT); Premium and Ultimate tiers are commercial |
| Who runs the project | Open source with leadership and commercial support from CommitGo | Community project; domains held by the non-profit Codeberg e.V. | GitLab, the company behind GitLab.com |
| Latest version we saw | 28.2.0 (18 October 2026) | 17.0.0 (15 October 2026); 15.0.10 is the LTS line | 19.x line, monthly releases |
| Built-in CI | Gitea Actions, workflows in .gitea/workflows/, separate Gitea Runner | Forgejo Actions, workflows in .forgejo/workflows/, separate Forgejo Runner | GitLab CI/CD, .gitlab-ci.yml, separate GitLab Runner |
| Databases | SQLite, MySQL, PostgreSQL, TiDB, MS SQL | SQLite, MySQL/MariaDB, PostgreSQL | PostgreSQL (17.x to 18.x for GitLab 19) plus Redis or Valkey |
| Server size | Single Go binary; low RAM and CPU use | Single Go binary; SQLite is described as fine for at least 10 users | Single node baseline: 8 vCPU and 16 GB RAM; can run with at least 8 GB |
| Default web port | 3000 | 3000 | 80/443, set through EXTERNAL_URL |
Gitea: the lightweight original
Gitea is a single binary written in Go. According to the official site, it runs on Linux, Windows, macOS, FreeBSD and Kubernetes on x86 and arm64, and ships Git hosting, pull requests, issues, Kanban boards, a package registry for more than 20 formats (Container, Helm, Maven, npm, NuGet, PyPI and others) and Gitea Actions, which the project calls “closely compatible with GitHub Actions”. The code is MIT licensed; leadership and commercial support come from CommitGo, which also sells Gitea Enterprise and the hosted Gitea Cloud.
The version numbers changed this autumn. The 28.0.0 release post says Gitea “drops the historical 1. prefix”, so 1.27.3 was followed by 28.0.0 on 30 September 2026, and 28.2.0 arrived on 18 October. Two breaking changes matter for admins: Gitea now refuses to start with Git older than 2.25.0, and self-registration is disabled unless [service] DISABLE_REGISTRATION = false is set explicitly.
Installing from the binary follows the official guide: create a git system user, create /var/lib/gitea/{custom,data,log} and /etc/gitea, copy the binary to /usr/local/bin/gitea and run it as a systemd service. The web installer writes /etc/gitea/app.ini; afterwards lock it down with chmod 640 /etc/gitea/app.ini.
Gitea Actions have been built in since 1.19 and, per the quickstart, enabled at instance level by default since 1.21.0. Each repository still has to switch on “Enable Repository Actions” in its settings. Workflows live in .gitea/workflows/, and the runner is registered with:
gitea-runner register --no-interactive --instance https://git.example.com --token <token>
gitea-runner daemonForgejo: the community fork
Forgejo was created in October 2022 from the Gitea codebase. The project’s own comparison page says it started after a for-profit company took over the Gitea project, and that it became a hard fork in early 2024 when the two codebases began to diverge. Forgejo’s domains are in the custody of Codeberg e.V., a non-profit association. Since v9.0 the software is released under GPL v3 or later; the FAQ states that v8.0 and earlier were MIT.
The clearest practical difference is the release schedule. Forgejo publishes a new stable version every quarter and every fourth one is Long Term Support: 7.0, 11.0, 15.0 and the planned 19.0 in April 2027. A normal release is supported for about three months; an LTS for about fifteen. Today that means 17.0.0 (supported until 28 January 2027) or 15.0.10 LTS (supported until 15 July 2027). If you dislike upgrading every quarter, stay on the LTS line.
Installation mirrors Gitea with different paths. The binary guide uses /usr/local/bin/forgejo, /var/lib/forgejo and /etc/forgejo/app.ini, needs git and git-lfs installed, and provides a systemd unit you download from Codeberg. SQLite is described as “good enough for at least 10 users”; use PostgreSQL or MariaDB for anything bigger. Forgejo also listens on port 3000 by default.
Forgejo Actions is enabled by default (disable with [actions] ENABLED = false) and reads workflows from .forgejo/workflows/. The workflow reference is honest about compatibility: “GitHub Actions and Forgejo Actions are not the same and things might not work right away.” Actions without an absolute URL are resolved against DEFAULT_ACTIONS_URL, typically https://data.forgejo.org. A Windows build of the runner exists only as a community effort.
Moving from Gitea is supported, with a limit. The upgrade guide says upgrades to Forgejo are supported from Gitea up to and including v1.22, in two steps: first to Forgejo v10.0.x, then to the current release. Anything newer than Gitea 1.22, including the 28.x line, has no documented migration path. Take a full backup first; downgrades are refused because they would damage the database.
GitLab CE: the full platform
GitLab Community Edition is the MIT-licensed build of GitLab, published as the GitLab FOSS repository. It gives you the Free tier: repositories, merge requests, issues, GitLab CI/CD with GitLab Runner, a container registry and nested groups (subgroups), which Gitea’s own comparison table lists as missing in Gitea. GitLab’s CE page adds a twist: the Enterprise Edition package can also run with Free features and no paid licence, and GitLab recommends “Choose EE, even if you plan to use Free” so that paid tiers can be activated later without a conversion. If you want the pure open source build, install gitlab-ce.
The cost is hardware. The requirements page gives a single-node baseline of 8 vCPU and 16 GB of memory, notes that GitLab can run with at least 8 GB, asks for 40 GB of disk on application nodes plus space for all repositories, and wants PostgreSQL 17.x to 18.x for GitLab 19. The Linux package bundles PostgreSQL, Redis and Sidekiq. GitLab ships a new minor version every month.
The recommended path is the Linux package, which the install methods page calls “the most mature, scalable method” and the same build used on GitLab.com. Packages exist for Ubuntu 22.04, 24.04 and 26.04 and Debian 11, 12 and 13 on amd64 and arm64. The Ubuntu guide boils down to:
sudo apt update && sudo apt install -y curl
curl --location "https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh" | sudo bash
sudo EXTERNAL_URL="https://gitlab.example.com" apt install gitlab-ceThe random root password is written to /etc/gitlab/initial_root_password and that file is removed after 24 hours, so sign in and change it the same day.
Which one should you choose?
- Small team, small VM, Git plus pull requests and simple CI: Gitea or Forgejo. Both run from one binary on port 3000 with SQLite or PostgreSQL.
- Free Software licensing, non-profit governance or an LTS line matter: Forgejo 15.0 LTS. Accept that GitHub Actions workflows may need small changes.
- Windows or FreeBSD builds, MS SQL or TiDB, or a vendor to pay for support: Gitea 28.x.
- Subgroups, mature CI/CD, or a likely move to paid tiers: GitLab CE (or EE in Free mode) on a server with at least 8 GB of RAM, ideally 16 GB.
- Already on Gitea and thinking about Forgejo: decide before upgrading past Gitea 1.22, the last version Forgejo documents a migration from.
Whichever you pick, keep deployments out of shell scripts: have the pipeline call Ansible for server configuration, and build a disposable test machine with Vagrant or a VM on Proxmox VE before you trust a workflow with production. The wider toolchain is covered in our DevOps automation tools hub; hosting the Git server as a VM is covered in the virtualization and container tools hub.
Limitations
This comparison is built from official documentation and release pages, not from our own installations. We have not measured memory use, page load times or CI throughput for any of the three, and we have not performed a Gitea-to-Forgejo migration. Version numbers, support dates and requirements change quickly; check each project’s release page before you deploy.
FAQ
Is Forgejo a fork of Gitea?
Yes. Forgejo started in October 2022 as a soft fork of Gitea and became a hard fork in early 2024. The two still look alike, but code no longer flows freely between them.
Is Gitea free?
The Gitea software is free and open source under the MIT licence. Gitea Enterprise and Gitea Cloud, sold by CommitGo, are commercial products built on it.
Is Forgejo better than Gitea?
Neither project publishes a feature-by-feature table. Forgejo offers LTS releases, GPL licensing and non-profit governance; Gitea offers broader platform and database support and a company behind it.
Which is lighter, Gitea or GitLab CE?
Gitea. It is one binary that can run with SQLite, while GitLab’s single-node baseline is 8 vCPU and 16 GB of RAM with PostgreSQL and Redis bundled in. We have not measured the exact difference ourselves.
What is the difference between GitLab CE and EE?
CE is the MIT-licensed open source build and only ever runs Free features. EE contains the proprietary code for Premium and Ultimate but runs with Free features until a licence is added, which is why GitLab recommends installing EE even for free use.
Can I migrate from Gitea to Forgejo?
Yes, from Gitea versions up to and including 1.22, in two steps via Forgejo v10.0.x. Newer Gitea releases, including 28.x, have no documented path, so plan the switch before upgrading Gitea.
Last updated: 24 October 2026 · ITForgePro editorial team. Licence, version and platform details are checked against each developer's official documentation.





