Introduction#
Gitea est un outil qui permet d’héberger son propre service git sur différents types de système d’exploitation car il est developpé en Go et donc, il s’exécute sur l’ensemble des plateformes où Go peut être compilé. C’est le cas pour les architectures ARM, ce qui nous intéresse tout particulièrement ici.
C’est un simple binaire à exécuter (avec bien sûr quelques fichiers de configuration à paramétrer), je le préfère à son grand frère Gogs car il contient beaucoup plus de fonctionnalités tout en restant léger et simple à mettre en oeuvre. Vous l’aurez donc compris, Gitea est le fork de Gogs.
Il évolue assez rapidement et dispose de fonctionnalités assez abouties (intégration de 3rd-party) en plus de tout ce que fait un service git standard (gestion des dépôts de code, pull/merge requests, etc.). De fait de sa légèreté, il ne possède pas de CI intégré comme c’est le cas sur Gitlab, mais il est dispose de tout ce qui est nécessaire pour venir déclencher des actions ou afficher un status en relation avec des outils de CI/CD externes.
Nous allons voir dans cet article comment l’installer sur un Rapberry Pi et l’utiliser de manière basique (réseau local et en http).
Installation#
Dans cette partie, nous partirons du principe qu’un Raspberry Pi est configuré, avec docker et docker-compose tous les deux installés.
Le code du projet à cloner est disponble ci-dessus via mon compte Github afin de reproduire cela chez vous. Avant de lancer la moindre commande, il faut configurer quelques petits fichiers.
Tout d’abord, un mot de passe doit être généré. Du côté de la base de données, postgres est le moteur par défaut mais on peut utiliser SQLite3, mysql ou mariadb.
postgres.env
POSTGRES_DB=gitea
POSTGRES_PASSWORD=<votre mot de passe généré>
POSTGRES_USER=postgres
POSTGRES_HOST=postgres
gitea.env
APP_NAME="Super Gitea !"
RUN_MODE=prod
DB_TYPE=postgres
DB_HOST=postgres:5432
DB_NAME=gitea
DB_USER=postgres
DB_PASSWD=<votre mot de passe généré>
DISABLE_REGISTRATION=true
REQUIRE_SIGNIN_VIEW=true
D’autres variables d’environnement peuvent être ajoutées dans ce fichier, la documentation liste l’ensemble des possibilités. Ici, on désactive la possibilité de s’enregistrer pour les nouveaux utilisateurs et rien n’est accessible sans s’authentifier, à part bien évidemment, la page d’accueil.
Gitea ne propose pas d’images sur l’architecture armhf, de ce fait, un Dockerfile est mis à disposition dans le dépôt de code fourni, qui va venir en créer une pour nous, en se basant sur le binaire distribué sur Github.
Pour lancer le tout, il suffit d’exécuter la commande
docker-compose up -d
et cette page apparaît en se connectant sur l’adresse IP locale du raspberry sur le port 3000 : <ip de la machine>:3000
Lors de la première connexion, Gitea demande de configurer quelques informations (bouton “Connexion”). La plus part de celles-ci sont préremplies grâce au fichier gitea.env
, néanmoins, il reste à définir un utilisateur administrateur, son adresse email et son mot de passe.
Comme la création d’utilisateur a été désactivé, il est nécessaire de créer un compte utilisateur via la page d’accueil, nous sommes ici obligés d’en créer un, contrairement au message de Gitea.
Une fois cette étape passée, Gitea redirige sur la page de l’utilisateur créé afin d’initialiser un premier dépôt.
Pour aller plus loin#
Nous avons vu comment installer Gitea très simplement à l’aide d’un fichier docker-compose et de quelques fichiers de configuration. Tout fonctionne correctement mais on ne peut pas effectuer d’actions git en ssh, ce qui est un peu dommage.
Pour faire fonctionner le ssh dans un environnement conteneurisé, Gitea a tout prévu et fourni les différents paramétrages à apporter à travers ce lien.
Conclusion#
Comme vous avez pu le voir, Gitea est simple à mettre en oeuvre, très léger et fonctionne sur les configurations les plus petites comme le Raspberry Pi. Je l’utilise et le recommande à toutes les personnes qui souhaitent avoir leur propre service git auto-hébergé.
Dans un prochain article, nous verrons comment ajouter un reverse proxy devant Gitea afin de gérer les certificats et sortir en https sur internet.