For completely private services, the obvious answer is a VPN. But what about the ones that need to be “partially” public? Whether just read only, or with restrictions to publicly registered accounts.
For example, If I wanted to open up a git host where I allow public registrations so they can send issues/patches but can’t create repos (kinda impossible with pull requests but you get my point)
Is there any specific thing you can do, or do you just disable registrations completely except for something “out-of-band” (ask me on XYZ to create an account for you, git send-email, mirrors to public services, etc…)
Of course, individual software may have access control features built in, but as a whole, is there anything reasonably generic?
Imo a relatively sure way for “global” control would be setting up an SSO provider and managing access through that. Though that’s additional work and you’d still have to set the right settings in the application itself to how you want it.
Have you looked at Gitea? I use it myself, but mine is private and I am the only user, so I can’t help with your specific issue. I did find this post before replying: Can new users be restricted to issues only? although this might mess up your ability to have pull requests.
Not git(ea) but Synapse: I use separate Traefik routers for internal and external endpoints. Internal has access to all paths but for external entry points I allow or deny list paths as needed. It’s error prone as it can either break the app if not everything required is allowlisted, or cause a security issue if not everything is deny listed.
Invite only registrations is what I am usually doing.
For git forges like Gitea you can also do Oauth2 logins via common services like Github/Gitlab but it is not idea. I hope forge federation will arrive soon to solve that :)