Forgejo vs Gitea vs GitLab CE 2026: Best Git Server for Teams

Every self-hosted Git thread eventually turns into the same argument: Forgejo or Gitea, and does anyone actually need GitLab CE for a five-person team? Looking at governance, resource requirements, and features side by side, the honest answer is that the choice isn’t really about features — it’s about governance, RAM budget, and how much “batteries included” you actually want. This Forgejo vs Gitea vs GitLab CE 2026 comparison walks through what changed at Gitea, what Forgejo inherited and diverged on, and where GitLab CE still earns its much heavier footprint.

Side-by-side logo comparison of Forgejo, Gitea, and GitLab CE with headline stats — RAM footprint, license, governance model
Side-by-side logo comparison of Forgejo, Gitea, and GitLab CE with headline stats — RAM footprint, license, governance model

Forgejo vs Gitea vs GitLab CE 2026: Quick Comparison Table

If you only read one section, read this one — it’s the decision in miniature.

ForgejoGiteaGitLab CE
LicenseMITMIT (OSS core)MIT (CE only; EE is proprietary)
GovernanceCodeberg e.V. non-profit, elected councilFor-profit company (Gitea Ltd)Single company, EE features license-gated
Idle RAM~40–80MB~40–80MB4GB minimum per official docs
Realistic small-team RAM1–2GB1–2GB8GB+ recommended
CI/CDForgejo Actions, GitHub Actions-workflow compatibleGitea Actions, GitHub Actions-workflow compatibleBuilt-in CI/CD, own YAML syntax
Security scanning (SAST/DAST)None built-inNone built-inEE/Ultimate only, not in CE
Nested groups/subfoldersNo (workaround: multiple orgs)NoYes
Best forSolo devs, 2–10 person teamsSame size, if UI polish matters more than governance30+ person teams, compliance needs

Comparison current as of July 2026.

Nothing here is close on resource usage — that’s the single biggest differentiator in this whole comparison, and it drives most of the “who should choose which” logic below.

The Fork Story: Why Forgejo and Gitea Aren’t the Same Project Anymore

You can’t evaluate Forgejo vs Gitea without understanding why they split, because it explains almost every governance difference that follows. In October 2022, Gitea’s domain and trademark were transferred to a newly formed for-profit company without the wider community’s knowledge or approval. Contributors published an open letter of protest, but the transfer stood anyway. A group of them forked the codebase under Codeberg e.V. — a registered German non-profit — specifically to keep the project’s governance out of any single company’s hands.

For about a year, Forgejo stayed close to Gitea, tracking upstream commits the way some Linux distros track a parent distro. That changed in early 2024. Forgejo’s own blog post on the split states plainly that “the governance and development models of Gitea and Forgejo diverged over time, and so did their goals.” From that point on, Forgejo cherry-picks selectively from Gitea instead of auto-merging, and it no longer contributes changes back upstream. Forgejo v1.20/v1.21 was the last release anyone can call a guaranteed drop-in migration target — newer versions on either side don’t promise compatibility.

GitLab’s situation is a completely different animal. It’s had a free, self-hostable Community Edition since its earliest releases, sitting alongside a paid Enterprise Edition on the same codebase — EE features are unlocked by a license key rather than living in a separate fork. There was never a governance dispute; the CE/EE split was the business model from day one.

Timeline graphic showing the October 2022 Gitea governance dispute, the 2024 Forgejo hard fork announcement, and GitLab
Timeline graphic showing the October 2022 Gitea governance dispute, the 2024 Forgejo hard fork announcement, and GitLab’s original CE/EE split

Governance and Licensing: What Actually Changed at Gitea (and What Didn’t)

This is the part most comparison posts get sloppy on, so it’s worth being precise. Gitea’s open-source core has stayed MIT-licensed the entire time — nothing about the license itself changed. What changed is the company structure: Gitea Ltd is a for-profit entity, and it launched “Gitea Enterprise” as a separate paid product in March 2024. The free OSS version has no feature gate; you’re not missing functionality by skipping the paid tier.

That said, two governance details are worth knowing before you commit. Gitea requires contributors to sign a copyright assignment agreement, even for MIT-licensed contributions — Forgejo’s own comparison page calls this out directly and doesn’t replicate it. And Gitea reportedly gives advance, pre-disclosure notice of security vulnerabilities to paying Gitea Enterprise customers before the wider public gets word. Forgejo instead notifies downstream parties in advance through encrypted channels, without a paywall attached.

Forgejo, by contrast, runs its entire development, testing, and release pipeline on free/libre tooling and doesn’t require copyright assignment at all — contributions stay under their original terms. It’s governed by an elected council operating under Codeberg’s non-profit charter, with a stated mandate to act in the public interest rather than a company’s commercial interest.

GitLab CE sits in its own category here: it’s 100% MIT-licensed with no per-user limits or feature gates in CE itself. GitLab EE (Premium/Ultimate) uses a separate, more restrictive proprietary license for the extra code shipped in the same repo — but that code simply isn’t unlocked unless you pay, so it doesn’t affect CE users at all.

Resource Requirements: What Actually Runs on a Cheap VPS

This is where the three projects stop being philosophically different and become practically different. Gitea and Forgejo are both single Go binaries under 100MB on disk, and real-world reports put them idling at roughly 40–80MB of RAM — genuinely runnable on the cheapest VPS tier a provider sells. Documented minimums vary by source (some guides cite 512MB as a bare floor, others recommend 1–2GB with a vCPU of headroom for CI runners), so treat any single number as a range rather than gospel — Forgejo doesn’t publish one official hard minimum, and third-party guides disagree with each other. Given those idle figures, a 1GB/1vCPU box is a reasonable starting point for Forgejo with a small team on SQLite; once you add a Postgres database and Actions runners, budgeting for 2GB is the safer call.

GitLab CE is a different order of magnitude. It’s a Ruby on Rails monolith bundled via the Omnibus package with PostgreSQL, Redis, Gitaly, and Sidekiq workers all running alongside the app itself. GitLab’s own documentation states a 4GB minimum of addressable memory (RAM + swap) just to install and use it, supporting up to roughly 500 users at that floor. There’s a documented reduced-footprint config for memory-constrained environments that can run on as little as 2GB RAM + 1GB swap, but GitLab is explicit that this is a degraded mode, not the recommended baseline. For a real single-node production install with active CI/CD, multiple current sources converge on 8GB+ RAM and 4 CPU cores as the practical floor — some guidance now points to 16GB as the more comfortable baseline for a single node.

If you’re pricing out a VPS for any of these, that RAM gap is the entire budget conversation: a Forgejo or Gitea instance fits on a $6/month box, while a comfortable GitLab CE install pushes you into $40–80/month territory before you’ve added a single CI runner. our roundup of cheap VPS plans breaks down which providers give you the most headroom per dollar if you’re going the Forgejo/Gitea route — and new Vultr accounts get $300 in free credit for 30 days if you want to test-drive an instance before committing to a paid plan.

CI/CD and GitHub Actions Compatibility

Both Gitea (since v1.21, “Gitea Actions”) and Forgejo (“Forgejo Actions”) implement a runner system designed to be workflow-syntax compatible with GitHub Actions. In practice, that means a lot of .github/workflows/*.yml files can move to .gitea/workflows/ or .forgejo/workflows/ with basically nothing but a path change — a genuinely low-friction migration if you’re coming off GitHub. If you’re weighing what that migration actually costs on the GitHub side first, our breakdown of GitHub Actions pricing changes covers the runner-minute math that’s pushing a lot of teams toward self-hosted CI in the first place.

Gitea’s April 2026 release (v1.26.0) shipped workflow concurrency groups — so new runs queue or cancel behind in-flight jobs, matching GitHub Actions behavior — alongside a large frontend rewrite moving off jQuery/Fomantic UI onto HTMX and Tailwind. It’s described as Gitea’s most extensive release to date, at 1,528 merged pull requests. Forgejo’s v15.0 (April 16, 2026 — its 100th release and a new LTS supported through July 15, 2027) added a redesigned runner registration flow with a proper web UI, reworked label filtering, and continued accessibility work; v14.0 from January 2026 added inline issue/PR search filters and swapped the heavier Monaco editor for CodeMirror.

GitLab CE takes a fundamentally different approach: CI/CD, a container registry, issue tracking, wikis, and package registry support are all bundled into one installer, with no separate Actions-style project to bolt on for basic pipelines (GitLab Runner is still its own agent process, but it’s a first-class part of the platform, not an add-on). The tradeoff is GitLab’s own CI YAML syntax rather than GitHub Actions compatibility — if your team already has a library of GitHub workflow files, that’s a real rewrite, not a path change.

Forgejo is also the only one of the three actively building forge federation over ActivityPub, funded partly by an NLnet grant targeting an August 2026 shipping deadline. Worth knowing before you get excited about it: as of the May 2026 monthly report, federation is explicitly experimental — moderation and access-control tooling isn’t finished, and the project has warned it may make breaking changes with no advance notice, which could burn an instance’s federation identity. Treat it as a roadmap item, not a reason to pick Forgejo today.

Screenshot comparison of a GitHub Actions workflow file running unmodified under .forgejo/workflows/ vs a GitLab CE .gitlab-ci.yml pipeline
Screenshot comparison of a GitHub Actions workflow file running unmodified under .forgejo/workflows/ vs a GitLab CE .gitlab-ci.yml pipeline

Security Scanning and Enterprise Features: Where GitLab CE Pulls Ahead

Here’s the honest tradeoff nobody likes admitting when they’re rooting for the smaller project: GitLab CE ships more “batteries included” than Gitea or Forgejo out of the box, even without touching EE. Integrated security scanning — SAST, DAST, container scanning — is gated to GitLab EE (Premium/Ultimate), so CE alone doesn’t get you there. But GitLab CE’s built-in container registry, package registry, and CI/CD are all still meaningfully more complete than what Gitea or Forgejo offer natively, which have no built-in security scanning at all and lean on third-party tools like SonarQube or OWASP ZAP bolted on separately.

If your team genuinely needs compliance reporting or integrated SAST/DAST as a requirement — not a nice-to-have — that’s the point where GitLab CE stops being “the heavy option” and starts being the only option that fits, short of paying for EE.

Known Limitations: What Users Actually Complain About

The most consistently cited Forgejo/Gitea limitation, repeated across a Hacker News thread discussing the Forgejo v13.0 release, is the lack of GitLab-style nested groups or subfolders for organizing repositories. One commenter put it bluntly: they were “still waiting for them to add sub-folder or groups/projects support like in gitlab.” The practical workaround small teams use is creating multiple separate organizations instead of nested ones — it works, but it’s not the same as a real hierarchy once you’re past a handful of repos.

The same thread flagged federation as incomplete, which tracks with Forgejo’s own admission above. Users also noted that Renovate-based dependency update bots work fine on Forgejo, but GitHub’s native Dependabot integration is still considered a more convenient out-of-the-box experience by comparison — one area where self-hosting trades a bit of polish for control.

Pricing: Forgejo vs Gitea vs GitLab CE 2026

All three are free to self-host, so “pricing” here really means server cost, not license cost.

License CostPaid TierSelf-Hosting Cost Driver
Forgejo$0 (MIT)NoneVPS RAM/CPU only — fits a $6/month box
Gitea (OSS)$0 (MIT)Gitea Enterprise, custom/quote pricingVPS RAM/CPU only — same footprint as Forgejo
GitLab CE$0 (MIT)GitLab EE Premium/Ultimate, self-managed pricing reportedly $19–29+/user/month (sources disagree — check GitLab’s current pricing page)Bigger VPS or dedicated box for 4–16GB RAM

Prices last checked: July 2026.

None of the three run a consumer affiliate program for this comparison — Forgejo and Gitea don’t have one at all, and GitLab’s own program listing has no active tracking link as of this writing, so any GitLab mention here is a plain, non-sponsored reference to their homepage. What actually costs money is the server underneath: if you’re running Forgejo or Gitea, a $6/month instance genuinely covers a small team, and if you’re leaning toward GitLab CE’s heavier footprint, you’re realistically pricing out an $40–80/month VPS or a small dedicated box instead.

Who Should Choose Which

Multiple independent comparisons converge on similar sizing logic. Solo developers and 2–10 person teams are best served by Gitea or Forgejo — Forgejo gets the slight edge in most current write-ups specifically for its governance model and the pace it’s shipped LTS releases at since 2024. If UI velocity and commercial polish matter more to you than who governs the project, Gitea’s HTMX/Tailwind rewrite in 1.26.0 is a genuine reason to pick it instead — just go in knowing the contributor and security-notice terms above.

Teams in the 10–30 range with moderate CI needs can still run Gitea or Forgejo plus an external CI runner like Woodpecker CI without needing GitLab at all — the resource savings alone make this worth trying before you reach for something heavier.

Teams of 30+ in regulated environments that need integrated SAST/DAST, compliance reporting, or built-in security/container scanning should go straight to GitLab CE (or EE, specifically for the scanning features CE doesn’t include). At that size, the extra RAM budget stops being the deciding factor and the built-in tooling starts paying for itself.

Who should not use Forgejo or Gitea: any team that needs GitLab-style nested project groups today, not as a future roadmap item — the multiple-organizations workaround gets messy past a dozen or so repos. Who should not default to GitLab CE: anyone on a single small VPS who doesn’t need integrated security scanning — you’d be paying in RAM and setup complexity for features you’ll never touch.

Decision flowchart — team size and compliance needs mapped to Forgejo, Gitea, or GitLab CE
Decision flowchart — team size and compliance needs mapped to Forgejo, Gitea, or GitLab CE

Forgejo Is the Default for Small Teams

For most solo developers and small teams reading this Forgejo vs Gitea vs GitLab CE 2026 comparison, Forgejo is the right default. It runs on the cheapest VPS tier a provider sells, keeps governance out of a single company’s hands, and its GitHub Actions-compatible CI covers what a small team actually needs day to day. Pick Gitea instead if the faster UI overhaul and commercial development pace matter more to you than the governance story — it’s the same resource footprint either way.

Reach for GitLab CE only when you’ve got 30+ people or a compliance requirement that specifically needs integrated SAST/DAST and built-in scanning — otherwise you’re paying in RAM, setup complexity, and a bigger VPS bill for tooling most small teams never open. If you’re going the lightweight route, Vultr spinning up a $6/month instance is the cheapest way to test Forgejo or Gitea yourself before you commit a real repo to it.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top