Mettre en place une alternative à GitHub sur Debian : Gitea

Ce tutoriel fait suite à l'article sur Qu'est ce que Git ?. Si vous ne l'avez pas encore lu, vous pouvez y jeter un œil afin de comprendre comment fonctionne un logiciel de gestion de version.
GitHub est une plateforme de centralisation et d'hébergement de code utilisant le logiciel de gestion de version Git. Il existe de nombreuses autres alternatives à GitHub, tels que Gitea ou encore GitLab, pour les plus connus étant open-source. Mais quels sont les avantages et inconvénients de chacun ? A l'heure actuelle, il n'existe pas de solution miracle, en revanche en fonction de vos préférences et de vos besoins, l’une des deux solutions vous conviendra probablement mieux que l’autre.
GitHub a la particularité d'être connu et donc d'avoir une très forte communauté, mais il n'offre pas de solution d'auto-hébergement comme ses concurrents Gitea ou GitLab, donc si vous vouliez auto-héberger vous-même GitHub, cela n'est actuellement pas possible, mais cela peut être intéressant si vous souhaitez une solution qui ne demande aucune maintenance. Pour les fonctionnalités sur la partie gestion de projet, GitHub offre en beaucoup plus, par exemple avec des tableaux de Kanban, suivi de bugs, wikis, ou encore des fils de discussion, comparé à Gitea où la gestion de projet est certes possible, mais est beaucoup moins complète et robuste. GitHub intègre aussi nativement de l'intégration continue (CI) et du déploiement continu (CD).
Pour ce qui est de Gitea, celui-ci est un logiciel open-source de gestion de version de tout type, tel que la gestion de code source. Cela permet d'héberger le code d'une application, d'un logiciel, des fichiers de configurations, ou encore même de la documentation par l'intermédiaire de l'outil de gestion de version Git. Si vous souhaitez avoir la main sur vos données, gérer vos utilisateurs, dépôts ou bien l'authentification, le choix le plus pertinent serait Gitea étant donné qu'il n'y a uniquement vous qui maintenez votre propre instance. Il est également possible de faire de la gestion de projet avec un système de suivi de bugs, des wikis, ou encore de l'intégration continue et du déploiement continu (CI/CD) natif grâce à Gitea Actions. Mais avant de pouvoir faire tout cela, il faut déjà avoir une instance hébergeant Gitea, dans un premier temps cet article sera dédié à l'installation et la configuration d'un serveur Gitea sur Linux Debian.
Pré-requis minimaux
- Processeur : 2 cœurs
- RAM : 1 Go
- Stockage : 20 Go (surtout pour stocker les données de vos dépôts)
Mise en place de Gitea via les binaires
Préparation de la base de données
Avant de mettre en place la base de données, mettez à jour la liste des paquets avec la commande suivante :
sudo apt update && sudo apt upgrade -y
Nous utiliserons comme base de données PostgreSQL, pour cela, installez le service PostgreSQL dans sa dernière version, ainsi que les autres services dont nous aurons besoin à l'issue de la mise en place, tels que gpg et git
apt install postgresql-15 postgresql-client-15 gpg git -y
Ensuite il faudra décommenter la ligne password_encryption
dans le fichier de configuration postgresql.conf
car par défaut, PostgreSQL utilise le schéma de chiffrement md5 pour l’authentification par mot de passe, sauf qu’il est devenu beaucoup moins sécurisé et est considéré à l’heure d’aujourd’hui comme étant obsolète.
nano /etc/postgresql/15/main/postgresql.conf
password_encryption = scram-sha-256
Base de données distante
Si vous souhaitez installer votre base de données sur un serveur distinct de celui où sera installée votre instance Gitea, il faudra renseigner sur la ligne listen_addresses
l’IP de votre serveur Gitea. En revanche, si vous faites tout sur la même instance, laissez uniquement localhost
, par exemple :
listen_addresses = '192.168.1.90' # Remplacer l'IP par celle de votre serveur hebergeant Gitea

Quitter et enregistrer les modifications, puis redémarrer PostgreSQL avec la commande :
systemctl restart postgresql.service
Maintenant nous allons nous connecter à la base de données PostgreSQL afin de créer l’utilisateur gitea ainsi que sa base de données. Dans cet exemple, nous allons créer un utilisateur nommé gitea
, avec son mot de passe gitea
. Par la suite nous allons créer la base de données giteadb
avec comme propriétaire l’utilisateur gitea
créé en amont. En environnement de production, il est préférable de changer le nom d'utilisateur et de mettre un mot de passe robuste.
Pour cela, connectez-vous à PostgreSQL avec la commande :
su -c "psql" - postgres
Créons l’utilisateur avec la commande :
CREATE ROLE gitea WITH LOGIN PASSWORD 'gitea';
Et créons la base de données giteadb
avec en tant que propriétaire l’utilisateur gitea
qu’on a créer avec la commande précédente :
CREATE DATABASE giteadb WITH OWNER gitea TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'fr_FR.UTF-8' LC_CTYPE 'fr_FR.UTF-8';
Puis quitter PostgreSQL en tapant exit
.
Par la suite, nous allons modifier le fichier de configuration pg-hba.conf
, afin de pouvoir autoriser l'utilisateur de la base de données à accéder à la base de données giteadb
que l’on a créée ci-dessus, et en y ajoutant la règle d'authentification suivante :
nano /etc/postgresql/15/main/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
local giteadb gitea scram-sha-256
host giteadb gitea 192.168.1.90/24 scram-sha-256 # Remplacer l'IP par celle de votre serveur hébergeant Gitea
Puis redémarrer le service PostgreSQL et essayer de vous connecter en local sur la base de données que l’on a créée avec la commande suivante :
systemctl restart postgresql.service
psql -U gitea -d giteadb
Si vous voulez vous connecter à distance, exécutez la commande suivante en l'adaptant selon :
psql "postgres://[email protected]/giteadb"
Installation et configuration de gitea
Maintenant nous allons pouvoir mettre en place et configurer gitea, pour cela, nous allons télécharger la dernière version de gitea :
wget -O gitea https://dl.gitea.com/gitea/1.23.8/gitea-1.23.8-linux-amd64
chmod +x gitea
Une fois Gitea téléchargé, copier le dossier gitea
dans le répertoire /usr/local/bin/
, ce qui permettra par la suite de pouvoir faire fonctionner Gitea en tant que service système :
cp gitea /usr/local/bin/
Maintenant créons un utilisateur afin de pouvoir faire tourner Gitea, dans notre cas l'utilisateur est git
, pour cela, exécuter les commandes suivantes :
adduser \
--system \
--shell /bin/bash \
--gecos 'Git Version Control' \
--group \
--disabled-password \
--home /home/git \
git
Puis créons la structure des répertoires suivante :
mkdir -p /var/lib/gitea/{custom,data,log}
chown -R git:git /var/lib/gitea/
chmod -R 750 /var/lib/gitea/
mkdir /etc/gitea
chown root:git /etc/gitea
chmod 770 /etc/gitea
Gitea en tant que service
S'il vous le souhaitez, il est possible de faire tourner gitea en tant que service comme en parlant ci-dessus, pour cela, créons le fichier de configuration gitea.service
.
nano /etc/systemd/system/gitea.service
Puis coller le fichier de configuration du bloc suivant, il permettra de faire tourner gitea en tant que service :
[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
[Service]
# Uncomment the next line if you have repos with lots of files and get a HTTP 500 error because of that
# LimitNOFILE=524288:524288
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea
[Install]
WantedBy=multi-user.target
Bien sûr il faudra adapter selon votre environnement, par exemple si vous avez changé le nom d'utilisateur par autre chose que git
, ou encore si vous avez modifié la structure de vos répertoires.
Puis activer et démarrer le service gitea
avec les commandes suivantes :
sudo systemctl daemon-reload
sudo systemctl enable gitea
sudo systemctl start gitea
sudo systemctl status gitea
Configuration initiale de Gitea
Une fois cela fait, vous pouvez aller sur votre navigateur et tapez l'adresse IP de votre serveur avec le port 3000, pour ma part cela ressemble :
http://192.168.1.90:3000/
Vous arriverez sur l'interface web de configuration de Gitea. Choisissez la base de données que vous utilisez, dans notre cas c'est PostgreSQL. Par la suite, vous pouvez laisser tout par défaut à l'instar du mot de passe et du nom de la base de données. Il faudra reprendre le mot de passe ainsi que le nom de la base de données que nous avons créée précédemment. Dans notre cas suivant, cela sera gitea
pour le mot de passe, et giteadb
pour le nom de la base de donnée.

Une fois l'installation terminée, vous allez être redirigé vers la page d'accueil de votre instance Gitea, un peu vide, mais c'est normal !

Après l'installation et la configuration faite, revenez sur votre serveur afin d'attribuer les bonnes permissions du répertoire /etc/gitea
, et attribuer uniquement les droits en lecture seule (en dehors de l'utilisateur git) du fichier app.ini
étant donné qu'il contient des données de configuration pouvant être sensibles de votre instance Gitea :
chmod 750 /etc/gitea
chmod 640 /etc/gitea/app.ini
Maintenant, vous pouvez désormais créer des dépôts pour y héberger votre portfolio, ou vos codes, ou bien encore mettre en place un wiki et bien d'autres projets.
Conclusion
Dans ce tutoriel, nous avons appris a comment héberger une instance Gitea a partir des binaires, en passant par la configuration d'une base de données PostgreSQL, et en configurant Gitea pour qu'il fonctionne comme un service système.
Pour nous aider à nous améliorer, n'hésitez pas à faire part de vos avis en commentaires ou même à poser vos questions si vous avez besoin d'aide supplémentaire.
Vous pouvez également partager cet article et nous suivre sur Twitter/X :
ainsi que sur Instagram :
