Définition
GitLab est un outil puissant pour gérer vos différents dépôts Git en toute simplicité. Cependant, sa mise en place avec nos systèmes d'exploitation munis de ISPConfig 3 peut facilement devenir un casse-tête. C'est pourquoi nous avons décidé de vous fournir un manuel complet pour cette opération.
GitLab requiert au moins 2 Go de mémoire vive. Associée avec les 2 Go minimums de ISPConfig 3, le nombre de processus exécutés (représentant près de 30 % du quota pour ISPConfig seul sans aucun site web), l'offre VPS L de la gamme Starter LWS suffit pour des petits projets, mais nous recommandons la gamme VPS Pro pour tout projet d'ordre professionnel.
Pour ce tutoriel, nous allons utiliser un VPS muni du système d'exploitation vierge Debian 9 + ISPConfig 3 proposé sur LWS Panel. Voici les liens vers les autres tutoriels pour d'autres systèmes d'exploitation :
Si vous voulez modifier le système d’exploitation de votre VPS, voici un lien vers la documentation d’aide : Comment modifier le système d’exploitation de mon VPS ?
Notez que ce tutoriel a été uniquement testé sur une installation VIERGE de Debian 9 + ISPConfig. Si vous avez déjà installé des sites web ou d'autres services sur votre VPS, nous ne pourrons pas garantir que le tutoriel sera efficace et/ou que tous vos autres services seront fonctionnels après installation.
N'oubliez pas d'activer le port SSH sur le pare-feu de votre VPS et de désactiver l'infogérance SSH afin de pouvoir se connecter en root sur la console SSH.
Voici les étapes qui seront abordées sur ce tutoriel :
Procédure
GitLab est un outil puissant pour gérer vos différents dépôts Git en toute simplicité. Cependant, sa mise en place avec nos systèmes d'exploitation munis de ISPConfig 3 peut facilement devenir un casse-tête. C'est pourquoi nous avons décidé de vous fournir un manuel complet pour cette opération.
GitLab requiert au moins 2 Go de mémoire vive. Associée avec les 2 Go minimums de ISPConfig 3, le nombre de processus exécutés (représentant près de 30 % du quota pour ISPConfig seul sans aucun site web), l'offre VPS L de la gamme Starter LWS suffit pour des petits projets, mais nous recommandons la gamme VPS Pro pour tout projet d'ordre professionnel.
Pour ce tutoriel, nous allons utiliser un VPS muni du système d'exploitation vierge Debian 9 + ISPConfig 3 proposé sur LWS Panel. Voici les liens vers les autres tutoriels pour d'autres systèmes d'exploitation :
Si vous voulez modifier le système d’exploitation de votre VPS, voici un lien vers la documentation d’aide : Comment modifier le système d’exploitation de mon VPS ?
Notez que ce tutoriel a été uniquement testé sur une installation VIERGE de Debian 9 + ISPConfig. Si vous avez déjà installé des sites web ou d'autres services sur votre VPS, nous ne pourrons pas garantir que le tutoriel sera efficace et/ou que tous vos autres services seront fonctionnels après installation.
N'oubliez pas d'activer le port SSH sur le pare-feu de votre VPS et de désactiver l'infogérance SSH afin de pouvoir se connecter en root sur la console SSH.
Voici les étapes qui seront abordées sur ce tutoriel :
Avant d’installer quoi que ce soit, il est recommandé de mettre à jour la liste des paquets et les paquets eux-mêmes. Sur votre console SSH, écrivez les commandes suivantes :
apt-get update
apt-get upgrade -y
apt-get dist-upgrade -y
Nous pouvons également mettre à jour ISPConfig.
D’abord, installons les dépendances requises par Gitlab :
apt-get install -y curl openssh-server ca-certificates
Ensuite, ajoutons le dépôt de Gitlab à votre VPS :
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | bash
Maintenant, installons Gitlab sur le port 6080 (port choisi aléatoirement) :
EXTERNAL_URL="http://vpsXXXXX.lws-hosting.com:6080" apt-get install gitlab-ee
L’installation prend plusieurs minutes, vous pouvez prendre du thé en attendant.
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.
L'installation va échouer. C'est tout à fait normal. C'est parce que Gitlab va tenter de faire des modifications au niveau du Kernel, cependant ces modifications ne sont pas autorisés sur les serveurs VPS de LWS vu la technologie de virtualisation utilisée. Pour contourner, il faut "toucher" (exécuter la commande touch
) les fichiers de configurations Kernel prosés par Gitlab pour vider leurs contenu et ainsi pouvoir poursuivre l'installation :
touch /opt/gitlab/embedded/etc/90-omnibus-gitlab-kernel.sem.conf
touch /opt/gitlab/embedded/etc/90-omnibus-gitlab-kernel.shmall.conf
touch /opt/gitlab/embedded/etc/90-omnibus-gitlab-kernel.shmmax.conf
touch /opt/gitlab/embedded/etc/90-omnibus-gitlab-net.core.somaxconn.conf
S'il y a d'autres fichiers de configurations, n'hésitez pas à les vider de leurs contenu. Ensuite, effectuez la commande suivante pour regénérer les configurations de Gitlab :
gitlab-ctl reconfigure
Maintenant, il faut arrêter GitLab qui, d'après ce que vous avez pu vérifier, n'est pas du tout fonctionnel :
gitlab-ctl stop
Le problème vient du module unicorn qui utilise le même port que ISPConfig. Nous allons donc modifier son port en éditant le fichier /etc/gitlab/gitlab.rb :
nano /etc/gitlab/gitlab.rb
et éditez la ligne suivante :
# unicorn['port'] = 8080
unicorn['port'] = 8083
Avant c'était en commentaire et 8080 comme valeur. Maintenant, on l'a décommenté et on a mis 8083 comme port. Recréons les fichiers de configurations :
gitlab-ctl reconfigure
Maintenant, il faut redémarrer Gitlab :
gitlab-ctl restart
Astuce : Si unicorn refuse de démarrer, c'est qu'il y a des processus enfants qui ne sont pas encore fermés. Fermez-les avec gitlab-ctl stop puis réessayer.
Pour sécuriser l'accès à Gitlab, nous allons créer un certificat SSL Let's Encrypt qui sera ensuite installé sur le reverse proxy.
Remarque : Nous n'allons pas mettre en place le certificat SSL sur Gitlab. Nous allons seulement sécuriser l'accès sur son reverse proxy. En effet, Gitlab ne sera accédé que par le reverse proxy, nous pouvons donc épargner un effort de calcul supplémentaire à notre VPS en chiffrant un trafic qui ne sortira pas du VPS.
Pour cela, il faut d'abord pointer git.exemple.com vers votre VPS. Après, nous allons utiliser certbot :
certbot certonly --webroot -w /usr/local/ispconfig/interface/acme/ -d git.exemple.com
Remarque : ISPConfig (grâce à son vhost et son .conf pour Apache) redirige directement les requêtes contenant /.well-known/ vers /usr/local/ispconfig/interface/acme/. Nous utilisons donc une authentification webroot et on utilise le dossier de ISPConfig prévu à cet effet. Ceci va permettre de ne pas s'interférer avec ISPConfig lors des renouvellements.
Si c'est la première fois que vous créez un certificat SSL Let's Encrypt sur votre VPS, vous devriez renseigner une adresse email et accepter les conditions d'utilisations de Let's Encrypt.
Maintenant, il faudra configurer le reverse proxy avec Apache qui cohabitera avec ISPConfig et les sites associés. Nous allons donc créer un nouveau fichier de configuration :
nano /etc/apache2/sites-available/gitlab.conf
et il faudra mettre en place le contenu suivant :
<VirtualHost *:80>
ServerName git.exemple.com
ServerAdmin root@git.exemple.com
RewriteEngine On
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>
<VirtualHost *:443>
ServerName git.exemple.com
ServerAdmin root@git.exemple.com
ProxyRequests Off
ProxyPreserveHost On
ProxyVia Full
<Proxy *>
Require all granted
</Proxy>
<Location />
ProxyPass http://127.0.0.1:6080/
ProxyPassReverse http://127.0.0.1:6080/
</Location>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/git.exemple.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/git.exemple.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/git.exemple.com/chain.pem
</VirtualHost>
Et activons ce nouveau vhost :
ln -s /etc/apache2/sites-available/gitlab.conf /etc/apache2/sites-enabled/000-gitlab.conf
Mais avant de redémarrer Apache, il faut activer les modules nécessaires :
a2enmod proxy
a2enmod proxy_http
Maintenant, redémarrer Apache :
systemctl restart apache2
Et voilà. En accédant à git.exemple.com, vous verrez que Gitlab est prêt :