How to set up your own Git server on Linux
Git server hosts a project's repository, which contains source code and other core files. While you can count on globally renowned Git hosting services like GitHub, in some cases it is better to host a personal Git server for enhanced privacy, customizability, and security.
Learn how you can set up your own Git server on Linux.
Prerequisites for setting up Git server
Before you start setting up your own Git server, you must have access to a spare machine or must register with cloud service providers. This is important because you will be setting up the standby machine to act as a Git server that you will connect to from your local machine and perform Git operations.
Although there are no clearly defined system requirements, 1GB of RAM should be enough for the Git server to work. Furthermore, make sure you have a Linux distribution running on your machine.
Step 1: Download and Install Git on Linux Server
You need to have Git installed on your Linux server. Fire up a terminal and use the Linux distribution's package manager to install Git:
On Debian/Ubuntu derivatives:
sudo apt install git
On Arch-based distributions:
sudo pacman -S git
On CentOS/RHEL/Fedora:
sudo dnf install git
Once Git is installed on your system, proceed to the next steps to configure your Linux system and host your Git repositories as a Git server.
Step 2: Set up a Git user account
Connect to your Linux server via SSH, RDP or any other remote access protocol. Or, if you're using a spare computer as a server, turn it on and create a new user account to handle your inventory.
ssh [email protected] sudo useradd git
After the new user is added, switch to that user with the su command:
su git
Creating a dedicated git user account is a secure protocol that ensures clients connecting to your Git server have limited visibility and access to on-premises resources. This allows you to securely collaborate on team projects where multiple members will access your server.
Step 3: Create .ssh folder and add authorized keys
Creating a .ssh directory is necessary to store public keys and other essential data that will specify who has access to this Git server. To get started, log into the git user account you created earlier, create the .ssh directory, and restrict access to the git user only:
ssh [email protected] mkdir .ssh chmod 700 .ssh/ touch .ssh/authorized_keys
Secure directory access with the chmod command to ensure that no one but you can make changes to it. Move into the .ssh directory and create a new file "allow_keys" using the touch command.
cd .ssh ssh-keygen -t rsa #only run this command if you DO NOT have an id_rsa.pub file cat id_rsa.pub
You will have to update this file with the SSH public key of the clients you want to give access to the Git server. Pause the SSH session and open the .ssh/id_rsa.pub file in your local machine with a text editor or the cat command. This file contains your publicly encrypted key, which, when written to the allow_keys file, will grant you access to the Git server without a password.
cd .ssh vi authorized_keys
Copy the public key and create a new SSH connection to the Git server. Move into the .ssh directory, open the authorized_keys file with a text editor and paste the public key. Save changes and exit.
From then on, you should be able to connect to the server without a password. Repeat this step for each machine that will connect to the server.
Step 4: Create a folder to store all the repositories
Go to a Linux server and create a directory or use an existing directory as the root directory. Remember that this is the directory where all your repositories will be stored. This is a good thing to organize projects more neatly.
mkdir directory_name
After creating the directory, move on to the last step in this tutorial to complete the Git server setup.
Step 5: Start development by adding new project
Now, you are really done with the Git server setup. You just need to start development by initializing the repository and adding the remote source to the local machine. Move into the parent directory with the cd command and create a .git project directory:
cd parent_directory mkdir new_project.git
Now, initialize the bare git repository:
git init --bare
With the repository initialized, it's time to add the remote origin on your local machine:
git remote add origin name [email protected]:new_project.git
That's all you need to do on the server side. Any authenticated client can now perform common Git operations like push, pull, merge, clone, etc. To start new projects, you'll have to repeat this step. every time you create a new project.
Test its functionality by executing git push:
touch testfile git add testfile git commit -m "test file" git push name master git clone [email protected]:new_project.git
Your file will be successfully pushed to the remote source. To cross check if push is working, you can clone the repository and should find the test file in the repository.
Security tips for Git server
With a Git server up and running, you must be mindful of its security stature as it is your personal server and it is your responsibility to maintain and protect it from external threats. Some of the best security practices to adopt are:
- Turn off password login
- Change default shell to git-shell. This restricts logged in users from executing any non-git commands
- Use a custom port for SSH
- Disable root user login
- Back up data regularly
There are many security configurations and safety measures that you can implement on your Linux server to protect it from attackers and prevent unauthorized access.
You should read it
- New points in SQL Server 2017
- The 5 best Linux server distributions
- How to install DNS Server on Windows Server 2019
- 7 Enterprise Linux Server Distributions
- The difference between web server and app server
- How to manage remote Linux server using SSH
- How to configure DNS Server on Ubuntu Server 11.04
- How to check for simple Linux server performance
May be interested
- How to configure DNS Server on Ubuntu Server 11.04dns server is a server with domain name resolution function. in this article, we will detail the steps to install and configure dns server on linux with ubuntu server version 11.04.
- How to create CS: GO Server on Linux VPSthe official steam server game for counter-strike: global offensive is suitable for most purposes. however, you cannot control them.
- 6 best media server software for Linuxfor linux, media server software options are numerous. the following article will summarize the 6 best media server applications for linux.
- How to secure Linux Home Serverthere are many reasons to set up a home server. you can use it as a media server, file server or even a local backup server.
- SQL Server 2017 on Linux helps increase performance for companiesfinance company dv01 took advantage of the features of sql, turning its linux experts into the first users of sql server 2017.
- How to set up a local web server (Local Web Server) on Windows, macOS, and Linuxwhen developing your own website, you need to have the ability to observe and evaluate what the website might look like from a regular visitor's perspective. here are the steps for setting up a local web server on windows, mac and linux
- How to check for simple Linux server performancethere are many options for virtual private servers or professional servers in the market, so how do i know which server is the best and suitable for me?
- How to scan malware and rootkits on Linux serverthere are many tools to help scan linux servers for malware and rootkits. this article will provide some of the best options to help deal with these cyber-enemies.
- 8 reasons to switch from Windows to Linuxnow is a good time to give up windows to linux both on the desktop and the server.
- ClearOS - Linux server web interfacecurrently, clearos is the linux server operating system that is of particular interest to the community. compared to other linux server versions, clearos gives users many unexpected advantages