Share your love
Best 1 Private Git Server Setup on Ubuntu
In this tutorial, you will learn an Ultimate guide for Private Git Server Setup on Ubuntu. Git is a free and open-source version control system that is used for software development and other projects. But it is recommended to run Git on your own server. By running a private Git server, you can have more control over your server and collaborate with your team. Now follow the guide steps on the Orcacore website to start your Private Git Server Setup on Ubuntu.
Table of Contents
Ultimate Guide For Private Git Server Setup on Ubuntu
To complete Private Git Server Setup on Ubuntu, you must have access to your Ubuntu server as a root or non-root user with sudo privileges. In this guide, we use Ubuntu 22.04 LTS to show you the guide steps for Private Git Server Setup on Ubuntu.
Step 1 – Install Git on the Ubuntu Server
The first step is to install Git on Ubuntu. First, run the system update with the command below:
sudo apt update
Then, use the following command to install Git:
sudo apt install git -y
Verify your Git installation by checking its version:
git --version
Output
git version 2.34.1
Next, locate the git-shell path by using the command below:
which git-shell
Output
/usr/bin/git-shell
If this path doesn’t exist in the /etc/shells, you must add it to the file:
sudo vi /etc/shells
Add the git-shell path at the end of the file:
/usr/bin/git-shell
When you are done, save and close the file.
Step 2 – Create a New Git User To Manage Git Repositories
In this step of Private Git Server Setup on Ubuntu, you must create a dedicated user so that you can manage your private Git repositories on Ubuntu. To do this, you can use the following command:
sudo adduser git
You will be asked to set a password for your Git user and enter the detailed information.
Output
Adding user `git' ...
Adding new group `git' (1000) ...
Adding new user `git' (1000) with group `git' ...
Creating home directory `/home/git' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for git
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []: Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
Then, switch to your Git user with the following command:
sudo su git
Step 3 – Create an SSH Directory and Authorized Keys File on Ubuntu
At this point of Private Git Server Setup on Ubuntu, you must create an SSH directory where you can store the SSH keys and set the correct permissions for it. To do this, run the commands below:
# cd
# mkdir ~/.ssh && chmod 700 ~/.ssh
Next, you must create the authorized-keys file inside the SSH directory where the Public keys are there and set the correct permissions for it. To do this, run the following commands:
# touch ~/.ssh/authorized_keys
# chmod 600 ~/.ssh/authorized_keys
At this point, you can open the authorized-keys file and add the public keys of users who you want to access your private Git server on Ubuntu. You can use your desired text editor like vi editor or nano editor:
nano ~/.ssh/authorized_keys
Add the public keys of the users you want and save and close the file.
Step 4 – Create Individual Repository Directory For Git Server
At this point of Private Git Server Setup on Ubuntu, you must create a new individual repo directory for the Git server and set the correct ownership for it. To do this, run the following commands:
# cd /home/git
# sudo mkdir test-server.git
Next, you must switch to the directory and initialize the git repo with the following commands:
# cd test-server.git
# git init --bare
Output
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
Initialized empty Git repository in /home/git/test-server.git/
Back to the home directory and set the correct ownership with the following command:
# cd ..
# chown -R git.git test-server.git
At this point, you have successfully finished the Private Git Server Setup on Ubuntu. Now you can start to use it.
Step 5 – Use Private Git Repository on Ubuntu
At this point of Private Git Server Setup on Ubuntu, you have created the private git repo under the git user on Ubuntu. Now you can use this repo in two different ways:
- Access the repository from your local machine with a different user
- Access the repository from a different computer
Let’s see how you can access the private git repo.
Access Private Git Repo From Local Machine with a Different User
If you want to access the Git repo from the same computer, you must log in to the server with a normal user not the Git user. Then, you must use the command below to generate the SSH key pairs if you dont have it:
ssh-keygen -t rsa
When it is completed, you will get the following output:
Then, use the following command to copy the public key to the private git user SSH directory on Ubuntu:
ssh-copy-id -i ~/.ssh/[your-public-key] git@[your-pc-IP-Address]
In our case, it is like:
ssh-copy-id -i /root/.ssh/id_rsa.pub git@ip-address
Output
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'git@ip-address'"
and check to make sure that only the key(s) you wanted were added.
If you don’t get any error, you have successfully copied your public keys.
Now to show you it is working correctly, we create a project test directory with the command below:
mkdir testproject
Then, switch to it and initialize an empty Github repo:
# cd testproject
# git init
Output
Initialized empty Git repository in /root/testproject/.git/
Next, add the remote origin on your local machine:
# git remote add origin git@[your-IP-address]:[path-to-your-provate-repo]
In my case:
# git remote add origin git@server-ip:/home/git/test-server.git
Here you can create a sample file inside the project directory and push it to your private git repo. To do this, you can use the following git commands:
# touch index.html
# git add *
# git config user.email "orca@example.com"
# git config user.name "orca"
Then, make your first commit:
git commit -m "Initial Commit"
Output
[master (root-commit) 17e0e74] Initial Commit
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 index.html
At this point of Private Git Server Setup on Ubuntu, you can push the changes to the remote repository:
git push --set-upstream origin master
Enter the SSH passphrase, and you will see:
Output
Enter passphrase for key '/root/.ssh/id_rsa':
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 209 bytes | 209.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To server-ip:/home/git/test-server.git
* [new branch] master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
Access Private Git Repo from a different computer
The steps in this way are the same as the above steps on Private Git Server Setup on Ubuntu that you access from the local machine. You just remember that your computer should be on the same network as the computer running the private GitHub repository.
Also, remember to use the public keys of the computer you want to access to the private git repo. And all the steps are the same.
That’s it, you are now successfully finished Private Git Server Setup on Ubuntu. Hope you enjoy it.
Should I host my own Git server?
It can be said that the best way is to run Git on your own server. It helps you save costs, also you have more control over your server.
Can I create private Git repository free?
Yes, you can easily install Git on your server and create a dedicated user for your Git and follow the guide steps in this article and finish Private Git Server Setup on Ubuntu.
What is the difference between Git and GitHub private server?
Git is a version control system that lets you manage and keep track of your source code history. GitHub is a cloud-based hosting service that lets you manage Git repositories.
You may also interested in these articles:
Using SCP to Transfer Files with SSH keys Ubuntu