Agence web » Actualités du digital » Comment configurer un serveur Git privé

Comment configurer un serveur Git privé

Si vous souhaitez configurer le contrôle de code source pour un projet, mais que vous préférez ne pas l'héberger sur un service tel que GitHub, vous pouvez exécuter le vôtre git serveur sur un VPS pour stocker votre code et agir en tant que référentiel maître pour tous les collaborateurs.

Pourquoi exécuter votre propre serveur?

Avec combien d'hébergement gratuit git fournisseurs existants, tels que GitHub, GitLab et Bitbucket, cela n’a pas beaucoup de sens de le faire vous-même. Mais, dans certaines situations, c’est une solution viable.

Tout d'abord, gérer votre propre serveur est beaucoup plus privé, surtout si vous travaillez sur du code que vous préférez ne pas stocker sur le «cloud» de quelqu'un d'autre. Cela ne veut pas dire que les fournisseurs comme GitLab ne sont pas sécurisés, mais l'hébergement de tout vous-même peut donner à certaines personnes plus de tranquillité d'esprit.

De plus, si vous utilisez un service tiers, il existe des restrictions sur la taille des fichiers qui peuvent ne pas être idéales. GitHub n'autorise pas les fichiers de plus de 100 Mo, ce qui peut être un problème majeur pour les projets avec de gros fichiers binaires. L'utilisation de votre propre serveur supprime cette limite, en supposant que vous puissiez payer plus d'espace sur le disque dur.

Quel que soit votre cas d'utilisation, vous pouvez probablement faire mieux que les barebones git. L'édition communautaire de GitLab est gratuite et open source, et est facile à configurer sur votre propre serveur. Cela vous donne tous les avantages de l'héberger vous-même avec une très belle interface Web et de nombreux outils CI / CD. Nous vous recommandons vivement d'utiliser GitLab si vous disposez d'un espace serveur libre. (Il nécessite environ 3 Go de RAM.) Vous pouvez lire notre guide d'installation et de configuration pour en savoir plus.

Mais, si vous ne voulez pas toutes les cloches et sifflets, et que vous voulez simplement exécuter un simple git télécommande, vous pouvez continuer à lire.

Les télécommandes Git ne sont que le référentiel de quelqu'un d'autre

La première chose à noter sur git est qu’héberger un serveur n’est pas vraiment compliqué. Git utilise un modèle de contrôle de source distribué; votre clone local d'un référentiel ne se connecte pas du tout à tous vos collègues, mais il se connecte à un «distant», généralement sur un serveur ou un service central externe. Lorsque vous poussez et tirez, vous apportez des modifications à la copie principale officielle de la télécommande. Lorsque vos collègues récupèrent la télécommande, ils téléchargent vos validations.

Vous pouvez techniquement exécuter git en tant que service complètement décentralisé. Si vous aviez deux personnes, elles tiraient chacune des mises à jour l'une de l'autre. (Le transfert vers des référentiels non serveur n'est pas conseillé dans cette configuration.) Ce n'est pas vraiment utilisable dans la pratique, à moins que les deux parties aient des adresses IP statiques et soient toujours en ligne, la plupart des gens optent donc pour le modèle serveur-client.

Alors, tout ça git Le serveur est alors juste un référentiel normal configuré comme copie principale et ouvert sur Internet. C’est étonnamment simple à configurer. Tout d'abord, nous devons créer un nouvel utilisateur. Git utilise SSH pour l'authentification et tout le trafic entre les serveurs et les clients, nous aurons donc besoin d'un utilisateur de service pour gérer le dépôt.

sudo useradd git

Ensuite, passez à la git utilisateur pour le reste de la configuration:

su git

Vous devrez ajouter vos clés SSH au git utilisateurs authorized_keys fichier:

nano ~/.ssh/authorized_keys

C'est un domaine dans lequel des services comme GitHub et GitLab ont la ligne de commande Git beat. La gestion des accès n'est pas facile à gérer de cette façon, car vous devrez donner à tout le monde accès au même utilisateur de service, ce qui n'est pas idéal, ou vous devrez configurer des utilisateurs séparés pour chaque personne, ce qui n'est pas non plus idéal. Dans tous les cas, les validations s'afficheront avec le nom d'utilisateur et l'adresse e-mail que l'utilisateur final a configurés dans son git paramètres.

Quoi qu'il en soit, pour créer le référentiel réel, exécutez simplement git init dans le git répertoire de base de l'utilisateur:

git init --bare repository.git

le --bare l'option est nécessaire ici. Habituellement, lorsque vous clonez un dépôt, git stocke tous les fichiers qu'il utilise pour gérer les versions dans le .git dossier, et il conserve une version utilisable de l'endroit où se trouve votre HEAD actuellement extrait. Cela rend généralement votre dossier de dépôt environ deux fois plus grand qu'il ne le serait sans git, bien qu'il puisse être plus volumineux si vous avez de gros fichiers binaires et beaucoup de changements au fil du temps.

Un référentiel nu est simplement un référentiel sans les versions utilisables des fichiers actuellement extraits. Au lieu de cela, le dossier du référentiel est juste le contenu de ce que serait le .git dossier. Cela économise de l'espace de stockage et configure le référentiel en tant que serveur maître. Comme il n'y a pas de contenu local, il n'y aura pas de conflit avec la branche HEAD. Il est conventionnel de nommer les dépôts nus avec le .git l'extension de fichier, mais ce n'est pas explicitement requis.

C’est tout ce qui est nécessaire côté serveur. À partir de votre ordinateur local, vous devrez cloner le dépôt ou ajouter une nouvelle télécommande:

git remote add origin git@example.com:repository.git

L'URL commence par git@ car il se connecte via SSH en tant que git utilisateur. le :repository.git à la fin se trouve en fait un nom de chemin, pas seulement un identifiant. Le chemin est relatif au git répertoire de base de l'utilisateur, donc si vous avez placé le dépôt ailleurs, vous voudrez le déplacer ici ou utiliser le chemin complet.

Une fois que vous avez connecté votre dépôt local, vous devriez avoir un accès complet au push and pull comme d'habitude. Gardez à l'esprit cette valeur par défaut git n'a pas de système d'autorisations intégré, donc rien n'empêche quiconque ayant accès au git l'utilisateur d'avoir un contrôle total sur votre référentiel maître.

★★★★★