2020-07-02
Pour exposer au monde votre code source géré par GIT, il existe quelques interfaces web. Gitweb est livrée avec GIT, voici son code source exposé par GITWEB. C’est léger et efficace mais, ce n’est pas pensé pour tourner dans le chroot /var/www/ du serveur maison OpenBSD httpd(8).
Par bonheur, Stefan Sperling, un développeur OpenBSD a initié le développement de GOT (Game Of Trees). L’objectif n’est pas tant de développer une alternative à GIT sous une licence plus libre (troll inside).
Le but n’est même pas de remplacer GIT[a]. L’objectif est de développer une alternative compatible avec la structure des dépôts GIT, une alternative qui priorise la facilité d’utilisation, une alternative maison développée par et pour l’équipe d’OpenBSD.
GOT va remplacer CVS ? L’avenir nous le dira[a].
Bref, revenons à l’exposition du code. Conjointement à GOT, est fourni GOTWEB[a]. À l’instar de GITWEB, son rôle est d’offrir une interface web pour exposer vos codes sources.
Pour rappel, GOT est compatible avec la structure des dépôts GIT, GOTWEB n’est ainsi pas limité aux dépôts GOT.
Vos dépôts doivent se trouver dans /var/www/got/public. Ils ne sont pas destinés à être des répertoires de travail, d’où l’option –bare[a].
git init --bare opengnuthing.git
git clone --bare git@framagit.org:fredg/snaps.git
doas chown -R vous:www opengnuthing.git
$EDITOR opengnuthing.git/description
$EDITOR opengnuthing/cloneurl
Plus d’explications plus bas.
doas pkg_add gotweb
gotweb est un programme CGI dont le but est de fonctionner dans un environnement chrooté dans /var/www
Le serveur httpd ne peut servir que des pages statiques (HTML/CSS/JS). Il est requis d’activer slowcgi(8)[a].
doas rcctl enable httpd slowcgi doas rcctl start httpd slowcgi
Comme d’habitude, la page de manuel fournit la configuration de base à ajouter à /etc/httpd.conf :
types { include "/usr/share/misc/mime.types" } server "gotweb.example.com" { listen on * port 80 root "/htdocs/gotweb" location "/cgi-bin/*" { root "/" fastcgi } location "/*" { directory index "index.html" } }
Je ne vais pas vous expliquer comment mettre en place des certificats géré par let’s encrypt[a], je vous conseille cette lecture[b].
Je vous livre une configuration fonctionnelle. L’ordre des instructions est importante. Ainsi, l’adresse http est redirigée vers https.
server "dev.galusik.fr" { listen on * port 80 root "/htdocs/gotweb" location "/.well-known/acme-challenge/*" { root "/acme" request strip 2 } location * { block return 301 "https://$HTTP_HOST$REQUEST_URI" } location "/cgi-bin/*" { root "/" fastcgi } location "/*" { directory index "index.html" } } server "dev.galusik.fr" { listen on * tls port 443 root "/htdocs/gotweb" tls { certificate "/etc/ssl/galusik.fr.fullchain.pem" key "/etc/ssl/private/galusik.fr.key" } hsts location "/.well-known/acme-challenge/*" { root "/acme" request strip 2 } location "/cgi-bin/*" { root "/" fastcgi } location "/*" { directory index "index.html" } }
Afin d’autoriser la collaboration, il est pertinent de permettre le clonage de votre dépôt via https.
Le dépôt (/var/www/got/public/opengnuthing) n’est visible que par l’interface gotweb. Selon la configuration précédente, cette dernière est située à cet endroit : /var/www/htdocs/gotweb
Ainsi, [a] pointe sur ce répertoire. Il n’y a qu’à faire un lien symbolique vers votre dépôt.
cd /var/www/htdocs/gotweb ln -s ../../got/public/opengnuthing.git .
Cette commande est utile pour mettre à jour votre dépôt afin que les fichiers soient accessibles via https.
Elle doit être exécutée à chaque changement (push). Pour automatiser la procédure, créer un fichier dans le dossier hooks.
$EDITOR opengnuthing.git/hooks/post-receive git update-server-info chmod +x opengnuthing.git/hooks/post-receive
Et, voilà, votre dépôt est clonable de façon sécurisée : git clone https://dev.galusik.fr/opengnuthing.git
Quoi Gigit ?
Si vous souhaitez du plus léger, du sans CGI, que du static, je vous conseille gigit mis au point par Charlène (cwen@).
Envoyer un email à la liste de discussion publique / Send a mail to the public Inbox