Comment configurer un serveur Git privé

Si vous souhaitez configurer le contrôle de source pour un projet, mais préférez ne pas l'héberger sur un service comme GitHub, vous pouvez exécuter votre propre |_+_| serveur sur un VPS pour stocker votre code et servir de référentiel principal pour tous les contributeurs.

Pourquoi exécuter votre propre serveur ?

Avec combien d'hôtes gratuits |__+_| Il existe de nombreux fournisseurs, tels que GitHub, GitLab et Bitbucket, il est donc inutile de le faire vous-même. Mais il y a des situations où c'est une solution viable.

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

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

Quel que soit votre cas d'utilisation, vous pouvez probablement faire mieux que les barebones |_+_|. GitLab Community Edition est gratuit et open source et facile à configurer sur votre serveur. Cela vous donne tous les avantages de l'hébergement vous-même avec une très belle interface Web et de nombreux outils CI/CD. Nous vous recommandons fortement d'utiliser GitLab si vous avez de l'espace libre sur le serveur. (Nécessite environ 3 Go de RAM). Vous pouvez lire notre guide d'installation et de configuration pour plus d'informations.

Mais, si vous ne voulez pas toutes les cloches et sifflets, et que vous voulez juste effectuer un simple |_+_| télécommande, vous pouvez poursuivre la lecture.

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

La première chose à garder à l'esprit |__+_| c'est qu'héberger un serveur n'est en fait pas très compliqué. Git utilise un modèle de contrôle de code source distribué ; votre clone local d'un référentiel ne se connecte pas du tout à tous vos collègues, mais se connecte à un 'distant', généralement sur un serveur ou un service central externe. Lorsque vous appuyez et tirez, vous apportez des modifications à la copie principale officielle de la télécommande. Lorsque vos collègues effectuent une recherche à distance, ils téléchargent vos reçus.

Techniquement, vous pouvez exécuter |__+_| comme un service entièrement décentralisé. Si vous aviez deux personnes, elles reçoivent chacune des mises à jour l'une de l'autre. (L'engagement dans des référentiels non serveur n'est pas recommandé 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, c'est pourquoi la plupart des gens optent pour le modèle client-serveur.

Ainsi, un ensemble |_+_| par conséquent, le serveur n'est qu'un référentiel normal configuré en tant que copie principale et ouvert sur Internet. Il est étonnamment facile à mettre en place. Tout d'abord, nous devrons créer un nouvel utilisateur. Git utilise SSH pour l'authentification et tout le trafic entre le serveur et le client, nous aurons donc besoin d'un utilisateur de service pour gérer le référentiel.

|__+_|

Ensuite, allez à |_+_| user pour le reste de la configuration :

|__+_|

Vous devrez ajouter vos clés SSH à |__+_| de l'utilisateur |__+_| procédure:

|__+_|

C'est un domaine où 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 distincts pour chaque personne, ce qui n'est pas idéal. Dans les deux cas, les confirmations seront affichées avec le nom d'utilisateur et l'adresse e-mail que l'utilisateur final a lui-même configurés. |__+_| réglages.

Quoi qu'il en soit, pour créer le référentiel réel, exécutez simplement |__+_| Dans le |__+_| répertoire personnel de l'utilisateur :

|__+_|

Le |__+_| l'option est requise ici. Habituellement, lorsque vous clonez un dépôt, |__+_| stocke tous les fichiers que vous utilisez pour gérer les versions dans le |__+_| caché dossier et conserve une version utilisable de l'endroit où HEAD est actuellement extrait. Cela rend généralement votre dossier de référentiel le double de ce qu'il serait sans |__+_|, bien qu'il puisse être plus grand si vous avez de gros fichiers binaires et de nombreux changements au fil du temps.

Un référentiel simple est simplement un référentiel sans versions utilisables des fichiers actuellement extraits. Au lieu de cela, le dossier du référentiel n'est que le contenu de ce qui serait le |__+_| liant. Cela permet d'économiser de l'espace de stockage et de configurer le référentiel en tant que serveur principal. Puisqu'il n'y a pas de contenu local, il n'y aura pas de conflit avec la branche HEAD. Il est courant de nommer les référentiels nus avec le |__+_| extension de fichier, mais ce n'est pas explicitement requis.

C'est tout ce qui est requis côté serveur. Depuis votre ordinateur local, vous devrez soit cloner le référentiel, soit ajouter une nouvelle télécommande :

|__+_|

L'URL commence par |__+_| car vous vous connectez via SSH en tant que |__+_| Nom d'utilisateur. Le |__+_| en fin de compte, c'est en fait un nom de chemin, pas seulement un identifiant. Le chemin est relatif à |__+_| répertoire personnel de l'utilisateur, donc si vous avez placé le référentiel ailleurs, nous vous recommandons de le déplacer ici ou d'utiliser le chemin complet.

Après avoir connecté votre référentiel local, vous devriez avoir un accès push et pull complet comme d'habitude. Cependant, notez que la valeur par défaut |__+_| Il n'a pas de système d'autorisations intégré, donc rien n'empêche quiconque d'accéder au |_+_| utilisateur d'avoir un contrôle total sur votre référentiel principal.

Qu'est-ce que tu penses?