After a great deal of procrastination, I finally got around to
installing Gitea (https://gitea.io/en-us/). I chose it over GitLab and
SourceHut because Gitea has a reputation as the easiest to set up (and
Codeberg is now based on it). Sure enough, it only took about an hour of
toying with Docker Compose and PostgreSQL to successully push code to
the first repo. Kudos to the devs!
The Gitea instance is now running on the initial scheme.org server, but
can be moved to another one later.
I think it's best to be flexible about which services to host under
scheme.org and not tie the domain to a single service for each job. To
that end, it should go under gitea.scheme.org. If someone else wants to
set up and maintain gitlab.scheme.org or sourcehut.scheme.org, that's
fine by me. If Gitea proves really unpopular, I can also deprecate it in
favor of one of the others, but for now it seems well worth the
negligible time investment.