TBH have you tried just basic git? There’s a web interface built into git itself and you can use ssh for your repositories. It’s simple and just works. If you need a faster web interface there’s also cgit. There’s no bells and whistles either. Just configure ssh, drop your repos in /srv and get to work.
If you need more that just standard basic git the. The other suggestions here are great especially forgjo!
I thought they were already???
Like how/why wouldn’t they be public? Even if the data isn’t readily accessible via a gui it’s gotta be somewhere so that federation works. Unless you’ve been thirsty in your main it shouldn’t be a problem?
Am I missing something?