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 :
- vous avez installé le paquet GitLab CE Omnibus
- vous utilisez NGinx comme serveur web
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