I am on the same path as you so my 2 cents are:
- I am using my raspberry Pi for hosting my services
- I had to configure my router and talk to my ISP to remove NAT restrictions (this was the hardest part! really hard.)
- The other router part was setting up port forwarding and firewall which were pretty easy to do
- For git I am doing it from scratch, as I just want to create a web interface, basically I run git-http-backend and a go server [1]
- If you do not want to do git from scratch I recommend using cgit.
--- [1](https://saucecode.bar/posts/09-hosting-your-git-server.html)