Theory
Theory: A Single Binary is an Architectural Statement
Gitea/Forgejo keep Git hosting in one Go process, SQLite-capable. That is a complexity budget. The Forgejo fork is a governance and license theory, not a protocol fork.
Invariants
- SQLite + local disk is enough until it is not (locking, size).
- Actions-compatible CI is optional, not the product core. The runner is a second process.
- Codeberg is Forgejo-as-a-service with community ops (chapter 29).
- The Forgejo fork did not change the Git protocol. A remote is still SSH or HTTP.
one binary ──► git repos on disk
──► SQLite/Postgres
──► optional runners
What can break
- Expecting GitLab-class HA from a hobby compose file.
- Treating a current Gitea database as a drop-in for current Forgejo. The hard fork ended that promise.
How to read this chapter
Origins, fork, comparison, scale, two labs, when it fits.