Over onderhoud en inrichting van de git server. Ook in die volgorde. Dus wat het vaakste voorkomt staat boven aan, wat minder vaak voorkomt dus onderaan.

Doet ie het nog

De ultime test van de git server is * een http git pull * deze testregel wat meer of minder spaties geven * git commit -a -m "om de git server weer te zien werken" * een ssh git push Als het meezit, dan is er ook ook serieuser testmateriaal voor handen.

Met welke SSH-key is de push gedaan

Alle git ssh pushes zijn voor ssh-server allemaal connecties van dezelfde user cp. Dat dus weer uit elkaar halen.

In /etc/ssh/sshd_config staat o.a.

SyslogFacility AUTH
LogLevel VERBOSE

In log file /var/log/auth.log is dan het effect van die ge-activeerde setting terug te halen. Voorbeeld:

grep --before=1 'Accepted publickey for cp from' /var/log/auth.log \
| grep 'Found matching '

Plaatsen van SSH-key

Het public part van de de SSH-key wordt toegevoegd aan .ssh/authorized_keys van de user cp. Waarbij cp de operating system user is die schrijfrechten in de Centrale Plaats repository heeft.

In het optionele commentaar veld, de string na de spatie, van de public key het contact e-mail adres van de contributor zetten.

Het is dus een actie waarbij tekstbestand ~cp/.ssh/authorized_keys er een regel bij krijgt.

Dan is er nog een administratieve stap nodig. Dat is omdat ssh-keygen -l -f /home/cp/.ssh/authorized_keys geeft slechts 1 regel, eigenlijk 1 key, output geeft.

Bij aanlevering van een public SSH key, het moment dat je 1 file hebt met daarin 1 key dan ook de fingerprint opvragen met ssh-keygen -l

Verwijderen SSH-key

Verwijderen van de SSH-key gebeurd door regel uit authorized_keys te halen.

Wanneer SSH-keys, dus privileges, in te trekken, staat los van de handeling. ( Bijvoorbeeld dat de key niet meer ingebruik (verloren) is of bericht dat er geen gebruik van gemaakt gaat wordt (andere belangstelling). (Of in het slechtste geval: misbruik van het privilege.) )

Git repository aanmaken

Eerst "ssh" naar de server

cd /home/cp # path to other repos

mkdir newrepo

cd newrepo

git --bare init

Nu is git push naar SSH URL mogelijk.

Kopie naar "http c.q. git pull" is met een andere system user gedaan.

Users

Op de git server zijn user accounts aangemaakt.

Centrale plaats

Operating system user cp heeft de leidende git repository.

adduser --shell git-sh --system --gecos "Centrale Plaats,,," cp

Controle op die actie:

$ grep ^cp /etc/passwd
cp:x:107:111:Centrale Plaats,,,:/home/cp:/usr/bin/git-sh

Website user

Operating system user wsbreda houd de website up-to-date.

adduser --system --gecos "Website Breda,,," wsbreda

Controle op die actie:

$ grep ^wsbreda /etc/passwd
wsbreda:x:108:112:Website Breda,,,:/home/wsbreda:/bin/bash

De website user heeft cronjobs.

root@november:~# crontab -l -u wsbreda
#
# m h  dom mon dow   command

#
*/2 * * * * /home/wsbreda/loscweb/scripts/commitwatch >> /home/wsbreda/cron.log 2>&1
#
*/20 * * * * /home/wsbreda/loscweb/scripts/update_website >> /home/wsbreda/cron.log 2>&1
#
#
# l l
root@november:~#

En die scripts staan in weer loscweb, de git repository waar deze file ook in staat. :-)

Server

Server ( CPU, Memory, disk space and network connection ) heeft webserver (HTTP) en SSH server draaien.

Voor de webserver is het serveren van statische webpagina’s voldoende.

Succes

Succesvolle combinaties.

november

  • Debian GNU/Linux

  • Apache

  • OpenSSH server

hostname

  • Operating system

  • (web?) server, voor git pull (en git clone) zonder wachtwoord of iets anders wat laagdrempellig is.

  • (alles is mogelijk) server, voor "git push", belangrijk is een soort van drempel die spam en andere ongein voorkomt.