I've been hosting a public Gitea instance for a few years now for personal projects. For now, I've decided to shut it down and move my public projects to Github.
I'm turning it down because I don't feel the maintenance is worth my time. I set up a public Git server to share projects with the world, and I can accomplish that with Github. I'll look forward to leveraging their CI, too--I've been hoping for a chance to play with it.
I guess I've been running a Git server of some form--or at least a web UI--for 7 or 8 years.
When I was in college, I used an inexpensive Linode VM for development some of the time, but I usually ran development tools on my desktop or laptop since a VM with similar performance would've been pretty expensive. I also used some Linux machines on campus.
My school had an on-prem Github instance at the time that I used for some class work, but it was at this time that I started hosting a GitWeb instance. GitWeb is shipped with Debian releases, and it's pretty easy to configure, but it's very barebones.
After a couple of years of GitWeb, I set up a Gogs server. I had a friend running Gogs too, and I liked the UI after a little playing around with it. I think my motivation for switching from GitWeb was twofold: I wanted private repositories and GitWeb didn't have syntax highlighting support for my single Scala project that I never touched.
Gogs served me well for a couple of years too. At some point I switched from Linode to DigitalOcean. Next I made a minor detour to Gitea. Uninterestingly, I actually can't recall why. Gitea had some feature that Gogs didn't.
I've been pretty lucky, since these services have been pretty stable. I used sqlite for both Gogs and Gitea with nginx as a reverse proxy, and nginx was also in front of GitWeb (I think it used FastCGI?). I'm pretty sure I've been running systemd the whole time.
At some point I failed to disable public user registration--I can't remember if this was Gitea or Gogs. Someone found my site and made some users, but that was easy to clean up.
Both Linode and DigitalOcean have been very reliable hosts.
One reason I call this stability "luck" is that I've never actually set up monitoring for my git instance. These days at home I'm using https://healthchecks.io to monitor service running on my LAN.
Maybe a follow-up post is buried in here, too: part of the burden of maintenance was keeping Gitea up to date. The alternative, packaging Gitea in Debian, would mean less frequent updates.
I run several services in containers on my LAN, but I don't know how folks manage automatic updates. I can write a cron job that does docker pull and restarts services, but maintaining such a script is maintenance too. It might as well require monitoring too, since automatic upgrades increase the potential for downtime.
One of the aforementioned containers is a Gitea instance on my LAN. If I figure out how to manage updates better, I'll try to write something up.