Establish private Git server

Establish Private Git Server

This tutorial will guide you through setting up a private Git server on your local network, suitable for developers and homelab enthusiasts. We'll cover the necessary steps to get started quickly.

Hardware or Software Requirements

Step-by-Step Instructions

    • Install Git and Apache2:
      • Update your package list and install necessary packages:

    • sudo apt-get update
      sudo apt-get install git apache2 libapache2-mod-wsgi-py3
    • Configure Git:
      • Create a user for the Git server (e.g., gituser):

    • sudo adduser --system --group --shell /bin/sh --home /var/lib/git git
      sudo passwd git
      • Edit the global Git configuration:

      • sudo nano /etc/gitconfig
    • Create a Repository:
      • Create a new repository in the shared directory:

    • sudo mkdir -p /var/lib/git/myrepo.git
      cd /var/lib/git/myrepo.git
      git init --bare
    • Configure Apache2 to Serve Git Repositories:
      • Create a new virtual host configuration file for your repository:

    • <VirtualHost *:80>
          ServerName git.example.com
          DocumentRoot /var/lib/git/myrepo.git
      
          <Location /git>
              DAV On
              AuthType Basic
              AuthName "Git Repository"
              AuthUserFile /etc/apache2/dav_svn.passwd
              Require valid-user
          </Location>
      
          <Location /git/hooks>
              Dav Off
          </Location>
      </VirtualHost>
      • Create a password file for authentication:

      • sudo htpasswd -cm /etc/apache2/dav_svn.passwd username
      • Enable the new virtual host and restart Apache:

    • a2ensite git.example.com
      sudo service apache2 restart
    • Access Your Repository:
      • You can now clone your repository using HTTPS or SSH:

      • git clone https://git.example.com/myrepo.git

Commands Where Useful

    • Create a user for Git server:
    • sudo adduser --system --group --shell /bin/sh --home /var/lib/git git
      sudo passwd git
    • Create and initialize a repository:
    • sudo mkdir -p /var/lib/git/myrepo.git
      cd /var/lib/git/myrepo.git
      git init --bare
    • Create Apache2 virtual host configuration:
    • <VirtualHost *:80>
          ServerName git.example.com
          DocumentRoot /var/lib/git/myrepo.git
      
          <Location /git>
              DAV On
              AuthType Basic
              AuthName "Git Repository"
              AuthUserFile /etc/apache2/dav_svn.passwd
              Require valid-user
          </Location>
      
          <Location /git/hooks>
              Dav Off
          </Location>
      </VirtualHost>
    • Create password file:
      • sudo htpasswd -cm /etc/apache2/dav_svn.passwd username
    • Enable and restart Apache2:
    • a2ensite git.example.com
      sudo service apache2 restart

Troubleshooting Section

If you encounter issues, check the following common problems:

    • Ensure Apache2 is running and listening on port 80.
    • Check file permissions for the Git repository directory.
    • Verify that your firewall rules allow traffic to port 80 (HTTP).

Conclusion

You have successfully set up a private Git server on your local network. This setup allows you and your team to collaborate on projects securely. Happy coding!

Comments