Git Hosting & Forges

Self-hosted Git servers, code review, and software forges, alternatives to GitHub and GitLab.com.

18 self-hosted apps · 67 comparisons

All git hosting & forges apps

Last reviewed Aug 26, 2026 · 440 words

Gitea gives you repositories, issues, pull requests, a package registry, and CI on 256 MB of RAM from a single Go binary. GitLab CE delivers a comparable feature list and wants 4 GB and real operational attention. That 16x gap in footprint is the honest summary of this category: the question is not which forge can host your code — all 19 of them can — but how much platform you want to operate alongside it.

How to choose a forge

Weight comes first. The Go-binary forges (Gitea, Forgejo) install in minutes, run happily on a Raspberry Pi with SQLite, and stay out of your way; GitLab CE is a Hard-difficulty install that rewards you with integrated CI/CD, container registry, and security scanning that genuinely does replace a stack of separate tools — for teams that will use all of it. Second, governance, which matters more here than in most categories because migrating a forge is painful: Forgejo exists precisely because Gitea's 2022 move under a for-profit company worried part of its community, and the fork is now GPL-3.0 and community-governed. The projects remain similar enough that Forgejo vs Gitea is a close call, but pick deliberately, because they are slowly diverging. Third, decide whether CI belongs inside the forge — Gitea Actions and Forgejo Actions run GitHub-Actions-style workflows natively, which for small teams removes the need for a separate CI system entirely.

Where to start

Forgejo for most self-hosters: same easy deployment as Gitea (Docker or single binary, 256 MB), active development, and a governance model aligned with people hosting their own infrastructure. Gitea if you want the larger ecosystem and longer track record — it has been shipping since 2016 and sits at 57,605 stars. GitLab CE only when a team will exploit the integrated platform; as a personal forge it is paying rent on features you will not visit.

The SSH port trap

In Docker, the forge's SSH server competes with your host's own port 22. The standard fix is mapping container SSH to a spare host port — 222 in the catalogue's Gitea config — and the catch is that every clone URL then carries that port. Decide the port on day one; changing it later quietly breaks every checked-out remote and CI job that references the old URL.

What I'd do

Forgejo, Docker, SQLite, SSH on 222 from the start, and Forgejo Actions instead of a standalone CI server. Revisit GitLab only if compliance scanning or a built-in registry becomes a hard requirement.

Curated picks

Git Hosting & Forges comparisons

67 head-to-head comparisons in this category.