There are many Git hosting services such as GitHub, GitLab, Bitbucket, etc. However hosting services often has restrictions. When wanted more control, the best choice is to run Git server on your own server.
This tutorial shows how to set up Git server in Linux. Commands have been tested on Ubuntu 20.04 LTS.
Prepare environment
Make sure you have installed Git in your system.
Set up Git server
Create a new user for managing the Git repositories:
sudo adduser --system --group --shell /bin/bash gitCommand creates git user and /home/git home directory. It will be used to store all the repositories.
Use the su command to switch to git user:
sudo su - gitCreate SSH directory for that user and set correct permissions:
mkdir ~/.ssh
chmod 700 ~/.sshCreate a authorized_keys file which will be used to store SSH keys of the authorized users. Set correct permissions for that file.
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keysGit server is ready. Now we can run the following command to initiate a new empty repository:
git init --bare ~/projects/project_name.gitYou can specify directory name as you want. But you should to create repository in home directory of the git user.
Add SSH keys
To be able to access repository in the Git server, we need to add SSH public key of authorized user to the authorized_keys file for the git user.
Open authorized_keys file in Git server:
nano ~/.ssh/authorized_keysAdd SSH public key of the user in a file. You can get public key by running the following command in local system:
cat ~/.ssh/id_rsa.pubIf you get error 'No such file or directory', you need to generate SSH key pair. It can be done using the following command:
ssh-keygenThe SSH public key will look something like this:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCYDEAfebZoY1/N56v/4oD4QVPBpcxND3TcCGMFq/PCGoFlZ0FUlweQwSYtH+J+yljB9yL/TE0xAA+23hyfRteebYSt0ul/e67yHF4xOJtY/JYhVkWYv+e5qv0fZp46+GpMYGVzQfBzv/nu5fcEcFe33LHfakrP8i3y2PB10rK6ZG/+si7zGBmjDzIlAqsD96H0SXbuVgXpYAitxb/vop9JZbwbfMWzq+sjBt3qRRHA97yzItQaF3Ne2gfewIpUPDZ4uX2REJbuoPPrQ/D7jeNGJRwMgwwby9Ngs17SKpEsa+YrdtyaHZ+iVOSaabqBL0G/7W0UKXJCRdzkpT93V/XevAH6wRG27LL8KnNuPBcgbbaQJvp/PjcHExy6gkqkTV5DM1EBL+ICoC3TyyJNulLTqfzWlAIbY1u+Z9rzqtBPZDu7buiN/wrUf/xujeJa4/PaU1H2ZXR+SgaWQ0eIqkiEuT1TeYzs+P1X/yTOxLG/qHnaiUnQzsU3CA0JaGylhJM= tester@ubuntuSetup up local Git repository
In your local system create a project directory and navigate to it:
mkdir project_name && cd project_nameInitialize Git repository:
git init .Add remote Git repository to your local repository:
git remote add origin git@<IP_ADDRESS>:projects/project_name.git<IP_ADDRESS> is IP address of the Git server.
To test if everything is working as expected, create a file:
touch READMEAdd changes to the staging area:
git add .Save changes to the local repository:
git commit -m "project init"Upload local repository changes to a remote repository:
git push origin master 
             
                         
                         
                        
Leave a Comment
Cancel reply