We did some profiling and spent quite a bit of time looking at Gitea's source code, it was pretty clear in the end that it's just very very inefficient for large setups. It does an excessive amount of I/O on the Git repositories every time you load a page; there is some caching but not enough / not of the right things. We were really open to implementing fixes and submitting PRs but the community was so hostile that we just abandoned it.
It was overall an enormous waste of time and I can't recommend Gitea to anyone with a setup larger than a handful of small repositories.
I wonder how CodeBerg works though.
Still, we use it, but try to use just core functionality (git, CI, issues, wiki) and avoid anything else. Always wanted to try gitea, maybe now it's the time.
GitHub's appeal is all the add-on functionality that's not actually stored in the git repo itself; e.g. Issues, Pull Requests, etc. That can't be migrated away easily.
Anyone who (a) has concerns about GitHub (monoculture, Microsoft, Copilot, whatever), and (b) relies on such add-on functionality, should look into moving that metadata into their repos. To give Microsoft some credit, GitHub Actions already does this (via YAML files in a .github/workflows folder)
For my personal projects, I use a simple program called Artemis to manage issues, which just stores maildir files in a hidden folder: http://www.chriswarbo.net/blog/2017-06-14-artemis.html