GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment installer le serveur Gitlab avec Docker sur Ubuntu 18.04 LTS

Gitlab CE ou Community Edition est une application open source utilisée pour héberger vos référentiels Git. L'auto-hébergement de vos référentiels Git vous donne un contrôle total sur vos données tout en offrant une interface facile à utiliser pour vous et les membres de votre équipe.

Dans ce guide, nous expliquerons comment installer votre référentiel Git à l'aide de l'offre gratuite de Gitlab, l'édition communautaire. Si vous souhaitez des fonctionnalités avancées telles que les approbations de fusion, les feuilles de route, la gestion de portefeuille, la reprise après sinistre, l'analyse des conteneurs, etc., vous pouvez choisir de passer à l'édition Enterprise.

Prérequis

  • Un serveur basé sur Ubuntu 18.04 avec un utilisateur sudo non root.
  • Vous avez besoin d'un VPS avec un minimum de 2 cœurs de processeur et 8 Go de RAM conformément à la configuration matérielle requise pour Gitlab CE, qui prendra en charge 100 utilisateurs. Même si vous pouvez remplacer l'espace d'échange par la RAM, cela n'est pas recommandé car l'application s'exécutera plus lentement.

Étape 1 - Installation des dépendances

Avant d'installer Gitlab, nous devons nous assurer que notre serveur dispose de certains logiciels dont Gitlab aura besoin pour fonctionner correctement. Exécutez les commandes suivantes pour installer les dépendances.

$ sudo apt update
$ sudo apt install ca-certificates curl openssh-server ufw apt-transport-https -y

Certains des logiciels ci-dessus peuvent être préinstallés pour vous.

Étape 2 - Modifier le port SSH de votre système

Gitlab utilisera le port 22 pour pousser les référentiels via SSH. Le SSH de votre serveur est également en cours d'exécution, ce qui générera un conflit. Il y a deux façons de procéder. Soit vous pouvez changer le port SSH que vous utilisez pour vous connecter à votre système, soit vous pouvez changer le port que Gitlab utilisera pour SSH. Dans ce tutoriel, nous allons changer le port SSH du serveur lui-même.

Pour ce faire, nous devons éditer le fichier /etc/ssh/sshd_config. Ouvrez le fichier dans l'éditeur de texte nano.

$ sudo nano /etc/ssh/sshd_config

Trouvez la ligne suivante et changez 22 à 6622 et supprimez le # devant. Vous pouvez choisir n'importe quel port que vous voulez.

# Port 22

Appuyez sur Ctrl + X pour fermer votre fichier et appuyez sur Y pour enregistrer les modifications.

Redémarrez le service SSH.

$ sudo systemctl restart sshd

Fermez votre session SSH actuelle et créez-en une nouvelle avec le port 6622 et reconnectez-vous à votre serveur.

$ ssh [email protected] -p 6622

Étape 3 - Configuration du pare-feu

Dans notre étape précédente, nous avons installé ufw (pare-feu non compliqué). Avant de pouvoir procéder à l'installation de Gitlab, nous devons le configurer.

Activez SSH et le port que nous venons de créer afin que nous ne soyons pas bloqués.

$ sudo ufw allow OpenSSH
$ sudo ufw allow 6622

Activez le pare-feu ufw.

$ sudo ufw enable

Nous devons également activer http et https pour que Gitlab fonctionne.

$ sudo ufw allow http
$ sudo ufw allow https

Vérifiez l'état du pare-feu.

$ sudo ufw status

Vous devriez voir une sortie comme celle-ci.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
6622                       ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
443/tcp                    ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
6622 (v6)                  ALLOW       Anywhere (v6)      
80/tcp (v6)                ALLOW       Anywhere (v6)             
443/tcp (v6)               ALLOW       Anywhere (v6)             

Étape 4 - Installer Docker

Ajoutez la clé GPG de Docker à votre système.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Vérifiez l'empreinte digitale de la clé téléchargée.

$ sudo apt-key fingerprint 0EBFCD88

Vous devriez voir une sortie comme celle-ci.

pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <[email protected]>
sub   rsa4096 2017-02-22 [S]

Ajoutez le référentiel Docker.

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Mettez à jour votre base de données de packages.

$ sudo apt update

Installez Docker CE. CE est l'édition communautaire de Docker.

$ sudo apt install docker-ce -y

Docker devrait être installé maintenant. Vérifiez qu'il est en cours d'exécution.

$ sudo systemctl status docker

La sortie doit ressembler à ce qui suit.

? docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2019-10-11 21:10:31 UTC; 32s ago
     Docs: https://docs.docker.com
 Main PID: 19128 (dockerd)
    Tasks: 12
   CGroup: /system.slice/docker.service
           ??19128 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Appuyez sur q pour quitter.

Ajoutez votre compte d'utilisateur Linux limité au groupe docker afin de pouvoir exécuter docker sans sudo.

sudo usermod -aG docker $USER

$USER La variable choisira et ajoutera l'utilisateur actuellement connecté au groupe docker. Remplacez $USER avec le nom d'utilisateur réel si vous n'êtes pas actuellement connecté avec cet utilisateur.

Passez à l'utilisateur que nous venons d'ajouter. Même si vous étiez déjà connecté, vous devrez toujours y revenir pour recharger les autorisations.

$ su - ${USER}

Vérifiez que tout fonctionne correctement en exécutant le programme intégré "Hello World".

$ docker run hello-world

Vous devriez voir la sortie suivante qui indiquera que Docker est installé et fonctionne correctement.

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete 
Digest: sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

Étape 5 - Installer Docker Compose

Il est possible d'ignorer cette étape et de continuer, mais l'installation de Docker Compose facilitera grandement l'exécution de Gitlab, surtout si vous souhaitez le faire sur plusieurs serveurs.

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Au moment de la rédaction de ce didacticiel, 1.24.1 est la version stable actuelle de Docker Compose. Vous pouvez vérifier la dernière version sur leur page Github.

Appliquez les autorisations exécutables au binaire de composition docker.

$ sudo chmod +x /usr/local/bin/docker-compose

Ajouter l'achèvement de la commande à Docker Compose.

$ sudo curl -L https://raw.githubusercontent.com/docker/compose/1.24.1/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose

Vérifiez si votre installation a réussi.

$ docker-compose --version

Il imprimera la sortie suivante.

docker-compose version 1.24.1, build 4667896b

Étape 6 - Installer Gitlab

Téléchargez l'image Docker de Gitlab depuis Dockerhub. Cette image contient tout ce dont vous avez besoin pour exécuter Docker - nginx, PostgreSQL, Redis, etc. Exécutez la commande suivante pour télécharger l'image.

$ docker pull gitlab/gitlab-ee:latest

Même si ce didacticiel concerne l'installation de l'édition communautaire, nous allons néanmoins saisir l'image Enterprise Edition de Gitlab. En effet, l'édition Enterprise se comporte exactement comme l'édition Community, sauf si vous la mettez à niveau en saisissant votre licence. La mise à niveau d'une installation Community Edition vers Enterprise Edition présente plus de complications.

Il faudra un peu de temps pour télécharger l'image complète. Lorsque le travail est terminé, vous pouvez exécuter la commande suivante pour vérifier toutes les images actuellement sur votre système.

$ docker images

La sortie doit ressembler à ce qui suit.

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
gitlab/gitlab-ee    latest              4bacb2356d28        4 days ago          1.87GB
hello-world         latest              fce289e99eb9        9 months ago        1.84kB

Étape 7 - Exécuter Gitlab

Nous pouvons exécuter le conteneur Gitlab immédiatement à ce stade en fournissant toutes les options dans une seule commande, mais cela signifierait que chaque fois que vous devez exécuter le conteneur, vous devez fournir ces variables. Docker Compose facilite ce processus car il vous permettra d'enregistrer la configuration dans un fichier .yml qui sera ensuite utilisé pour exécuter et lancer le conteneur.

Créez un docker-compose.yml.

$ nano docker-compose.yml

Collez le code suivant.

web:
  image: 'gitlab/gitlab-ee:latest'
  container_name: 'gitlab-howtoforge-tutorial'
  restart: always
  hostname: 'gitlab.example.com'
  environment:
    GITLAB_OMNIBUS_CONFIG: |
      external_url 'https://gitlab.example.com'
      gitlab_rails['smtp_enable'] = true
	  gitlab_rails['smtp_address'] = "smtp.gmail.com"
      gitlab_rails['smtp_port'] = 587
      gitlab_rails['smtp_user_name'] = "[email protected]"
      gitlab_rails['smtp_password'] = "app-password"
      gitlab_rails['smtp_domain'] = "smtp.gmail.com"
      gitlab_rails['smtp_authentication'] = "login"
      gitlab_rails['smtp_enable_starttls_auto'] = true
      gitlab_rails['smtp_tls'] = false
      gitlab_rails['smtp_openssl_verify_mode'] = 'peer'
      # Add any other gitlab.rb configuration here, each on its own line
  ports:
    - '80:80'
    - '443:443'
    - '22:22'
    - '587:587'
  volumes:
    - '/srv/gitlab/config:/etc/gitlab'
    - '/srv/gitlab/logs:/var/log/gitlab'
    - '/srv/gitlab/data:/var/opt/gitlab'

Voyons ce que chacune des options ci-dessus signifie.

  • image fait référence à l'emplacement de l'image Docker de Gitlab sur Dockerhub.
  • nom_du_conteneur vous permet d'appliquer une étiquette à votre conteneur Docker, à utiliser lors du référencement du conteneur au sein d'un réseau Docker.
  • nom d'hôte définit le nom d'hôte interne du conteneur ou dans notre cas, l'URL où votre Gitlab sera installé.
  • redémarrer spécifie une stratégie de redémarrage pour le conteneur. Nous l'avons défini sur toujours ce qui signifie qu'un conteneur, s'il est fermé, sera automatiquement redémarré.
  • environnement fournit la variable GITLAB_OMNIBUS_CONFIG qui vous permet d'entrer n'importe quel paramètre de configuration Gitlab. Dans ce cas, nous avons fourni l'URL externe que Gitlab est censé utiliser.
  • volume définit les répertoires montés sur le serveur pour stocker les données persistantes. Les trois volumes/répertoires stockent les données d'application, les fichiers journaux et les fichiers de configuration. La valeur à gauche du point-virgule est le répertoire local sur le serveur, et la valeur à droite est le répertoire à l'intérieur du conteneur.
  • publier indique au conteneur de publier des ports ou une plage de ports sur l'hôte. Puisque Gitlab a besoin des ports 22(SSH), 80(HTTP), 443(HTTPS) et 587(SMPT - MSA), nous les avons spécifiés ici. Si vous souhaitez que Gitlab utilise un port non standard sur votre serveur (probablement parce qu'il n'est pas disponible), vous devez d'abord fournir le port hôte, puis le port conteneur. Par exemple, puisque votre serveur utilise déjà le port SSH(22), vous pouvez dire à Gitlab d'utiliser SSH via un port différent, disons 3333. Ensuite, vous changerez 22:22 dans le fichier ci-dessus à 3333:22 . Vous devrez également ajouter la ligne gitlab_rails['gitlab_shell_ssh_port'] =3333 sous GITLAB_OMNIBUS_CONFIG ci-dessus.
  • URL_externe fait référence au domaine où votre Gitlab sera installé. Nous avons choisi https qui installera automatiquement le certificat SSL Let's Encrypt pour nous.
  • Nous avons également ajouté une configuration supplémentaire pour configurer Gitlab afin qu'il utilise Gmail pour envoyer des e-mails. Vous pouvez utiliser n'importe quel service de messagerie SMTP tiers. Les documents Gitlab ont maintenu un guide détaillé sur la façon de configurer divers services SMTP avec.

Assurez-vous que vous êtes dans le même répertoire que docker-compose.yml. Exécutez la commande suivante pour démarrer Gitlab.

$ docker-compose up -d

Vous verrez quelque chose comme ce qui suit.

Creating gitlab-howtoforge-tutorial ... done

Il faudra encore quelques minutes avant de pouvoir accéder à Gitlab via le navigateur. Vous pouvez en savoir plus sur le processus de démarrage via la commande suivante.

$ docker logs -f gitlab-howtoforge-tutorial

Pour quitter le processus de surveillance des journaux, appuyez sur Ctrl + C.

Chargez le site Gitlab dans votre navigateur. Si vous essayez de le charger trop peu de temps après le démarrage du conteneur, vous obtiendrez l'erreur 502. Si cela se produit, attendez quelques minutes de plus et réessayez.

Si tout va bien, vous verrez la page suivante dans votre navigateur.

Étape 8 - Configurer Gitlab

Fournissez un mot de passe pour le mot de passe administrateur de Gitlab. Vous serez ensuite redirigé vers l'écran de connexion. Utilisez racine comme nom d'utilisateur et mot de passe que vous venez de choisir pour vous connecter.

Configurer SMTP

Nous devrons activer les paramètres SMTP avant de

Configurer le profil Gitlab

Cliquez sur l'icône de l'utilisateur dans le coin supérieur droit pour afficher le menu déroulant et sélectionner les paramètres.

Vous serez redirigé vers la page des paramètres de votre profil. Ajoutez votre nom et votre e-mail ici. Vous devrez confirmer votre adresse e-mail pour qu'elle soit mise à jour. Vous pouvez également ajouter ici plus d'informations sur vous-même si vous le souhaitez.

Cliquez sur Mettre à jour les paramètres du profil lorsque vous avez terminé.

Modifier le nom d'utilisateur

Ensuite, nous devons changer notre nom d'utilisateur de root à autre chose en tant que root est un nom d'utilisateur devinable assez courant. Cliquez sur Compte dans la barre latérale gauche.

Remplacez l'utilisateur par le nom d'utilisateur que vous souhaitez conserver. Cliquez sur Mettre à jour le nom d'utilisateur pour finir. Vous devez également activer l'authentification à deux facteurs ici pour plus de sécurité.

Restreindre les inscriptions publiques

Par défaut, les installations de Gitlab permettent à tout le monde de s'inscrire. Si vous ne le souhaitez pas, vous devez le désactiver. Cliquez sur l'icône en forme de clé à molette dans la barre supérieure pour accéder à la zone d'administration.

Pour régler les paramètres, cliquez sur Paramètres dans la barre latérale gauche.

Ici, faites défiler jusqu'aux restrictions d'inscription et cliquez sur Développer bouton. Décochez la case Inscription activée case et cliquez sur Enregistrer les modifications une fois terminé.

Vous pourrez toujours ajouter de nouveaux utilisateurs via l'interface d'administration.

Ajouter une clé SSH

La dernière étape consiste à ajouter notre clé SSH. Si vous avez une clé SSH, vous pouvez ignorer la commande suivante. Si vous n'en avez pas, vous pouvez en créer un en utilisant la commande suivante.

$ ssh-keygen

Cette commande est commune à Mac OS, Linux et Git Bash/WSL sous Windows. Acceptez les valeurs par défaut et laissez le champ de la phrase secrète vide.

Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): /home/user/.ssh/gitlab
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in gitlab.
Your public key has been saved in gitlab.pub.
The key fingerprint is:
SHA256:6dNGAPyd8JAkHAikYOW2PsFjGlzBBpwy4XQ9RQgVwK8 [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|+*OB=*O=..       |
|B+o+o+oo+        |
|oo.+. ...= .     |
|. + ..  .o+      |
| o *.   S .      |
|  =Eo  . o       |
| . o    o o      |
|    .    o       |
|                 |
+----[SHA256]-----+

Vous pouvez afficher votre clé publique via la commande suivante

$ cat ~/.ssh/gitlab.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDUf64YH7uJimFWVJSy/mgYiLRqBxVB6JJMTxZZ96DwExoINhWVRhQAgMgExBWGpUCpWXhLcNuIM+EfFRtCq+YYyLC+GlHsNdnLgecGgop72p8BEi8UckgCiCSuMrWCMAOFh5NKs2YHpF7bOUjXQRVvGujLuV1UBof7SXQ/za7e3aybNiH3KpA6oWSSmpqnOt8rZT54IjLnVFUSLx7ZxWDVW1bO29mI8NjWwzZGLAtNIkJQEOqVo8nhVkroFHvBTrZnUsmr5oFOWG++LPqED9EUSPTpO8PNnogYT3xsVncBMMAEt0pPE7ATmstQc161SEtqAUa98Qb0RRKqCKcKStOp [email protected]

Revenez à la zone Paramètres de votre profil et accédez aux clés SSH depuis la barre latérale.

Collez la clé SSH dans la case prévue et cliquez sur Ajouter une clé pour continuer.

Vous pouvez désormais créer et valider vos référentiels sans avoir à fournir vos informations d'identification Gitlab.

Étape 9 - Créez votre premier projet

Chaque dépôt dans Gitlab appartient à un projet. Un projet comprend un référentiel, un outil de suivi des problèmes, des demandes de fusion, un wiki, des pipelines d'intégration et de livraison continues (CI/CD) et de nombreuses autres fonctionnalités.

Pour créer votre premier dépôt, cliquez sur Créer un projet .

Vous serez redirigé vers la page Nouveau projet. Saisissez le nom du projet. Vous pouvez changer le slug du projet en quelque chose de différent. Entrez une description du projet si vous le souhaitez et modifiez la visibilité du projet comme vous le souhaitez. Vous pouvez initialiser votre référentiel avec un fichier README. Une fois que vous avez terminé, cliquez sur Créer un projet .

Vous serez redirigé vers votre page de référentiel avec un seul fichier README.md vierge.

Maintenant que notre référentiel est en ligne, essayons d'ajouter un journal des modifications à partir de la ligne de commande.

Entrez les commandes suivantes sur votre ordinateur pour créer un fichier CHANGELOG et le repousser vers votre référentiel. Assurez-vous que Git est installé sur votre ordinateur.

Clonez le référentiel. Vous pouvez cloner en utilisant SSH ou HTTPS.

Cloner en utilisant SSH.

$ git clone [email protected]:user/howtoforge-test.git

ou Cloner en utilisant HTTPS.

$ git clone https://gitlab.example.com/user/howtoforge-test.git

Entrez le reste des commandes pour créer et appuyez sur CHANGELOG.

$ cd howtoforge-test
$ touch CHANGELOG  # Or create the file in your editor and enter a project description
$ git add CHANGELOG
$ git commit -m "add Changelog"
$ git push -u origin master

Étape 10 - Gérer le conteneur Gitlab

Pour afficher tous les conteneurs en cours d'exécution, exécutez la commande suivante.

$ docker-ps

Pour arrêter votre conteneur Gitlab, exécutez la commande suivante.

$ docker stop gitlab-howtoforge-tutorial

Pour redémarrer votre conteneur, utilisez la commande suivante.

$ docker start gitlab-howtoforge-tutorial

Si vous souhaitez supprimer votre conteneur, vous pouvez le faire à l'aide de la commande suivante.

$ docker container rm gitlab-howtoforge-tutorial

Étape 11 - Mettre à jour Gitlab

Si vous souhaitez mettre à niveau Gitlab vers la version la plus récente, vous devez arrêter et supprimer le conteneur existant, extraire la dernière image, puis recréer le conteneur.

$ docker stop gitlab-howtoforge-tutorial
$ docker rm gitlab-howtoforge-tutorial
$ docker pull gitlab/gitlab-ee:latest
$ docker-compose up -d

Et avant que vous ne le demandiez, vos données seront en sécurité même si vous supprimez le conteneur.

Ceci conclut notre tutoriel sur la configuration de Gitlab sur le serveur Ubuntu 18.04 à l'aide de Docker. Si vous avez des questions, postez-les dans les commentaires ci-dessous.


Ubuntu
  1. Comment installer Docker sur Ubuntu 16.04

  2. Comment installer le serveur RabbitMQ sur Ubuntu 18.04 et 16.04 LTS

  3. Comment installer le serveur Gitlab sur Ubuntu 18.04 et 16.04 LTS

  4. Comment installer le serveur Xrdp sur Ubuntu 20.04 LTS

  5. Comment installer Docker sur Ubuntu 20.04 LTS

Comment installer Docker sur le serveur Ubuntu 18.04 LTS

Comment installer Gitlab sur Ubuntu 20.04 LTS

Comment installer WordPress avec Docker sur Ubuntu 16.04 LTS

Comment installer Docker sur Ubuntu 20.04 LTS

Comment installer le serveur FTP sur Ubuntu 20.04 LTS

Comment installer Wiki.js sur Ubuntu 20.04 LTS