Dans ce post on va installer Gitea, une instance Git auto-hébergée.

Gitea - Git with a cup of tea

Lorsque j’ai mis en place mon lab, il me fallait une instance Git pour héberger mon code indépendamment de Github.

J’ai donc opté pour Gitlab, l’alternative open source à Github la plus connue. Mais celle-ci était overkill pour mon utilisation et trop lourd en termes de ressources demandée (4GB RAM + 4GB swap).

Je suis tombé sur Gitea quand Viktor Oreshkin m’a envoyé un de ses projets. L’interface est épurée et légère, c’est ce qu’il me faut !

Gitea est une solution légère développée en Go et sous licence MIT et peut même tourner sur Raspberry Pi sans problème.

Installation

L’installation va se dérouler en plusieurs étapes : l’installation et la configuration de MySQL, la création d’un utilisateur dédié à Gitea avec les bons droits, puis son premier lancement et pour finir la configuration.

Ce tutoriel est destiné aux machines Debian et dérivées (Ubuntu, Raspbian, etc…).

MySQL

Avant tout il faut créer une base de données et un utilisateur pour MySQL pour Gitea.

Si vous avez une distribution basée sur Debian vous pouvez utiliser le gestionnaire de paquets APT pour installer le client et le serveur MySQL : sudo apt install mysql-client mysql-server.

Vous pouvez ainsi vous connecter au serveur à l’aide du client.

On va ensuite créer un nouvel utilisateur MySQL qu’on appellera gitea :

mysql> CREATE USER 'gitea'@'localhost' IDENTIFIED BY 'your_cool_passwd_here';

On créé ensuite la base de données avec le même nom :

mysql> CREATE DATABASE gitea;

Puis on donne un maximum de droits à l’utilisateur gitea pour la base de données gitea:

mysql> GRANT ALL PRIVILEGES ON `gitea`.* TO 'gitea'@'localhost';

Création de l’utilisateur gitea

Il faut maintenant créer un utilisateur qui aura les droits pour lancer Gitea. Pour être original, on va appeler cet utilisateur : gitea.

$ sudo adduser gitea --home /opt/gitea --disabled-password --gecos ''
[sudo] password for mathieu:
Adding user `gitea' ...
Adding new group `gitea' (1001) ...
Adding new user `gitea' (1001) with group `gitea' ...
Creating home directory `/opt/gitea' ...
Copying files from `/etc/skel' ...

On a donc créé un utilisateur gitea avec comme home directory /opt/gitea (qui n’existe pas encore).

Il faut maintenant créer le home directory de notre utilisateur : mkdir -p /opt/gitea.

Pour se connecter en tant qu’utilisateur gitea : ` sudo su - gitea`.

$ sudo su - gitea
gitea@pine64:~$ pwd
/opt/gitea
gitea@pine64:~$

Gitea

Maintenant que nous avons préparé la base de données et créer l’utilisateur, on pouvoir récupérer l’exécutable binaire.

Vous pouvez télécharger l’exécutable ici. Veillez à bien choisir le fichier en fonction de votre OS et architecture. Pour ma part comme j’utilise une Pine64 pour ce post je vais télécharger la version ARM64.

Si vous lancez le mauvais exécutable vous aurez cette erreur :

$ ./gitea-1.7.1-darwin-10.6-386
zsh: exec format error: ./gitea-1.7.1-darwin-10.6-386	

Si vous ne connaissez pas l’architecture de votre machine, la commande arch peut vous aider.

Donnez les droits d’exécution à Gitea puis lancez-le comme ceci : ./gitea-1.7.1-linux-arm64 web.

Fini la ligne de commande, on peut passer sur l’interface web. Connectez-vous à l’IP de votre machine sur le port 3000.

Ce que vous voyez est la page d’accueil de Gitea. Pour pouvoir la configurer on va devoir s’inscrire. Lorsque vous cliquez sur s’inscrire/register, ça nous redirige vers la page qui va nous permettre de configurer notre service.

Vous pouvez faire la configuration de base avec l’aide de l’interface web. Je vous conseille de changer le champ Gitea Base URL par l’adresse IP de votre machine.

Le champ initial est http://localhost:3000/, à la fin de l’installation Gitea fait une redirection directement sur cet URL.

Faites pareil pour le champ SSH Server Domain si vous souhaitez faire vos commit via SSH (ce que je recommande).

Après avoir fini la première configuration, Gitea va ensuite créer les différentes tables et appliquer la configuration en base de données puis rediriger vers la page d’accueil.

Configuration

Si vous souhaitez modifier certaines options par défaut, il vous faudra éditer le fichier app.ini qui se trouve dans /opt/gitea/custom/conf.

Vous avez un exemple de fichier de configuration dispo sur Github pour customiser votre instance Gitea.

En plus de ça, je vous invite à jeter un œil à la cheat sheet de configuration.

Gitea as a Service

Un dernier point : automatiser le lancement de Gitea au démarrage.

Pour ça il faut un fichier qu’on appellera gitea.service qui nous permettra de configurer et lancer Gitea au démarrage par notre bien-aimé systemd.

Vous pouvez récupérer le fichier dans mes gists. Modifiez-le à votre sauce comme il vous plait.

Il ne vous reste plus qu’à le copier dans /etc/systemd/system/.

Pour activer Gitea au démarrage et lancer le processus :

$ sudo systemctl enable gitea
$ sudo systemctl start gitea

Au prochain redémarrage Gitea devrait se lancer automatiquement et en tache de fond.

Pour tester si ça a fonctionné, connectez-vous à l’interface web.

Si tout s’est bien passé, vous avez fini d’installer Gitea !


Si vous avez besoin d’infos ou souhaitez corriger des erreurs, vous pouvez me ping sur Twitter : @matteyeux

Github : matteyeux