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.
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.
Gogs is the original. Gitea is a fork because the dev of Gogs wasn’t taking community input (I think that was the reasoning behind it). Forgejo is a fork of gitea because some folks didn’t like gitea forming a for profit corporation (Or something to that effect).
As far as day to day use they’re all fairly similar, though it’s been a long time since I used Gogs.
IMO, the Gogs dev was correct. If you look at that community input and what Gitea became, I was glad to use the version that rejected it.
But I don’t know how it compares with Forgejo.
what’s the problem with gitea? I never used gogs so I can’t compare it
The added features made it harder to deploy, came with some bugs, and overall traded a simple design for community-oriented features that IMO were a negative value overall.
made it harder to deploy? Isn’t it still just a single binary, a config file and a directory for data?
bugs are inevitable for evolving software.
which community oriented features do you mean? are they in the way, or is it just that you don’t need them?
+1 for Forgejo
+1 for Forgejo!
Just set it up with Docker this past week, it was fairly straightforward and has been working well since
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.
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.
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.
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.
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.+1 for Forgejo here. It’s lightweight on resources compared to GitLab but still has all the features you’d need, plus the security/privacy focus aligns with your priorities. I’ve been running it on a small VPS for over a year and it’s been rock soild.
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
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, like:
- A frickin GUI
- Bug-tracker
- Wiki System
- Ticketting system
- Forum + Chat
- Web-Server
Best part !! It’s just one file & the website I linked is a self-hosted instance