Before GitHub, I built one in-house. It wasn't as fully featured and beautiful, but it allowed us to manage our repos. It's really not that hard with a bit of bash-fu + curl in the hooks folder, a PHP site, and some css. These days, I think it would be nearly too easy with all the front-end libraries out there.
- https://saucecode.bar/posts/09-hosting-your-git-server.html - https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protoco...
For the front-end part, there are some options:
- cgit [1]: uses CGI to dynamically serve your repos, many customize it - git2html [2]: generates static pages
Or you can build your own, I saw two approaches for this:
1. Use the git library [3] or bindings for it: [4] (golang) 2. Call the git CLI from you web server, I had some examples, but forgot them.
--- [1] https://git.zx2c4.com/cgit/about/ [2] https://github.com/Hypercubed/git2html [3] https://libgit2.org/ [4] https://github.com/go-git/go-git