I am looking for recommendations for an open source self-hosted version control system source code hosting service. I found a few, but I can’t decide on which one to pick:
If there’s a better one than the ones I’ve listed here, I’d love to hear about it!
I care primarily about privacy and security, if that makes any difference.
I’m currently using forgejo and have no complaints.
Depending on your requirements, you might also consider just using regular git and ssh on a central server somewhere.
How about Fossil ??
Basically it’s an alternative to Git itself, has commands similar to git but with an added bonus of having Github-like features. Best part ! It’s just one file & the website I linked is a self-hosted instance
Love Fossil-scm and it is super easy to self host, via numerous methods.
Came into the thread just to say this. Very happy and thankful you mentioned it already. I think fossil is THE underrated vcs.
I’d like to mention https://chiselapp.com/, since OP’s wish is, AFAICT, to have a service that’s hosted elsewhere.
Not what you want probably but Tangled.sh
tightly-knit
social coding. tangled is new social-enabled git collaboration platform built on atproto. we envision a place where developers have complete ownership of their code, open source communities can freely self-govern and most importantly, coding can be social and fun again.Forgejo all the way
Yup, it’s pretty easy to set up, and since its runners are basically ripped from GitHub, you can piggy back of that documentation.
You asked for a service, but listed software. The latest FOSS software option is Forgejo, you should use it instead of others for all the reasons mentioned. However, if you’re looking for a service, Codeberg runs a very popular Forgejo instance as a service.
If you are not wed to git, and are willing to try something else, why not give Fossil SCM a try. It’s created and maintained by the creator of SQLite. It’s a single executable that provides everything for modern source code management, including a website, and even has an official docker file that just works.
Issue tracking, forum support, email, it’s all there, in a single executable that can serve as both the front and back end depending on how you launch it. And it’s a smaller install than git by itself.
Forgejo - actively developed open source. It’s what powers Codeberg. Easy to set up and manage with Docker. I moved to it from Gogs and skipped Gitea after reading about the forks.
I use Forgejo mostly for code archiving but anything that requires CI/CD, like personal code projects, i use OneDev. No extra setup for pipeline, batteries included
I use Forgejo for my private git repos but in all honesty, it’s massive overkill for my needs.
Those 3 are all fairly similar. Here are some others I can think of:
- Gitlab: many features, complex, pr workflow.
- Forgejo / Gogs: simpler, github inspired interface, pr workflow.
- Radicle: peer to peer, idk much more…
- Sourcehut: minimal (non-github) interface, very modular, email workflow.
- Cgit / Gitweb / etc.: just a git interface, no specific workflow.
If you’re not using any of the additional features, cgit should be enough. If you’re planning on collaborating with others, probably Forgejo would be better.
You can also use individual components of sourcehut, if you want a git web interface with just issue tracking, ci, or wiki, for example.
A pro of Sourcehut is that EVERYTHING can be done by email. So, if you use their issue tracker and want other people to be able to submit issues, they can do it without making an account.
Sourcehut also supports Mercurial, so you also have an option to the herd mentality.
Sourcehut also has zero, or almost zero, JavaScript in the interface, so it doesn’t suck
Sourcehut is also componentized, so you can mix and match the pieces you want or need:
- VCS hosting
- masking list management
- issue management
- build server
- man server
Sourcehut is by far the best hosted VCS option at the moment. The Mercurial support alone puts it miles ahead of the others, which are all hobbled by tight coupling to git.
+1 for Forgejo!
Just set it up with Docker this past week, it was fairly straightforward and has been working well since
+1 for Forgejo
Used Gitea for a while, and decided to switch to Forgejo before the hard fork split (no more code from Gitea), been using it since, In my opinion both work well, but prefer Forgejo.
My only input is gitlab is very complicated, never used the others
To install gitlab:
- Yum install omnibus-gitlab
Done.
maybe the installation is simple, but the whole thing is still a beast and has tons of different services and does a lot of stuff. i prefer forgejo because of it’s simplicity (still not super easy) and it takes less resources.
You’re missing GitLab. I’d be looking at GitLab or Forgejo.
But you might not need this. When you access a private Git repository, you’re normally connecting over SSH and authenticating using SSH keys. By default, if you have Git installed on a server you can SSH to and you have a Git repository on that server in a location you can access, you can use that server as a Git remote. You only really want one these services if you want the CI pipelines or collaboration tools.
I feel like you made it sound a bit backwards :)
There’s nothing to install on a “git server”, git doesn’t have a server component. You can point your git client to a remote place where it can store its files using SSH. But you don’t install anything on the server for this.
Which is why self hosting a git remote is super easy. All you need is a server with ssh and a little bit of storage.
If you just want to sync code between different computers and have a backup, that’s all you need.
Git does have a server component. When git connects to an ssh remote it executes an ssh command that needs to be present.
This is not true. There are lots of places where ssh/vpn is blocked by a firewall while https usually is allowed. So if you want to access/push code while travelling it might be really helpful to have https access to the repo. That was the only reason for me to set up gitlab years ago.
Having a web UI is useful even if you’re not using the extra tools. Not mandatory of course, but nice.