# Exposer ses dépôts GIT avec GOTWEB 2020-07-02 => ../img/got.png game of trees 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). => https://fr.wikipedia.org/wiki/Git GIT => https://repo.or.cz/w/git.git/tree/HEAD:/gitweb/ Gitweb => https://man.openbsd.org/httpd httpd 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). => https://stsp.name/ stsp => https://gameoftrees.org/ GOT 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. => https://gameoftrees.org/faq.html#replacegit [a] GOT va remplacer CVS ? L’avenir nous le dira[a]. => https://gameoftrees.org/faq.html#replacecvs [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. => https://gameoftrees.org/gotweb.8.html [a] Pour rappel, GOT est compatible avec la structure des dépôts GIT, GOTWEB n’est ainsi pas limité aux dépôts GOT. ## Dépôts publics 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]. => https://www.atlassian.com/git/tutorials/setting-up-a-repository/git-init [a] ### tout neuf ``` git init --bare opengnuthing.git ``` ### cloner un existant ``` git clone --bare git@framagit.org:fredg/snaps.git ``` ### droits ``` doas chown -R vous:www opengnuthing.git ``` ### description ``` $EDITOR opengnuthing.git/description ``` ### adresse de clonage public ``` $EDITOR opengnuthing/cloneurl ``` Plus d’explications plus bas. ## Installation ``` doas pkg_add gotweb ``` ## Activation gotweb est un programme CGI dont le but est de fonctionner dans un environnement chrooté dans /var/www ### httpd et slowcgi Le serveur httpd ne peut servir que des pages statiques (HTML/CSS/JS). Il est requis d’activer slowcgi(8)[a]. => https://man.openbsd.org/slowcgi.8 [a] ``` doas rcctl enable httpd slowcgi doas rcctl start httpd slowcgi ``` ### Configuration 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" } } ``` ### Certificat SSL 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]. => https://letsencrypt.org/ [a] => https://ybad.name/ah/doku.php/4-httpd/ssl [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" } } ``` ## Clone URL Afin d’autoriser la collaboration, il est pertinent de permettre le clonage de votre dépôt via https. ### Lien 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. => https://dev.galusik.fr [a] ``` cd /var/www/htdocs/gotweb ln -s ../../got/public/opengnuthing.git . ``` ### git update-server-info 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 ## GIGIT[a] 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@). => https://git.charlenew.xyz/ https://git.charlenew.xyz/ => ./ <-- ## Commentaires / Comments ? => https://lists.sr.ht/~fredg/public-inbox Envoyer un email à la liste de discussion publique / Send a mail to the public Inbox --- => https://creativecommons.org/licenses/by-sa/4.0/ -- Copyright © 2008–2023 Frédéric Galusik - CC BY-SA 4.0 --