Als het op Git hosting aankomt, heb je een aantal opties tot je beschikking. GitHub, Gitlab en Bitbucket zijn populaire oplossingen, maar het draaien van je eigen Git server is een alternatief dat het overwegen waard is.
Het opzetten van een Git Server stelt je in staat om privé repositories te maken zonder de beperkingen van de gratis plannen van de aanbieders.
In deze gids leggen we uit hoe je een kale Git server op Linux kunt opzetten. Deze opstelling is goed als je weinig repositories hebt en de medewerkers technisch onderlegd zijn. Anders zou je moeten overwegen om een zelf gehoste Git applicatie te installeren, zoals Gitea, Gogs, of Gitlab.
De Git server kan op iedere Linux machine op afstand worden ingesteld, of zelfs op je lokale systeem.
De Git server instellen #
De eerste stap is om Git op je server te installeren.
Als u Debian of Ubuntu gebruikt, ververs dan de lokale package index en installeer git door de volgende commando’s als sudo gebruiker uit te voeren:
sudo apt update && sudo apt install git
Om het git package op CentOS servers te installeren type:
sudo yum install git
Volgende, maak een nieuwe gebruiker aan die de Git repositories zal beheren:
sudo useradd -r -m -U -d /home/git -s /bin/bash git
De home directory van de gebruiker is ingesteld op /home/git
. Alle repositories zullen onder deze directory worden opgeslagen. We hebben geen wachtwoord ingesteld voor de gebruiker “git”, het inloggen zal alleen mogelijk zijn met de ssh sleutels.
Switch naar de gebruiker “git” met het su
commando:
sudo su - git
Run de volgende commando’s om de SSH directory aan te maken en de juiste permissies in te stellen :
mkdir -p ~/.ssh && chmod 0700 ~/.ssh
Maak een bestand aan met de naam ~/.ssh/authorized_keys
die de SSH sleutels van de geauthoriseerde gebruikers zal bevatten:
touch ~/.ssh/authorized_keys && chmod 0600 ~/.ssh/authorized_keys
Dat is het. De server setup is compleet. Je bent nu klaar om je eerste Git repository aan te maken.
Run het volgende commando om een nieuwe lege repository aan te maken:
git init --bare ~/projectname.git
Je kunt de directory de naam geven die je zelf wilt. Het belangrijkste is dat je de repository onder de “git” gebruiker home directory maakt.
Initialized empty Git repository in /home/git/projectname.git/
Instellen lokale Git Repository #
Om de lokale Git wijzigingen naar de Git server te kunnen pushen, moet je de SSH publieke sleutel van je lokale gebruiker toevoegen aan het authorized_keys
bestand van de “git” gebruiker op afstand.
Als u al een SSH sleutelpaar op uw lokale systeem heeft aangemaakt, kunt u de publieke sleutel weergeven door te typen:
cat ~/.ssh/id_rsa.pub
De uitvoer zou er ongeveer zo uit moeten zien als het volgende:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDd/mnMzHwjUzK8g3ldfsfRpJuC16mhWamaXRk8ySQrD/dzpbRLfDnZsLxCzRoq+ZzFHGwcQlJergtergdHGRrO8FE5jl3IWRRp+mP12qYw== [email protected]
Als u een foutmelding krijgt met de tekst No such file or directory
, betekent dit dat u geen SSH-sleutelpaar hebt dat op uw lokale machine is gegenereerd.
Om een nieuw SSH sleutelpaar te genereren gebruikt u het volgende commando:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Kopieer de uitvoer van het cat
commando hierboven en ga terug naar de Git server console.
Op de server, open je tekst editor en plak de publieke sleutel die je van je lokale machine hebt gekopieerd in het ~/.ssh/authorized_keys
bestand:
sudo nano /home/git/.ssh/authorized_keys
De hele publieke sleutel tekst zou op een enkele regel moeten staan.
We nemen aan dat het Git pakket al op je lokale machine is geïnstalleerd. Zo niet, installeer het dan op dezelfde manier als uitgelegd in de vorige secties.
Als je een bestaand project zonder versiebeheer hebt, navigeer dan naar de projectmap. Als u vanaf nul begint, maak dan de project directory aan, en navigeer daarheen:
cd /path/to/local/project
Initialiseer een git repository:
git init .
De laatste stap is het toevoegen van de git remote aan je lokale repository:
git remote add origin git@git_server_ip:projectname.git
Vergeet niet om git_server_ip
te vervangen door je Git server hostnaam of IP adres.
Om te controleren of alles juist is ingesteld, maak je een testbestand :
touch test_file
Voeg de wijzigingen toe aan het staging gebied:
git add .
Commit de wijzigingen:
git commit -m "descriptive message"
Push de wijzigingen van de lokale repository naar een remote repository:
git push -u origin master
Als alles correct is ingesteld, zou de output er ongeveer zo uit moeten zien:
Om een nieuwe medewerker toe te voegen, kopieer je gewoon zijn publieke SSH sleutel naar het ~/.ssh/authorized_keys
bestand van de “git” gebruiker.
Je kunt dezelfde stappen gebruiken om nieuwe repositories aan te maken. Het is belangrijk op te merken dat de remote repository moet bestaan voordat je de git remote aan je lokale repository toevoegt.
Conclusie #
In deze tutorial hebben we je laten zien hoe je je eigen private Git server kunt opzetten en repositories kunt maken.