Installation de GitLab sur un serveur VPS Ubuntu 16.04

Définition

Gitlab est un outil puissant pour gérer et administrer des dépôts GIT en toute simplicité grâce à une interface web. Dans la présente documentation, il sera abordé l'installation de Gitlab sur un serveur VPS sous Ubuntu 16.04 ainsi que la mise en place d'un reverse proxy NGINX devant Gitlab.

Pré-requis

Afin de faire fonctionner Gitlab correctement, vous aurez besoin d'un VPS M (ou supérieur). Si vous comptez héberger autre chose que Gitlab sur votre VPS, nous vous conseillons fortement la gamme Pro des VPS.

Dans cette documentation, le VPS considéré est un VPS M muni du système d'exploitation Ubuntu 16.04 fraîchement installé. Si vous appliquez cette documentation sur un VPS déjà en service (qui contient déjà autre chose), nous vous invitons à ajuster les paramètres pour convenir à votre cas d'usage.

Si vous êtes sur un autre type de système d'exploitation, je vous invite à vous référer aux liens suivants :

Veillez également à autoriser le trafic SSH sur le pare-feu physique de votre VPS pour pouvoir se connecter en root sur la console SSH.

Procédure

1. Mise à jour du système d'exploitation

Avant de procéder à l'installation de Gitlab, il est recommandé de mettre à jour le système d'exploitation. Sur votre console SSH root, écrivez cette commande :

apt-get update && apt-get upgrade -y && apt-get dist-upgrade -y

Ceci va :

  • Mettre à jour la liste des paquets (apt-get update)
  • Mettre à jour les paquetages (apt-get upgrade)
  • Supprimer et/ou ajouter de nouveaux paquetages pour permettre la mise à jour d'autres paquetages (apt-get dist-upgrade)

Nous pouvons également installer nano pour éditer nos fichiers de configurations plus tard :

apt-get install nano -y

2. Installation de Gitlab

D'abord, il est nécessaire d'installer les dépendances requises :

apt-get install -y curl openssh-server ca-certificates

Si vous n'utilisez pas un service SMTP externe pour envoyer les emails de notifications, il sera également nécessaire d'installer postfix :

apt-get install -y postfix

Pendant l'installation de postfix, il vous sera demandé quelques paramètres de configuration :

  • General type of mail configuration: Internet Site
  • System mail name: vpsXXXXX.lws-hosting.com

Maintenant, ajouter le dépôt de paquetage de Gitlab :

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | bash

et lancer l'installation :

EXTERNAL_URL="http://vpsXXXXX.lws-hosting.com:6080" apt-get install gitlab-ee

L'installation va durer plusieurs minutes.

Astuce : si vous avez une connexion Internet peu stable, vous pouvez mettre en place screen pour se reconnecter à la console détachable en cas de déconnexion non prévue. Documentation sur l'utilisation de screen.

Ici, le port 6080 a été choisi arbitrairement. Vous pouvez choisir n'importe quel port disponible. Il n'est pas nécessaire d'autoriser ce port sur le pare-feu physique du VPS étant donné qu'il ne sera utilisé que par le reverse proxy NGINX que nous allons mettre en place plus tard.

3. Mise en place d'un reverse proxy NGINX

Un reverse proxy est utile pour que Gitlab ne monopolise pas le port 80 et le port 443. Cette technique vous permettra donc d'héberger plusieurs sites à côté de Gitlab sur votre VPS (évidemment, si les ressources de votre VPS le permet).

D'abord, il faut installer NGINX :

apt-get -y install curl gnupg2 ca-certificates lsb-release
echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
    | tee /etc/apt/sources.list.d/nginx.list
curl -fsSL https://nginx.org/keys/nginx_signing.key | apt-key add -
apt-get update
apt-get -y install nginx

Maintenant, créons un fichier de configuration pour Gitlab :

nano /etc/nginx/conf.d/000-gitlab.conf
server {
    listen 80;
    server_name gitlab.example.com;

    location / {
        proxy_pass http://localhost:6080;
        proxy_redirect off;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Protocol $scheme;
        proxy_set_header X-Url-Scheme $scheme;
    }

    location ^~ /.well-known/acme-challenge/ {
        root /var/www/letsencrypt;
    }
}

L'emplacement /.well-known/acme-challenge/ sera servi par le dossier /var/www/letsencrypt afin qu'on puisse créer un certificat SSL Let's Encrypt plus tard.

Créons le dossier /var/www/letsencrypt :

mkdir /var/www/letsencrypt -p

et redémarrons NGINX :

systemctl restart nginx

A ce niveau, votre Gitlab devrait être accessible depuis gitlab.exemple.com en HTTP simple (sans HTTPS).

4. Mise en place d'un certificat SSL Let's Encrypt

Tout d'abord, il nous faut un client pour Let's Encrypt. Bien que d'autres clients comme acme.sh sont compatibles, nous allons prendre certbot qui est le plus utilisé :

apt-get install software-properties-common -y
add-apt-repository universe
add-apt-repository ppa:certbot/certbot
apt-get update
apt-get install certbot -y

Ensuite, créons le certificat SSL :

certbot certonly --webroot /var/www/letsencrypt -d gitlab.exemple.com

certbot pourra vous demander quelques informations :

  • Votre adresse email
  • Conditions d'utilisation (à accepter)
  • Newsletter de l'EFF (à accepter ou non)

Et voilà, votre certificat SSL est prêt. Installons-le sur NGINX en éditant à nouveau le fichier /etc/nginx/conf.d/000-gitlab.conf :

nano /etc/nginx/conf.d/000-gitlab.conf

et ajouter au bout de ce fichier :

[...]

server {
    listen 443 ssl;
    server_name gitlab.exemple.com;

    ssl_certificate /etc/letsencrypt/live/gitlab.exemple.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/gitlab.exemple.com/privkey.pem;
    
    location / {
        proxy_pass http://localhost:6080;
        proxy_redirect off;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Protocol $scheme;
        proxy_set_header X-Url-Scheme $scheme;
    }
}

Enfin, redémarrez NGINX :

systemctl restart nginx

Et voilà, votre installation de Gitlab est prêt à l'utilisation sur https://gitlab.exemple.com !

Notez cet article


Vous avez noté 0 étoile(s)

Cet article vous a-t-il été utile ?

Merci !

N'hésitez pas à commenter nos pages afin de nous aider à les améliorer si besoin.

Vous n'avez pas trouvé votre réponse ?

Envoyez nous un message afin d'avoir une réponse rapidement



Top