Gitea and Forgejo

Self-Hosting with Gitea and Forgejo

When GitLab 377 is too heavy and SaaS is not allowed, lightweight forges fill the gap. Gitea 3,896 (github.com/go-gitea/gitea (https://github.com/go-gitea/gitea 58,194 ), MIT) is a single Go binary with repositories, issues, pull requests, a package registry and Gitea Actions. In October 2022 its lead maintainers moved the trademarks and domains into a for-profit company, Gitea Ltd, which now sells Gitea Enterprise ($19 a user a month, or $9.50 on a one-year commitment) and a hosted Gitea Cloud. Part of the community answered in December 2022 with a fork, Forgejo 16,221 (codeberg.org/forgejo/forgejo (https://codeberg.org/forgejo/forgejo 3,719 )), which broke fully from Gitea's code in

  1. The nonprofit Codeberg 3,719 e.V. holds its domains and runs the public instance codeberg.org. From v9.0 (October 2024) new Forgejo code is GPLv3-or-later,

so it can never be relicensed as proprietary. Forgejo releases quarterly; v15 is the long-term-support release, supported until July 2027.

Both run from one container with a built-in SQLite 4,756 database:

Starting Gitea and Forgejo side by sideShell
docker run -d --name l1-gitea -p 127.0.0.1:31300:3000 \
  -e GITEA__security__INSTALL_LOCK=true gitea/gitea:1.27.3
docker run -d --name l1-forgejo -p 127.0.0.1:31301:3000 \
  -e FORGEJO__security__INSTALL_LOCK=true codeberg.org/forgejo/forgejo:16.0.5
sleep 25
curl -s localhost:31300/api/v1/version; echo
curl -s localhost:31301/api/v1/version; echo
docker stats --no-stream --format '{{.Name}} {{.MemUsage}}' l1-gitea l1-forgejo
docker rm -f l1-gitea l1-forgejo >/dev/null
Output
34ac13c71bfae1d25c1eccd8845c6feafabf25bf5c8395cb331589fb8b8b886c
9e12fba46d1282c7c3e55a4902599750d8b867d12e7f4b9bf3708023f9fef4c8
{"version":"1.27.3"}
{"version":"16.0.5+gitea-1.22.0"}
l1-gitea 104.5MiB / 31.28GiB
l1-forgejo 109.1MiB / 31.28GiB

Each idles at about 100 MiB, under a hundredth of GitLab's baseline. Forgejo's version string still carries a +gitea-1.22.0 suffix for tools that check for a Gitea version. Gitea calls its Actions "mostly compatible" with GitHub 29 's (its runner forks act 72,126 , act); Forgejo reads .forgejo/workflows, falls back to .github/workflows, and says it is not designed to be compatible, so expect small edits to workflows.