HACKER Q&A
📣 warrenm

Gitlab or Gitea for self-hosting Git?


Use case needs:

- internal, small company (<10 "devs" of any kind) development source control

- as lightweight as possible (but no lighter)

- support for "common" git clients (vscode, cli, atom, etc)

If it matters, most of the development work that will be going on is related to config file management, xml documents, scripts, etc - for the foreseeable future, we have no need for integrations into automated build systems

With those needs/conditions in mind, would you pick Gitea, Gitlab, or something else ... and why?


  👤 thepapanoob Accepted Answer ✓
if you need CI/CD gitlab. if you allready have CI/CD with something like jenkins or whatever, or even if you dont need CI/CD at all gitea.

👤 remram
Gitea is lighter, GitLab has more features. Look at the Gitea features list and see if it works for you.

Obviously both are Git hosting platforms so I'm not sure what more we can do for you.


👤 Visiting9950
For my personal website I had the same question. I chose Gitea because it has a simpler stack than Gitlab can't say much more than that. Gitea will work for your use case.

Consider looking at the financial cost of support for both. As a company your time fixing problems is what I think is the most important consideration. Initial setup time is a small price compared to lifelong maintenance.

For Gitea I never had any problems I didn't create myself. But aren't all problems like that. And I didn't have a very complicated set up.


👤 habitue
Gitea is significantly easier to set up and maintain

👤 c0balt
Gitea, as someone using GitLab. Both will intefrate with editors though GitLab's MR/ Issues tend to have more mature integrations (if you want that in your editor).

GitLab is good for teams or when you want to play with a fully featured CI/CD and have a solid Issue/ MR System. It however is also quite a hassle to maintain sometimes though the omnibus installations have gone a long way. Also be prepared to spare some RAM.

Gitea on the other hand is light and comes with some QoL things like non-paywalled Repository mirroring and compatibility with GitHubs CI. It's also a bit snappier and very easy to run. The ressource usage also reflects this both from disk space and RAM.

It's kinda like comparing vscode to a full blown IDE.


👤 cvalka
Gitlab is a terrible piece of software engineering. Avoid it if you can afford it.

👤 thesnide
I did use https://gogs.io/ in the past. Was nice.

Not in the same league. But might be adequate for OP.


👤 willhoyle
There’s also https://onedev.io/ which deserves a mention. I’ve never personally used it but it looks promising.

👤 atmosx
Go with Gogs.

Just makes sure you _really need_ to host your own git repo and it's not some sort of overzealous security/compliance measure. If you don't trust github, gitlab, maybe sourcehut (https://sr.ht - no affiliation) is a good fit?

If you do setup an internal repo, makes sure you setup mirrors and/or remote backups and a documented and tested disaster recovery scenario.

ps. if you don't need a web interface, a UNIX server running SSH is just fine. Server side:

    $ mkdir -p Projects/myeliteproject.git && cd 
    Projects/myeliteproject.git
    $ git init --bare
    $ exit
On the dev machine:

    $ mkdir -p Projects/myeliteproject.git && cd Projects/myeliteproject.git
    $ git init
    $ git remote add origin ssh://[user]@[hostname]/full/path/to/the/repo.git
    $ git push origin master
    $ echo "We need this commit in order to avoid errors" > first_commit.txt
    $ git add first_commit.txt
    $ git commit
    (write a reason here... "first needed commit" is a good one)
    $ git push
    $ git config branch.master.merge 'refs/heads/master'
    $ git config branch.master.remote origin
    $ git config --global push.default current
    (This config is to avoid warning messages. Please read here and consult documentation for refspecs)
    $ git pull

    Already up-to-date.
And if you need a web interface: https://git-scm.com/book/en/v2/Git-on-the-Server-GitWeb :-)

👤 OrderlyTiamat
There's also the gitea fork https://forgejo.org/ to consider if the reasons for the fork (FAQ) speak to you.

Now I don't think this is a good idea, but since you specifically said as lightweight as possible I just wanted to mention it-

Running just git on an ssh accesible user is absolutely the most lightweight possible solution. You just need git and ssh, that's it. It's compatible with every normal git client, and does all the normal git stuff. This is how I manage my smaller personal projects (running on a raspberry pi), and it works fine for a single person.

There's no CI/CD. No Pull Requests, no web GUI, none of the niceties of any of the options mentioned here.

However if it's really very lightly used, and by technically inclined people, it may be an option.

e: I stand corrected, there is apparently a web UI!