Comment installer et configurer GitLab sur Debian 9

introduction

GitLab CE, ou Community Edition, est une application open source principalement utilisée pour héberger des référentiels Git, avec des fonctionnalités supplémentaires liées au développement, telles que le suivi des problèmes. Conçu pour être hébergé à l’aide de votre propre infrastructure, il offre une flexibilité de déploiement en tant que magasin de référentiel interne pour votre équipe de développement, un moyen public d’interface avec les utilisateurs ou un moyen pour les contributeurs d’héberger leurs propres projets.

Le projet GitLab facilite la configuration d’une instance GitLab sur votre propre matériel avec un mécanisme d’installation simple. Dans ce guide, nous expliquerons comment installer et configurer GitLab sur un serveur Debian 9.

Conditions préalables

Pour ce tutoriel, vous aurez besoin de:

La configuration matérielle requise pour GitLab published publiée recommande d’utiliser un serveur avec:

  • 2 noyaux

  • 8 Go de RAM

Bien que vous puissiez peut-être vous en tirer en substituant un peu d’espace d’échange pour la RAM, ce n’est pas recommandé. Pour ce guide, nous supposerons que vous disposez au minimum des ressources ci-dessus.

  • Un nom de domaine pointé sur votre serveur. Pour plus d’informations, consultez notre documentation sur la procédure get démarré avec DNS sur DigitalOcean. Ce tutoriel utilisera le nom de domaine * example.com * à des fins de démonstration.

Étape 1 - Installation des dépendances

Avant de pouvoir installer GitLab lui-même, il est important d’installer certains des logiciels qu’il exploite au cours de l’installation et de manière continue. Heureusement, tous les logiciels requis peuvent être facilement installés à partir des référentiels de paquets par défaut de Debian.

Comme c’est la première fois que nous utilisons + apt + au cours de cette session, nous pouvons actualiser l’index de paquetage local, puis installer les dépendances en tapant:

sudo apt update
sudo apt install ca-certificates curl openssh-server postfix

Certains de ces logiciels sont peut-être déjà installés. Pour l’installation + postfix +, sélectionnez * Site Internet * à l’invite. Sur l’écran suivant, entrez le nom de domaine de votre serveur pour configurer le mode d’envoi du courrier par le système.

Étape 2 - Installation de GitLab

Maintenant que les dépendances sont en place, nous pouvons installer GitLab lui-même. Il s’agit d’un processus simple qui exploite un script d’installation pour configurer votre système avec les référentiels GitLab.

Déplacez-vous dans le répertoire + / tmp + puis téléchargez le script d’installation:

cd /tmp
curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh

N’hésitez pas à examiner le script téléchargé pour vous assurer que vous êtes à l’aise avec les actions qu’il effectuera. Vous pouvez également trouver une version hébergée du script here:

less /tmp/script.deb.sh

Une fois que vous êtes satisfait de la sécurité du script, exécutez le programme d’installation:

sudo bash /tmp/script.deb.sh

Le script configurera votre serveur pour utiliser les référentiels maintenus par GitLab. Cela vous permet de gérer GitLab avec les mêmes outils de gestion de paquets que vous utilisez pour vos autres packages système. Une fois cette opération terminée, vous pouvez installer l’application GitLab proprement dite avec + apt +:

sudo apt install gitlab-ce

Cela installera les composants nécessaires sur votre système.

Étape 3 - Réglage des règles du pare-feu

Avant de configurer GitLab, vous devez vous assurer que les règles de votre pare-feu sont suffisamment permissives pour autoriser le trafic Web. Si vous avez suivi le guide lié aux conditions préalables, vous aurez un pare-feu + ufw + activé.

Affichez le statut actuel de votre pare-feu actif en tapant:

sudo ufw status
OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

Comme vous pouvez le constater, les règles actuelles autorisent le trafic SSH, mais l’accès aux autres services est limité. GitLab étant une application Web, nous devrions autoriser l’accès HTTP. Comme nous allons tirer parti de la capacité de GitLab à demander et à activer un certificat TLS / SSL gratuit à l’adresse Let’s Encrypt, autorisons également l’accès HTTPS.

Nous pouvons autoriser l’accès à HTTP et HTTPS en autorisant le profil d’application «WWW Full» via notre pare-feu. Si le trafic OpenSSH n’est pas déjà activé, vous devez l’autoriser également maintenant:

sudo ufw allow "WWW Full"
sudo ufw allow OpenSSH

Vérifiez à nouveau le + ufw status, en ajoutant cette fois le drapeau` + verbose`; vous devriez voir l’accès configuré pour au moins ces deux services:

sudo ufw status verbose
OutputStatus: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp (OpenSSH)           ALLOW IN    Anywhere
80,443/tcp (WWW Full)      ALLOW IN    Anywhere
22/tcp (OpenSSH (v6))      ALLOW IN    Anywhere (v6)
80,443/tcp (WWW Full (v6)) ALLOW IN    Anywhere (v6)

La sortie ci-dessus indique que l’interface Web GitLab sera accessible une fois l’application configurée.

Étape 4 - Éditer le fichier de configuration GitLab

Avant de pouvoir utiliser l’application, vous devez mettre à jour le fichier de configuration et exécuter une commande de reconfiguration. Tout d’abord, ouvrez le fichier de configuration de Gitlab:

sudo nano /etc/gitlab/gitlab.rb

Près du haut se trouve la ligne de configuration + external_url +. Mettez-le à jour pour correspondre à votre domaine. Remplacez + http + par + https + pour que GitLab redirige automatiquement les utilisateurs vers le site protégé par le certificat Let’s Encrypt:

/etc/gitlab/gitlab.rb

##! For more details on configuring external_url see:
##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
external_url 'http://'

Ensuite, recherchez le paramètre + letsencrypt ['contact_emails'] +. Ce paramètre définit une liste d’adresses électroniques que le projet Let’s Encrypt peut utiliser pour vous contacter en cas de problèmes avec votre domaine. C’est une bonne idée de ne pas commenter et de remplir ce formulaire afin que vous sachiez tout problème:

/etc/gitlab/gitlab.rb

letsencrypt['contact_emails'] = ['']

Enregistrez et fermez le fichier. Exécutez la commande suivante pour reconfigurer Gitlab:

sudo gitlab-ctl reconfigure

Cela initialisera GitLab en utilisant les informations qu’il peut trouver sur votre serveur. Il s’agit d’un processus entièrement automatisé, vous n’aurez donc pas à répondre aux invites. Le processus configurera également un certificat Let’s Encrypt pour votre domaine.

Étape 5 - Configuration initiale via l’interface Web

Lorsque GitLab est en cours d’exécution et que l’accès est autorisé, nous pouvons effectuer une configuration initiale de l’application via l’interface Web.

Connexion pour la première fois

Visitez le nom de domaine de votre serveur GitLab dans votre navigateur Web:

https://

Lors de votre première visite, vous devriez voir une première invite pour définir un mot de passe pour le compte administratif:

image: https: //assets.digitalocean.com/articles/gitlab_install_1604/gitlab_initial_password2.png [Invite de définition du mot de passe initial de GitLab]

Dans l’invite de mot de passe initiale, indiquez et confirmez un mot de passe sécurisé pour le compte administratif. Cliquez sur le bouton * Changer votre mot de passe * lorsque vous avez terminé.

Vous serez redirigé vers la page de connexion conventionnelle de GitLab:

image: https: //assets.digitalocean.com/articles/gitlab_install_1604/gitlab_first_signin2.png [Invite de connexion de GitLab pour la première fois]

Ici, vous pouvez vous connecter avec le mot de passe que vous venez de définir. Les informations d’identification sont:

  • Nom d’utilisateur: * root *

  • Mot de passe: [le mot de passe que vous avez défini]

Entrez ces valeurs dans les champs pour les utilisateurs existants et cliquez sur le bouton * Connexion *. Vous serez connecté à l’application et dirigé vers une page de destination qui vous invite à commencer à ajouter des projets:

image: https: //assets.digitalocean.com/articles/gitlab_install_1604/landing_page2.png [page de renvoi de la connexion initiale de GitLab]

Vous pouvez maintenant apporter quelques modifications simples pour que GitLab soit configuré comme vous le souhaitez.

Ajuster les paramètres de votre profil

Une des premières choses que vous devriez faire après une nouvelle installation est d’améliorer votre profil. GitLab sélectionne des valeurs par défaut raisonnables, mais celles-ci ne sont généralement pas appropriées une fois que vous avez commencé à utiliser le logiciel.

Pour apporter les modifications nécessaires, cliquez sur l’icône de l’utilisateur dans le coin supérieur droit de l’interface. Dans le menu déroulant qui apparaît, sélectionnez * Paramètres *:

image: https: //assets.digitalocean.com/articles/gitlab_install_1604/profile_settings_button2.png [Bouton des paramètres de profil GitLab]

Vous serez dirigé vers la section * Profil * de vos paramètres:

image: https: //assets.digitalocean.com/articles/gitlab_install_1604/profile_settings2.png [Page des paramètres de profil GitLab]

Réglez les adresses * Nom * et * Email * de «Administrateur» et «[email protected]» sur une valeur plus précise. Le nom que vous sélectionnez sera affiché pour les autres utilisateurs, tandis que l’e-mail sera utilisé pour la détection par défaut des avatars, les notifications, les actions Git via l’interface, etc.

Cliquez sur le bouton * Mettre à jour les paramètres du profil * en bas lorsque vous avez terminé:

image: https: //assets.digitalocean.com/articles/gitlab_install_1604/update_profile_settings_button2.png [Bouton de configuration du profil de mise à jour GitLab]

Un email de confirmation sera envoyé à l’adresse que vous avez fournie. Suivez les instructions du courrier électronique pour confirmer votre compte et pouvoir commencer à l’utiliser avec GitLab.

Changer le nom de votre compte

Ensuite, cliquez sur l’élément * Compte * dans la barre de menu de gauche:

image: https: //assets.digitalocean.com/articles/gitlab_install_1604/account_menu_item2.png [Elément de menu du compte GitLab]

Ici, vous pouvez trouver votre jeton d’API privée ou configurer une authentification à deux facteurs. Cependant, la fonctionnalité qui nous intéresse pour le moment est la section * Change username *.

Par défaut, le premier compte administratif porte le nom * racine *. Puisqu’il s’agit d’un nom de compte connu, il est plus sûr de le changer pour un nom différent. Vous aurez toujours des privilèges administratifs. la seule chose qui va changer, c’est le nom. Remplacez * root * par votre nom d’utilisateur préféré:

image: https: //assets.digitalocean.com/articles/gitlab_install_1604/change_username2.png [section sur le changement de nom d’utilisateur GitLab]

Cliquez sur le bouton * Mettre à jour le nom d’utilisateur * pour effectuer le changement:

image: https: //assets.digitalocean.com/articles/gitlab_install_1604/update_username_button2.png [Bouton de nom d’utilisateur de la mise à jour GitLab]

Lors de votre prochaine connexion à GitLab, n’oubliez pas d’utiliser votre nouveau nom d’utilisateur.

Ajouter une clé SSH à votre compte

Dans la plupart des cas, vous souhaiterez utiliser des clés SSH avec Git pour interagir avec vos projets GitLab. Pour ce faire, vous devez ajouter votre clé publique SSH à votre compte GitLab.

Si vous avez déjà créé une paire de clés SSH sur votre * ordinateur local *, vous pouvez généralement afficher la clé publique en tapant:

cat ~/.ssh/id_rsa.pub

Vous devriez voir une grande partie du texte, comme ceci:

Outputssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop

Copiez ce texte et retournez à la page * Paramètres * de l’interface Web de GitLab.

Si, au lieu de cela, vous obtenez un message qui ressemble à ceci, vous n’avez pas encore de paire de clés SSH configurée sur votre ordinateur:

Outputcat: /home/sammy/.ssh/id_rsa.pub: No such file or directory

Si tel est le cas, vous pouvez créer une paire de clés SSH en tapant:

ssh-keygen

Acceptez les valeurs par défaut et fournissez éventuellement un mot de passe pour sécuriser la clé localement:

OutputGenerating public/private rsa key pair.
Enter file in which to save the key (/home/sammy/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/sammy/.ssh/id_rsa.
Your public key has been saved in /home/sammy/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:I8v5/M5xOicZRZq/XRcSBNxTQV2BZszjlWaIHi5chc0 [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|          ..%o==B|
|           *.E =.|
|        . ++= B  |
|         ooo.o . |
|      . S .o  . .|
|     . + .. .   o|
|      +   .o.o ..|
|       o .++o .  |
|        oo=+     |
+----[SHA256]-----+

Une fois que vous avez cela, vous pouvez afficher votre clé publique comme ci-dessus en tapant:

cat ~/.ssh/id_rsa.pub
Outputssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop

Copiez le bloc de texte affiché et retournez dans les * Paramètres * de l’interface Web de GitLab.

Cliquez sur l’élément * SSH Keys * dans le menu de gauche:

image: https: //assets.digitalocean.com/articles/gitlab_install_1604/ssh_keys_menu_item2.png [Elément de menu GitLab SSH Keys]

Dans l’espace prévu, collez la clé publique que vous avez copiée à partir de votre ordinateur local. Donnez-lui un titre descriptif et cliquez sur le bouton * Ajouter une clé *:

image: https: //assets.digitalocean.com/articles/gitlab_install_1604/add_ssh_key2.png [GitLab ajoute une clé SSH]

Vous devriez maintenant pouvoir gérer vos projets et référentiels GitLab à partir de votre ordinateur local sans avoir à fournir les informations d’identification de votre compte GitLab.

Étape 6 - Restriction ou désactivation des inscriptions publiques (facultatif)

Vous avez peut-être remarqué qu’il est possible pour quiconque de créer un compte lorsque vous visitez la page de destination de votre instance GitLab. Cela peut être ce que vous voulez si vous souhaitez héberger un projet public. Cependant, plusieurs fois, des paramètres plus restrictifs sont souhaitables.

Pour commencer, dirigez-vous vers la zone administrative en cliquant sur l’icône * clé * dans la barre de menu principale en haut de la page:

image: https: //assets.digitalocean.com/articles/gitlab_install_1604/admin_area_button2.png [Bouton de la zone administrative de GitLab]

Sur la page suivante, vous pouvez voir un aperçu de votre instance GitLab dans son ensemble. Pour ajuster les paramètres, cliquez sur l’option * Paramètres * en bas du menu de gauche:

image: https: //assets.digitalocean.com/articles/gitlab_install_1604/admin_settings_button2.png [Bouton des paramètres administratifs GitLab]

Vous serez amené aux paramètres globaux de votre instance GitLab. Ici, vous pouvez régler un certain nombre de paramètres qui déterminent si les nouveaux utilisateurs peuvent s’inscrire et leur niveau d’accès.

Désactiver les inscriptions

Si vous souhaitez désactiver complètement les inscriptions (vous pouvez toujours créer manuellement des comptes pour les nouveaux utilisateurs), faites défiler jusqu’à la section * Restrictions d’inscription *.

Décochez la case * Inscription activée *:

image: https: //assets.digitalocean.com/articles/gitlab_install_1604/deselect_sign-ups_enabled.png [GitLab désélectionne les inscriptions activées]

Faites défiler vers le bas et cliquez sur le bouton * Enregistrer les modifications *:

image: https: //assets.digitalocean.com/articles/gitlab_install_1604/new_save_changes_button.png [Bouton d’enregistrement des paramètres de GitLab]

La section d’inscription devrait maintenant être supprimée de la page de destination de GitLab.

Limiter les inscriptions par domaine

Si vous utilisez GitLab dans le cadre d’une organisation fournissant des adresses électroniques associées à un domaine, vous pouvez limiter les inscriptions par domaine au lieu de les désactiver complètement.

Dans la section * Restrictions d’inscription *, cochez la case * Envoyer un e-mail de confirmation lors de l’inscription *, ce qui permettra aux utilisateurs de se connecter uniquement après confirmation de leur e-mail.

Ensuite, ajoutez votre domaine ou vos domaines à la zone * Liste des domaines pour inscription , un domaine par ligne. Vous pouvez utiliser l’astérisque “” pour spécifier des domaines génériques:

image: https: //assets.digitalocean.com/articles/gitlab_install_1604/restrict_sign-ups_by_domain.png [GitLab restreint les inscriptions par domaine]

Faites défiler vers le bas et cliquez sur le bouton * Enregistrer les modifications *:

image: https: //assets.digitalocean.com/articles/gitlab_install_1604/new_save_changes_button.png [Bouton d’enregistrement des paramètres de GitLab]

La section d’inscription devrait maintenant être supprimée de la page de destination de GitLab.

Restreindre la création de projet

Par défaut, les nouveaux utilisateurs peuvent créer jusqu’à 10 projets. Si vous souhaitez autoriser la visibilité et la participation de nouveaux utilisateurs extérieurs, mais souhaitez limiter leur accès à la création de nouveaux projets, vous pouvez le faire dans la section * Paramètres de compte et de limite *.

À l’intérieur, vous pouvez changer la * limite de projets par défaut * à 0 pour empêcher complètement les nouveaux utilisateurs de créer des projets:

image: https: //assets.digitalocean.com/articles/gitlab_install_1604/set_projects_to_zero.png [GitLab a réglé les projets à zéro]

Les nouveaux utilisateurs peuvent toujours être ajoutés manuellement aux projets et auront accès aux projets internes ou publics créés par d’autres utilisateurs.

Faites défiler vers le bas et cliquez sur le bouton * Enregistrer les modifications *:

image: https: //assets.digitalocean.com/articles/gitlab_install_1604/new_save_changes_button.png [Bouton d’enregistrement des paramètres de GitLab]

Les nouveaux utilisateurs pourront désormais créer des comptes, mais ne pourront pas créer de projets.

Renouvellement des certificats Let Encrypt Certificates

Par défaut, GitLab a configuré une tâche planifiée pour renouveler les certificats de Let Encrypt tous les quatre jours après minuit, avec la minute exacte basée sur votre + external_url +. Vous pouvez modifier ces paramètres dans le fichier + / etc / gitlab / gitlab.rb +. Par exemple, si vous souhaitez renouveler tous les 7 jours à 12h30, vous pouvez le configurer comme suit:

/etc/gitlab/gitlab.rb

letsencrypt['auto_renew_hour'] = "12"
letsencrypt['auto_renew_minute'] = "30"
letsencrypt['auto_renew_day_of_month'] = "*/7"

Vous pouvez également désactiver le renouvellement automatique en ajoutant un paramètre supplémentaire à + ​​/ etc / gitlab / gitlab.rb +:

/etc/gitlab/gitlab.rb

letsencrypt['auto_renew'] = false

Avec les renouvellements automatiques en place, vous n’aurez plus à vous soucier des interruptions de service.

Conclusion

Vous devriez maintenant avoir une instance de travail GitLab hébergée sur votre propre serveur. Vous pouvez commencer à importer ou créer de nouveaux projets et configurer le niveau d’accès approprié pour votre équipe. GitLab ajoute régulièrement des fonctionnalités et met à jour sa plate-forme. Assurez-vous de consulter la page d’accueil du projet pour rester informé des améliorations ou des notifications importantes.