Mise en Place d’un Serveur Git Privé sur Linux

Mise en place serveur Git privé Linux ubuntu almalinux debian redhat

Mettre en place un serveur Git privé sur Linux peut considérablement améliorer la sécurité et la gestion de vos systèmes de contrôle de version. Ce guide complet vous expliquera le processus sur les systèmes CentOS/AlmaLinux/RedHat et Ubuntu/Debian, en vous assurant de pouvoir garder le contrôle de votre base de code dans un environnement sécurisé.

Introduction

Dans le paysage de développement actuel, le contrôle de version est essentiel. Git, un système de contrôle de version distribué, est l’un des outils les plus populaires utilisés par les développeurs du monde entier. Bien que des plateformes comme GitHub, GitLab et Bitbucket offrent des services robustes, il existe des scénarios où la mise en place d’un serveur Git privé est plus appropriée. Cela peut être dû à des préoccupations de sécurité, au besoin de plus de contrôle sur vos dépôts ou aux politiques organisationnelles.

Mettre en place un serveur Git privé sur Linux est une décision stratégique pour les entreprises et les individus qui ont besoin de protéger leur base de code. Cet article vous guidera à travers le processus de configuration pour deux des distributions Linux les plus couramment utilisées : CentOS/AlmaLinux/RedHat et Ubuntu/Debian.

Avantages d’un Serveur Git Privé

Un serveur Git privé offre plusieurs avantages :

  • Sécurité : Contrôle accru sur qui a accès à vos dépôts.
  • Personnalisation : Capacité à configurer le serveur pour répondre à des besoins spécifiques.
  • Rentabilité : Éviter les frais d’abonnement associés aux services d’hébergement Git tiers.
  • Performance : Le contrôle localisé peut entraîner de meilleures performances et des temps d’accès plus rapides.

Prérequis

Avant de commencer, assurez-vous d’avoir :

  • Un serveur Linux avec une adresse IP statique.
  • Un accès SSH au serveur.
  • Des connaissances de base sur les opérations en ligne de commande Linux.
  • Un accès root ou sudo.

Installation de Git

CentOS/AlmaLinux/RedHat

Tout d’abord, mettez à jour votre système :

$ sudo yum update -y

Installez Git :

$ sudo yum install git -y

Vérifiez l’installation :

$ git --version

Ubuntu/Debian

Mettez à jour votre système :

$ sudo apt update -y
$ sudo apt upgrade -y

Installez Git :

$ sudo apt install git -y

Vérifiez l’installation :

$ git --version

Configuration de SSH

SSH (Secure Shell) est essentiel pour accéder en toute sécurité à votre serveur Git. Voici comment le configurer.

Génération des Clés SSH

Sur votre machine locale, générez des clés SSH :

$ ssh-keygen -t rsa -b 4096 -C "[email protected]"

Cette commande génère une nouvelle paire de clés SSH. Vous pouvez appuyer sur Entrée pour accepter l’emplacement de fichier par défaut et définir une phrase de passe pour plus de sécurité.

Copier la Clé SSH sur le Serveur

Copiez votre clé publique sur le serveur en utilisant ssh-copy-id :

$ ssh-copy-id username@server_ip

Alternativement, copiez manuellement la clé :

$ ssh username@server_ip
$ mkdir -p ~/.ssh
$ cat ~/path_to_your_public_key.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys

Configuration du Serveur SSH

Modifiez le fichier de configuration SSH :

$ sudo nano /etc/ssh/sshd_config

Assurez-vous que les paramètres suivants sont configurés :

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

Redémarrez le service SSH :

$ sudo systemctl restart sshd

Création d’un Utilisateur Git

Créez un utilisateur dédié aux opérations Git. Cela améliore la sécurité en limitant la portée des actions que cet utilisateur peut effectuer.

CentOS/AlmaLinux/RedHat

$ sudo adduser git
$ sudo passwd git

Ubuntu/Debian

$ sudo adduser git
$ sudo passwd git

Configuration du Dépôt Git

Créez un répertoire pour stocker vos dépôts :

$ sudo mkdir -p /home/git/repositories
$ sudo chown -R git:git /home/git/repositories

Passez à l’utilisateur Git :

$ sudo su - git

Initialisez un nouveau dépôt :

$ cd /home/git/repositories
$ mkdir project.git
$ cd project.git
$ git init --bare

Configuration du Daemon Git et de l’Accès SSH

Accès SSH

Pour cloner le dépôt via SSH, utilisez la commande suivante :

$ git clone git@server_ip:/home/git/repositories/project.git

Configuration du Daemon Git (Optionnel)

Si vous préférez utiliser le daemon intégré de Git pour une configuration serveur plus légère, suivez ces étapes.

CentOS/AlmaLinux/RedHat

Installez xinetd :

$ sudo yum install xinetd -y

Créez une configuration de service Git :

$ sudo nano /etc/xinetd.d/git

Ajoutez le contenu suivant :

service git
{
    disable = no
    type = UNLISTED
    port = 9418
    socket_type = stream
    wait = no
    user = git
    server = /usr/bin/git
    server_args = daemon --inetd --base-path=/home/git/repositories
    log_on_failure += USERID
}

Redémarrez xinetd :

$ sudo systemctl restart xinetd

Ubuntu/Debian

Installez xinetd :

$ sudo apt install xinetd -y

Créez une configuration de service Git :

$ sudo nano /etc/xinetd.d/git

Ajoutez le contenu suivant :

service git
{
    disable = no
    type = UNLISTED
    port = 9418
    socket_type = stream
    wait = no
    user = git
    server = /usr/bin/git
    server_args = daemon --inetd --base-path=/home/git/repositories
    log_on_failure += USERID
}

Redémarrez xinetd :

$ sudo systemctl restart xinetd

Configuration de GitWeb (Optionnel)

GitWeb est une interface web pour parcourir les dépôts Git. Il peut être utile pour visualiser vos dépôts et les rendre plus accessibles.

CentOS/AlmaLinux/RedHat

Installez les paquets requis :

$ sudo yum install gitweb httpd -y

Configurez GitWeb :

$ sudo nano /etc/gitweb.conf

Définissez le projectroot sur votre répertoire de dépôts :

$projectroot = "/home/git/repositories";

Configurez Apache :

$ sudo nano /etc/httpd/conf.d/gitweb.conf

Ajoutez la configuration suivante :

Alias /gitweb /usr/share/gitweb
<Directory /usr/share/gitweb>
    Options +FollowSymLinks +ExecCGI
    AddHandler cgi-script .cgi
    DirectoryIndex gitweb.cgi
</Directory>

Démarrez et activez Apache :

$ sudo systemctl start httpd
$ sudo systemctl enable httpd

Ubuntu/Debian

Installez les paquets requis :

$ sudo apt install gitweb apache2 -y

Configurez GitWeb :

$ sudo nano /etc/gitweb.conf

Définissez le projectroot sur votre répertoire de dépôts :

$projectroot = "/home/git/repositories";

Configurez Apache :

$ sudo nano /etc/apache2/conf-available/gitweb.conf

Ajoutez la configuration suivante :

Alias /gitweb /usr/share/gitweba
<Directory /usr/share/gitweb>
    Options +FollowSymLinks +ExecCGI
    AddHandler cgi-script .cgi
    DirectoryIndex gitweb.cgi
</Directory>

Activez le site GitWeb et redémarrez Apache :

$ sudo a2enconf gitweb
$ sudo systemctl restart apache2

Gestion des Dépôts

Création de Dépôts Supplémentaires

Pour créer

des dépôts supplémentaires, répétez simplement les étapes de configuration du dépôt sous l’utilisateur Git :

$ sudo su - git
$ cd /home/git/repositories
$ mkdir new_project.git
$ cd new_project.git
$ git init --bare

Configuration des Permissions des Dépôts

Gérez l’accès à vos dépôts en configurant les clés SSH et en modifiant le fichier authorized_keys pour l’utilisateur Git.

$ sudo nano /home/git/.ssh/authorized_keys

Ajoutez les clés publiques des utilisateurs qui ont besoin d’accéder à vos dépôts.

Sauvegarde de Votre Serveur Git

Les sauvegardes régulières sont cruciales pour éviter la perte de données. Utilisez des tâches cron pour automatiser les sauvegardes.

Création de Scripts de Sauvegarde

Créez un script pour sauvegarder vos dépôts :

$ sudo nano /usr/local/bin/git_backup.sh

Ajoutez le contenu suivant :

#!/bin/bash
tar -czvf /backup/git_repositories_$(date +%F).tar.gz /home/git/repositories

Rendez le script exécutable :

$ sudo chmod +x /usr/local/bin/git_backup.sh

Configuration des Tâches Cron

Modifiez le crontab :

$ sudo crontab -e

Ajoutez la ligne suivante pour planifier des sauvegardes quotidiennes à 2h du matin :

0 2 * * * /usr/local/bin/git_backup.sh

Surveillance et Maintenance

Surveillance de l’Utilisation du Disque

Surveillez l’utilisation du disque pour vous assurer que votre serveur ne manque pas d’espace.

$ df -h

Gestion des Logs

Vérifiez et gérez régulièrement les logs pour maintenir les performances du serveur.

$ sudo nano /var/log/git.log

Sécurisation de Votre Serveur Git

Configuration du Pare-feu

Configurez le pare-feu pour n’autoriser que le trafic nécessaire.

CentOS/AlmaLinux/RedHat

$ sudo firewall-cmd --add-service=ssh --permanent
$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --add-port=9418/tcp --permanent
$ sudo firewall-cmd --reload

Ubuntu/Debian

$ sudo ufw allow ssh
$ sudo ufw allow http
$ sudo ufw allow 9418/tcp
$ sudo ufw enable

Mises à Jour Régulières

Gardez votre système et votre installation Git à jour pour vous protéger contre les vulnérabilités.

$ sudo yum update -y   # Pour CentOS/AlmaLinux/RedHat
$ sudo apt update -y && sudo apt upgrade -y   # Pour Ubuntu/Debian

Conclusion

Mettre en place un serveur Git privé sur Linux en utilisant CentOS/AlmaLinux/RedHat ou Ubuntu/Debian est une tâche gratifiante qui offre de nombreux avantages en termes de sécurité, de contrôle et de personnalisation. En suivant ce guide complet, vous pouvez établir un système de contrôle de version robuste adapté à vos besoins.

N’oubliez pas, la clé d’une configuration réussie ne réside pas seulement dans la configuration initiale, mais aussi dans la maintenance et les mises à jour régulières. Gardez votre serveur sécurisé, surveillez ses performances et assurez-vous que vos dépôts sont sauvegardés régulièrement.

Adoptez la puissance d’un serveur Git privé et prenez le contrôle de vos projets de développement en toute confiance.

FAQs

Quels sont les avantages de mettre en place un serveur Git privé ?

Mettre en place un serveur Git privé offre une sécurité accrue, des options de personnalisation, une rentabilité et une performance améliorée en localisant le contrôle et l’accès.

Comment sécuriser mon serveur Git ?

Sécurisez votre serveur Git en configurant l’accès SSH, en configurant un pare-feu, en mettant régulièrement à jour votre système et en gérant les permissions et les logs des utilisateurs.

Puis-je utiliser GitWeb pour parcourir les dépôts ?

Oui, GitWeb fournit une interface web pour parcourir vos dépôts Git, les rendant plus accessibles et plus faciles à gérer.

Comment sauvegarder mes dépôts Git ?

Sauvegardez vos dépôts Git en utilisant des scripts et des tâches cron pour automatiser le processus de sauvegarde, en vous assurant d’avoir des copies régulières et à jour de vos dépôts.

Quel est le rôle de l’utilisateur Git ?

L’utilisateur Git est un utilisateur dédié créé pour gérer les opérations Git, améliorant la sécurité en limitant la portée des actions que cet utilisateur peut effectuer sur le serveur.

Est-il nécessaire d’installer le daemon Git ?

L’installation du daemon Git est optionnelle. Il fournit une configuration serveur légère pour accéder aux dépôts, mais l’accès SSH est généralement suffisant pour la plupart des cas d’utilisation.

Laisser un commentaire