Gitea, une alternative à GitLab

Lorsque j’ai décidé de passer à Cobalt pour mon blog, je ne voulais pas que mes brouillons soient lisibles, ce qui excluait donc le versionnage via GitHub.

En solution alternative auto-hébergée, je connaissais GitLab, mais des raisons politiques me font fuir cette solution comme la peste. Quelques recherches et une interrogation sur Twitter plus tard, je découvre Gogs et surtout son fork Gitea.

Gogs

Gogs est un site de services pour git. Comme GitLab, il permet de gérer une base d’utilisateurs et de dépôts. À la différence de GitLab, il est écrit en Go, langage qui a le vent en poupe côté serveur. Il se veut léger et rapide, mais tous les soft s’en réclament. ^^' Il est écrit et maintenu par une seule personne, qui tient le projet d’une main de fer, semble-t-il. En effet, il y a eu une longue période d’inactivité sur le projet, et le refus du propriétaire du dépôt de Gogs de donner les droits d’écriture à d’autres personnes a énormément frustré la communauté, qui voyait des bugs avec une solution en pull request, mais personne pour les intégrer. Il a donc été décidé de forker le projet pour en faire Gitea.

Gitea

Le fork datant de fin 2016, il n’y pas de différence vraiment notable de prime abord, à part le logo. Mais il semble que sous le capot, beaucoup de bugs aient été résolus et le développement est, cette fois, piloté par la communauté : les personnes pouvant écrire dans le dépôt sont au nombre de 3 et sont élues tous les ans par les contributeurs. Un mode de fonctionnement qui garantit une meilleure pérennité du projet et évitera une hibernation du code si le mainteneur n’est pas disponible/décédé/grognon. C’est pour cette pérennité que j’ai choisi d’installer Gitea sur mon serveur plutôt que son parent.

L’installation est assez simple, le plus dur étant la configuration du serveur web nginx. J’ai pour ma part suivi le tuto écrit par Jérémy Verda et je vous y renvoie donc. Il faut juste avoir une base de données disponible, que ce soit une parmi les traditionnels MySQL, Postgres et MsSQL, ou SQLite3. L’astuce à savoir après avoir sécurisé le serveur derrière nginx, c’est de désactiver l’accès direct à Gitea en ajoutant HTTP_ADDR = 127.0.0.1 dans la section [server]. J’ai eu beaucoup de mal à trouver l’information. ^^'

gitea_repository

L’interface étant vraiment similaire à celle de GitHub, vous devriez rapidement vous y retrouver. Je m’en sers pour versionner le blog sur mon serveur et je n’ai donc pas pu tester les fonctionnalités de pull request ou autres, ce qui pose la question de la tenue face à la charge, mais pour ce que j’en fais c’est amplement suffisant ! Cela dit, étant écrit en Go, j’ai peu d’inquiétudes à ce sujet. :)

Avoir la maîtrise du serveur git m’a aussi permis d’automatiser quelques tâches grâce à un hook git pour appeler un script après que le serveur a reçu un push. Mais ça fera l’objet d’un autre article !