Skip to main content

Self-hosted Git: Gitea, Forgejo and GitLab compared

Run your own GitHub — what Gitea, Forgejo and GitLab CE are, what each is known for, and which to pick for private repos, CI and code review.

A self-hosted Git server hosts your source code repositories on your own hardware instead of GitHub or GitLab's cloud. You get the same core workflow — clone, push, pull, review, CI — with the code living on a machine you control. Three projects dominate.

What it is

  • Gitea — a lightweight, fast Git hosting platform written in Go. It is the "small but complete" option: repos, issues, pull requests, wikis, a package registry and built-in CI (Gitea Actions).

  • Forgejo — a community-governed fork of Gitea, created to keep the project under a non-profit rather than a single company. Technically near-identical to Gitea; the difference is governance.

  • GitLab CE — the open-source Community Edition of GitLab. Far heavier, but a full DevOps platform: repos, merge requests, CI/CD pipelines, container registry, issue boards, the works.

What they do

All three give you: private and public repositories, issues and pull requests, code review, wikis, user/team permissions, and a web UI for browsing code and history. Beyond that they diverge: Gitea/Forgejo stay lean; GitLab CE bundles a full CI/CD engine and many DevOps features out of the box.

What each is known for

  • Gitea — being tiny and fast. It runs comfortably on a 1–2 GB VPS and starts in seconds, which is why it is the default choice for a personal or small-team Git server.

  • Forgejo — "Gitea, but community-owned." Known for the governance split and for being drop-in compatible with Gitea.

  • GitLab CE — being the complete DevOps platform. Known for powerful built-in CI/CD, but also for resource hunger — it wants 4 GB+ RAM, ideally 8 GB, and is a serious install (usually with its Omnibus package or the Docker image).

Why use them

  • Code privacy and control — proprietary source never leaves your infrastructure; you set retention, access and backups.

  • Cost at scale — per-seat pricing on hosted platforms grows with your team; a fixed VPS does not.

  • No rate limits or forced migrations — your CI minutes and storage are bounded by your server, not a plan tier.

  • Integration with your stack — a Git server on the same network as your CI runners, registry and internal tools is simpler to wire together.

Which to pick

You want…Choose
A fast, light private GitHub for a small teamGitea or Forgejo
Community governance over single-company controlForgejo
A full DevOps platform with strong built-in CI/CDGitLab CE

Where and how

  • Gitea / Forgejo: a 1–2 vCPU, 1–2 GB VPS, deployed via Docker or a single binary, with SQLite (small) or PostgreSQL (recommended) and a data volume for repos. Roughly a 10-minute install.

  • GitLab CE: a 4 vCPU, 8 GB VPS minimum, deployed via the official Docker image or Omnibus, with PostgreSQL, Redis and a large data directory.

Either way: point a domain at it, put TLS in front, keep registration closed, and back up both the database and the repo storage. See /app-hosting/forgejo and /app-hosting/gitlab.