template: post
title: Regarding git hosting
author: flewkey
timestamp: 1598573216
license: CC-BY
When it comes to online services, many people look past simple solutions and
jump to the large pieces of software and complicated solutions. One case of this
which I see on a regular basis is git hosting, and I don't think that most
people understand how simple it is to host git repositories.
Many people think that hosting git is hard because they believe that it's
necessary to install and configure a code forge on their server. They will
usually install GitLab, which is
["robust"](https://docs.gitlab.com/ee/administration/operations/unicorn.html#unicorn-worker-killer)
and definitely not overkill for hosting a handful of personal repositories.
There are also a few people who install less gross robust
git services like [Gitea](https://gitea.io/) and [SourceHut](https://sr.ht/)
to host their projects. The thing is... they really don't have to.
`git clone --bare repo repo.git && scp -r repo.git name@server:/srv/git`
Those are the only commands needed to run to host a git repository on any server
with SSH access. The path doesn't even have to be `/srv/git`. As long as the
URI (e.g. `ssh://name@server:/srv/git/repo.git`) points to a bare git repository
which the user has read access to, they can pull from it. With write access,
they can even push to it. Amazing.
For more information on using git with your server, read the
[relevant chapter](https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols)
from the Pro Git book. It will explain how to set up a more limited "git" user for
SSH, use the git daemon, rig up git-http-backend on your webserver, and even use
GitWeb to show a web UI. It's not much harder the simple setup above.
There are also other projects which can complement git hosting. If GitWeb isn't
fancy enough, there is also [cgit](https://git.zx2c4.com/cgit/). Issue tracking
can be handled with [Trac](https://trac.edgewall.org/), and
[e-mail](https://git-send-email.io/) can be used to accept patches. At that
point though, using a proper code forge might be a more suitable option.
Self-hosting git really isn't _that_ important, nor is there anything wrong with
sticking all of one's projects on GitHub. (Most of mine are on the SDF GIT
Society anyways.) However, I've seen too many people purchase subscriptions from
GitHub for the privilege of private repositories. I'm tired of seeing unused
GitLab and Gitea instances as well. When setting up a code forge, make sure
that it's necessary.