Configurer GitLab sur un sous-domaine NGinx

14 avril 2016 Auto-hébergement 0 Commentaire

Configurer Gitlab sur un sous-domaine sans se retrouver avec du mixed content est assez chiant pour être franc. J’ai pas mal tâtonné, soit je me retrouvais avec une erreur 502 Bad Gateway soit Gravatar passait par le protocole HTTP. J’ai fini par trouver la solution et je souhaitais la partager dans un mémo.

Dans ce billet je pars du principe que :

 

Configurer Gitlab sur un sous-domaine NGinx

Configuration de Gitlab

Commencez par éditer la configuration de Gitlab

sudo nano /etc/gitlab/gitlab.rb

 

Ajoutez et/ou modifiez les lignes suivantes

external_url 'https://git.votre-domaine.tld' # A remplacer par le sous-domaine que vous souhaitez utiliser
nginx['listen_addresses'] = ['192.168.1.2'] # IP du serveur GitLab
nginx['listen_port'] = 8888 # port de votre choix
nginx['listen_https'] = false # Vous lisez bien, https false

 

Appliquez les changements de configuration

sudo gitlab-ctl restart

 

 

Configuration de NGinx

Vous allez maintenant devoir créer un virtual host pour votre sous-domaine

sudo nano /etc/nginx/sites-enabled/git.votre-domaine.tld

 

Collez la configuration suivante mais surtout n’oubliez pas de l’éditer selon vos besoins

upstream gitlab {
 server 192.168.1.2:8888;
}


server {
 listen 80;
 server_name git.votre-domaine.tld;
 return 301 https://git.votre-domaine.tld$request_uri;
 }


server {
 listen 443 ssl http2; 
 server_name git.votre-domaine.tld
 root /dev/null;

 ssl_certificate /etc/letsencrypt/live/votre-domaine.tld/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/votre-domaine.tld/privkey.pem;
 ssl_protocols TLSv1.2;
 ssl_dhparam /etc/nginx/ssl/dh4096.pem;
 ssl_prefer_server_ciphers on;
 ssl_ciphers "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256";
 ssl_ecdh_curve secp384r1;

 add_header X-Content-Type-Options nosniff;
 add_header X-XSS-Protection "1; mode=block";

 # A modifier en fonction de la taille des fichiers que vous uploadez
 client_max_body_size 20m;
 
 location / {
 proxy_read_timeout 300;
 proxy_connect_timeout 300;
 proxy_redirect off;
 
 proxy_set_header X-Forwarded-Proto $scheme;
 proxy_set_header Host $http_host;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-Ssl on;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Frame-Options SAMEORIGIN;
 
 proxy_pass http://gitlab;} 

}

 

Vous pouvez maintenant tester votre configuration et si aucune erreur n’apparaît rechargez la configuration NGinx

sudo service nginx reload

 

Voilà vous avez terminé de configurer GitLab sur un sous-domaine et vous devriez maintenant pouvoir y accéder via git.votre-domaine.tld