
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 -yInstallez Git :
$ sudo yum install git -yVérifiez l’installation :
$ git --versionUbuntu/Debian
Mettez à jour votre système :
$ sudo apt update -y
$ sudo apt upgrade -yInstallez Git :
$ sudo apt install git -yVérifiez l’installation :
$ git --versionConfiguration 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_ipAlternativement, 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_keysConfiguration du Serveur SSH
Modifiez le fichier de configuration SSH :
$ sudo nano /etc/ssh/sshd_configAssurez-vous que les paramètres suivants sont configurés :
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yesRedémarrez le service SSH :
$ sudo systemctl restart sshdCré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 gitUbuntu/Debian
$ sudo adduser git
$ sudo passwd gitConfiguration 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/repositoriesPassez à l’utilisateur Git :
$ sudo su - gitInitialisez un nouveau dépôt :
$ cd /home/git/repositories
$ mkdir project.git
$ cd project.git
$ git init --bareConfiguration 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.gitConfiguration 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 -yCréez une configuration de service Git :
$ sudo nano /etc/xinetd.d/gitAjoutez 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 xinetdUbuntu/Debian
Installez xinetd :
$ sudo apt install xinetd -yCréez une configuration de service Git :
$ sudo nano /etc/xinetd.d/gitAjoutez 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 xinetdConfiguration 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 -yConfigurez GitWeb :
$ sudo nano /etc/gitweb.confDéfinissez le projectroot sur votre répertoire de dépôts :
$projectroot = "/home/git/repositories";Configurez Apache :
$ sudo nano /etc/httpd/conf.d/gitweb.confAjoutez 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 httpdUbuntu/Debian
Installez les paquets requis :
$ sudo apt install gitweb apache2 -yConfigurez GitWeb :
$ sudo nano /etc/gitweb.confDéfinissez le projectroot sur votre répertoire de dépôts :
$projectroot = "/home/git/repositories";Configurez Apache :
$ sudo nano /etc/apache2/conf-available/gitweb.confAjoutez 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 apache2Gestion 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 --bareConfiguration 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_keysAjoutez 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.shAjoutez le contenu suivant :
#!/bin/bash
tar -czvf /backup/git_repositories_$(date +%F).tar.gz /home/git/repositoriesRendez le script exécutable :
$ sudo chmod +x /usr/local/bin/git_backup.shConfiguration des Tâches Cron
Modifiez le crontab :
$ sudo crontab -eAjoutez la ligne suivante pour planifier des sauvegardes quotidiennes à 2h du matin :
0 2 * * * /usr/local/bin/git_backup.shSurveillance 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 -hGestion des Logs
Vérifiez et gérez régulièrement les logs pour maintenir les performances du serveur.
$ sudo nano /var/log/git.logSé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 --reloadUbuntu/Debian
$ sudo ufw allow ssh
$ sudo ufw allow http
$ sudo ufw allow 9418/tcp
$ sudo ufw enableMises à 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/DebianConclusion
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.
