#!/linuxSucks/Install and setup a Git server
Oct 25, 2020Set up a Git server
If you want to have you own and private git server follow the steps below, I use Debian 10 at the moment of this example.
The first of all, you need is a minimal installation of Debian. Update the system and install git:
sudo apt install git
Create a new User
Create a new user call git and give a strong password.
sudo adduser git
Set up SSH Keys
First switch to the user git, then create a directory called .shh and a file called authorized_keys:
su git
cd
mkdir .ssh && chmod 700 .ssh
touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
Now you need to add your public ssh key to your sever
Open the authorized_key file
sudo vim .ssh/authorized_keys
And copy you public ssh key, save and close. Now you are able to get into your server without password.
Create a bare repository
In this example, I used the home directory for the repositories. In the home git user create a new directory
mkdir rapositoryname.git
Switch to the new directory
cd repositoryname.gt
Now create a new empty repository
git init --bare
You will see something like this
Initialized empty Git repository in /home/git/repositoryname.git/
Git push
Now that you have your new repo, it’s time to test it out.
In you computer got to repositoryname directory and initialized the repo
git init
You will see something like this
Initialized empty Git repository in /home/user/repositoryname.git/
Now you can do your first commit and push the repo to your private server, using this commands
git add .
git commit -m "First Commit"
git remote add origin git@yourserver:~/repositoryname.git
git push -u origin master
This git server will work only over ssh. Test it out it’s good to have your own git server for private projects. There are some protocols that can be used to make the git server public.
Git Daemon
I like to use this protocol to make some of my repos public from my git server. Is easy to setup and the cloning method is:
git clone git://server:/reponame.git
Setup
To enable the git daemon
git daemon --reuseaddr --base-path=/srv/git/ /srv/git/
You need to change the path of you repos directory
Since i using Debian, systemd is the init system, Simply place a file in /etc/systemd/system/git-daemon.service with these content
[Unit]
Description=Start Git Daemon
[Service]
ExecStart=/usr/bin/git daemon --reuseaddr --base-path=/srv/git/ /srv/git/
Restart=always
RestartSec=500ms
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=git-daemon
User=git
Group=git
[Install]
WantedBy=multi-user.target
Then you need to enable and start the service
systemctl enable git-daemon
systemctl start git-daemon
Next, you have to tell Git which repositories to allow unauthenticated Git server-based access to. You can do this in each repository by creating a file named git-daemon-export-ok, for that just run
touch git-daemon-export-ok
Inside of the repository you wants to make public.