Mettre en place un serveur gitea

Gitea #

Gitea est un service de forge logicielle basé sur Git. Il permet de gérer des dépôts, de gérer des organisations, des issues, des wikis, … C’est un programme écrit en Go qui est assez simple d’installation et d’administration.

On suppose qu’un serveur PostgreSQL a déjà été installé au préalable !

Cette documentation est largement inspirée de la documentation officielle.

Préparer la base de données #

On commence pour plus de sécurité par changer le type de chiffrement utilisé, en effet le chiffrment md5 est utilisé par défaut mais n’est plus le meilleur, on préfèrera utiliser le chiffrement SCRAM-SHA-256. Pour faire cela on édite le fichier postgres.conf (son emplacement peut changer selon la distribution) et on remplace

password_encryption = md5

par

password_encryption = scram-sha-256

puis on se connecte au shell postgres en entrant sudo -u postgres psql pour créer un utilisateur pour gitea :

CREATE ROLE gitea WITH LOGIN PASSWORD '<mot de passe fort>';

on crée ensuite la base de données :

CREATE DATABASE giteadb WITH OWNER gitea TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';

Enfin on autorise les connection en éditant le fichier pg_hba.conf :

  • S’il s’agit d’une bdd locale :
local    giteadb    gitea    scram-sha-256
  • S’il s’agit d’une bdd distante (penser à changer l’IP) :
host    giteadb    gitea    192.0.2.10/32    scram-sha-256

Mettre en place le serveur #

D’abord pensez à vérifier que Git est installé (git --version par exemple) sinon faites le.

On va commencer par créer un utilisateur git pour le serveur :

adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git

On va baser notre installation dans le dossier /DATA/gitea qu’il faut donc créer au préalable et on s’y rend cd /DATA/gitea. Dans celui-ci on crée les dossiers config, custom, data, log et versions avec la commande mkdir {config,custom,data,log,versions}. On peut ensuite télécharger la dernière version de gitea (pensez à remplacer et avec les numéros de version et l’architecture qui conviennent, par exemple 1.12.2 et arm-6) avec la commande wget -O versions/gitea-<version> https://dl.gitea.io/gitea/<version>/gitea-<version>-linux-<arch> que l’on rend exécutable en lançant chmod +x versions/gitea-<version> puis on termine en créant un lien symbolique à la racine du dossier ln -s /DATA/versions/gitea-<versions> /DATA/gitea-latest. Ainsi pour mettre à jour l’exécutable il suffira de télécharger la dernière versions de la même manière qu’ici et de mettre à jour le lien symbolique, aussi rétrograder son instance vers une ancienne version se fera très simplement.

On va attribuer le dossier de gitea à l’utilisateur git avec chown -R git:git /DATA/gitea puis changer les permissions avec chmod -R 750 /DATA/gitea. Enfin on crée un fichier gitea.service par exemple nano /DATA/gitea/gitea.service et on y place ce contenu :

[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target

Requires=postgresql.service

[Service]
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/DATA/gitea/
ExecStart=/DATA/gitea/gitea-latest web
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/DATA/gitea

[Install]
WantedBy=multi-user.target

On finit par activer le système en faisant sudo systemctl enable --now /DATA/gitea/gitea.service. On peut modifier les droit pour plus de sécurité maintenant avec chmod 640 /DATA/gitea/config/app.ini.