GitLab sur Raspberry : configuration et accès en HTTPS (partie 2)

GitLab sur Raspberry : configuration et accès en HTTPS

La dernière fois nous avions installé dnsmasq pour accéder au Raspberry Pi en utilisant son nom de domaine.

Nous allons cette fois installer GitLab, et ajouter un certificat HTTPS validé par Let’s Encrypt.

Installation de GitLab

Tout est expliqué sur le site de GitLab, sélectionnez bien Raspberry Pi 2 on Raspbian.

L’installation est faite avec apt-get, tout simplement.

Maintenant que GitLab est installé sur notre Raspberry Pi, nous allons le rendre accessible depuis l’extérieur et lui attribuer un certificat pour récupérer les sources en HTTPS.

Accès extérieur

Sur votre box : redirigez les ports (NAT) 80 (HTTP) et 443 (HTTPS) vers le Raspberry.

Si vous redirigez le port 22 pour accéder à SSH depuis l’extérieur, pensez à bien changer le mot de passe de pi !

Chez votre fournisseur de noms de domaine : créer une nouvelle entrée vers le Raspberry.

Dans notre exemple, nous voulions accéder à GitLab à l’adresse git.mon-domaine.com.

Ainsi, créez une entrée A pour le sous-domaine git du domaine mon-domaine.com vers l’adresse IP externe de la box.

Bien sûr, si l’adresse IP externe de votre box est dynamique, configurez et utilisez son service dyndns.

GitLab HTTPS avec Let’s Encrypt

Let’s Encrypt

Nous utilisons Let’s Encrypt pour gérer les certificats gratuits et validés.

Dans le dossier approprié, installez d’abord Let’s Encrypt comme indiqué sur leur site :

git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt

Arrêtez GitLab :

sudo gitlab-ctl stop

Générez le certificat, en changeant bien l’adresse mail pour la réception des notifications et le nom de domaine concerné :

sudo ./letsencrypt-auto certonly --standalone --agree-tos --email votre@mail.com -d git.mon-domaine.com

Configuration de GitLab

Editez le fichier de configuration de GitLab :

sudo vim /etc/gitlab/gitlab.rb

pour changer la ligne external_url, comportant l’adresse finale pour accéder à GitLab (avec https://) :

external_url 'https://git.mon-domaine.com'

Comme indiqué dans la documentation de GitLab, les certificats doivent être présents dans /etc/gitlab/ssl.

Let’s Encrypt les installe dans /etc/letsencrypt/ alors il suffit de créer des liens symboliques.

sudo mkdir -p /etc/gitlab/ssl
sudo chmod 700 /etc/gitlab/ssl
sudo ln -s /etc/letsencrypt/live/git.mon-domaine.com/privkey.pem /etc/gitlab/ssl/git.mon-domaine.com.key
sudo ln -s /etc/letsencrypt/live/git.mon-domaine.com/fullchain.pem /etc/gitlab/ssl/git.mon-domaine.com.crt

Ici aussi, changez bien le nom du domaine.

Enfin, redémarrez GitLab et lancez la reconfiguration.

sudo gitlab-ctl start
sudo gitlab-ctl reconfigure

A partir de maintenant, GitLab est prêt et accessible aussi bien depuis le réseau local que depuis l’extérieur, à la même adresse.

Renouveler les certificats automatiquement

Les certificats de Let’s Encrypt sont valables trois mois. Il est donc préférable que le renouvellement soit automatique.

Créez un nouveau script :

sudo vim /chemin_vers_mon_script/renew_ssl.sh

avec ce contenu :

gitlab-ctl stop
~/.local/share/letsencrypt/bin/letsencrypt renew --agree-tos
gitlab-ctl start

Ce script arrête GitLab, renouvelle le certificat s’il est proche de l’expiration et redémarre GitLab.

Pour l’ajouter dans les tâches planifiées :

sudo crontab -e

Ajoutez la ligne :

30 4 15 * * sh /chemin_vers_mon_script/renew_ssl.sh > /chemin_vers_mon_script/renew_ssl.log

Le script est démarré le 15 de chaque mois à 4h30.

Le mot de la fin

Voilà, GitLab est disponible depuis le réseau local et depuis l’extérieur à la même adresse en HTTPS avec un certificat valide.

Vous pouvez créer des utilisateurs, des projets, des tickets, des milestones, des wiki, commiter, pusher, cloner, …

La prochaine fois nous verrons les finitions, des détails, comme par exemple… la mise en place de la sauvegarde.

L'illustration de cet article est une image sous licence CC BY-SA 4.0 par Steven Pavlov

Cet article vous a été utile ? Partage it !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Si vous le souhaitez, renseignez le champ 'Nom' de cette façon : 'VotreNom@VotreMotClef' pour obtenir une ancre optimisée pour les moteurs de recherche.