• Contenu
  • Bas de page
blog-ouidou_logoblog-ouidou_logoblog-ouidou_logoblog-ouidou_logo
  • Actualités Ouidou
  • Articles Techniques
  • Livres blancs
  • Interviews Clients
  • Interviews collaborateurs
Découvrir Ouidou
✕
No results See all results
Qu’est-ce que l’accessibilité numérique & RGAA ?

Qu’est-ce que l’accessibilité numérique & RGAA ?

31 mai 2024
Replay webinaire Atlassian Ouidou

Replay webinaire Atlassian Ouidou

12 juin 2024
Ressources > Configuration du Web Terminal de Gitlab

Configuration du Web Terminal de Gitlab

Écrit par Medhi Ravily

Dans un contexte DevOps, l’utilisation de pipelines CI/CD est devenue un incontournable, dans la manière de construire des images Docker, d’effectuer des tests applicatifs ainsi que de déployer l’application. Elle couvre les différentes phases qui s’étalent du développement jusqu’à la production.

Malgré l’utilisation de templates chez Ouidou pour normaliser et rendre maintenables nos infrastructures plus aisément, chaque phase de construction (job) peut apporter son lot de surprises. Dans ce contexte, il peut devenir intéressant d’interagir avec le processus de construction en cours. C’est là que l’Interactive Web Terminal fait son entrée.

Les instances Runners sur Gitlab.com ne proposant pas cette feature, il faudra utiliser vos propres project runner.

Context

Pour ce qui est de notre infrastructure, elle est composée d’un firewall et d’un proxy de type HA. L’objectif est de garder les infrastructures étanches de l’extérieur. Les runners s’exécutent donc dans un réseau privé.

Côté Gitlab, nous utilisons une version en Self-Hosted, avec 5 runners externalisés utilisant un executor Docker, 4 d’entre eux au sein du réseau privé, tandis que le dernier est exposé publiquement pour les besoins spécifiques d’un projet, cela va avoir son intérêt dans les étapes de configuration.

Toutes les briques qui composent l’infrastructure sont déployées «as code», avec Terraform et des playbook Ansible. La connexion à nos VMs s’effectue via Boundary. Dans un souci de simplicité, dans nos exemples nous effectuerons les actions manuellement.

Comment ça marche ?

Depuis le Gitlab UI, un utilisateur possédant un rôle à partir du developer, pourra effectuer l’action de Debug depuis un job d’un pipeline en cours d’exécution, cela va initier l’ouverture d’un WebSocket auprès du serveur Gitlab qui jouera le rôle de proxy vers le Runner concerné.

webterminal-needed-roles

NB: Le temps d’exécution de votre job doit être suffisamment long pour que la connexion s’effectue, pensez à ajouter un sleep pour l’étendre et avoir le temps d’effectuer vos commandes de debug.

Configuration

Il existe trois manières, selon la configuration d’exposition de vos runners, d’activer cette feature:

  • Votre serveur Gitlab et votre runner sont sur la même instance
  • Votre runner est exposé publiquement
  • Votre runner est dans un réseau privé

Quelque soit la configuration d’exposition de vos Runners, ils disposent tous du fichier de configuration config.toml. Une fois cette configuration effectuée, si votre runner est derrière un proxy, nous détaillerons les étapes relatives afin que la communication s’effectue sans encombre entre votre serveur Gitlab et vos Runners.

Configuration du Runners

Commencez par vous connecter à la machine éxécutant votre runner avec les droits root pour ouvrir le fichier config.toml

➜  ~ ssh root@127.0.0.1 -p 52004
root@gitlab:~$ vim /etc/gitlab-runner/config.toml

Localiser la section [session_server] et ajouter les valeurs suivantes :

[session_server]
  listen_address = "[::]:8093"
  advertise_address = "url-runner:8093"
  session_timeout = 1800
  • listen_address permet de définir sur quelle interface réseau votre runner doit écouter, le port est arbitraire et peux être changé selon vos besoins
  • advertise_address correspond à l’URL pour accéder au Runner, si elle n’est pas définie listen_address sera utilisée
  • session_timeout défini le TTL en secondes pendant laquelle la session restera active

Pour une configuration Gitlab et runner sur la même instance, l’advertise_address sera localhost:8083.

Pour des runnners externalisés, elle sera l’URL de votre runner ex: gitlab-runner.internal.ouidou.fr:8093 ou une URL publique.

Il ne vous reste plus qu’à effectuer la même manipulation sur tous vos runners et redémarrer le service sur chacun d’entre eux.

root@gitlab-runners-2:/home/ouidou# gitlab-runner restart

Configuration du proxy

Passons maintenant à la configuration du Proxy, cette section va dépendre du type de Proxy que vous utilisez, dans notre exemple nous éditerons le fichier de configuration d’un type HA pour naviguer automatiquement entre HTTP et le Tunnel WebSocket.

Vous pouvez retrouvez les autres configurations selon votre type de proxy à cette adresse: enabling-and-disabling-terminal-support

Rendez-vous maintenant sur votre VM et ouvrez le fichier de configuration avec votre éditeur :

defaults
  mode http
  log global
  option httplog
  option  http-server-close
  option  dontlognull
  option  redispatch
  option  contstats
  retries 3
  backlog 10000
  timeout client          25s
  timeout connect          5s
  timeout server          25s
# timeout tunnel available in ALOHA 5.5 or HAProxy 1.5-dev10 and higher
  timeout tunnel        3600s
  timeout http-keep-alive  1s
  timeout http-request    15s
  timeout queue           30s
  timeout tarpit          60s
  default-server inter 3s rise 2 fall 3
  option forwardfor

Notre proxy est configuré, nous allons vérifier que le proxy du serveur Gitlab autorise bien l’utilisation des headers nécessaire au WebSocket.

Config Gitlab pour runner derrière proxy

Connectez-vous en tant que root à votre VM, ouvrez le fichier gitlab.rb avec votre éditeur.

Cherchez la section nginx['proxy_set_headers'], et vérifiez qu’elle possède bien les headers suivants : Connection et Upgrade.

Il ne nous reste qu’une dernière chose à faire, depuis l’interface Admin de Gitlab.

Dirigez-vous dans Settings / Network / Outbound request, puis cocher Allow requests to the local network from webhooks and integrations

admin-panel-config

Conclusion

Voilà, toutes les configurations requises sont effectuées, vous pouvez maintenant vous connecter à un Web Terminal depuis l’un de vos jobs sur l’ensemble des pipelines.

web-terminal-button
webterminal-interface

Sources

  • Docs Gitlab: Interactive web terminals
  • Docs Gitlab: Configuration Session Server
  • Docs Gitlab: Enabling and disabling terminal support

À lire aussi

Diagnostiquer, comprendre et optimiser les performances d’une application React
4 mai 2026

Diagnostiquer, comprendre et optimiser les performances d’une application React

Lire la suite de l'article

Ouicommit Paris – IA : de l’expérimentation à l’industrialisation
15 avril 2026

Ouicommit Paris – IA : de l’expérimentation à l’industrialisation

Lire la suite de l'article

Ouidou et Scaleway : un partenariat stratégique pour accélérer le cloud souverain en Europe
8 avril 2026

Ouidou et Scaleway : un partenariat stratégique pour accélérer le cloud souverain en Europe

Lire la suite de l'article

Replay webinaire Ouidou x Sonar
2 juillet 2026

Replay webinaire Ouidou x Sonar

Lire la suite de l'article

Articles associés

Ouicommit Paris – IA : de l’expérimentation à l’industrialisation
15 avril 2026

Ouicommit Paris – IA : de l’expérimentation à l’industrialisation


Lire la suite
Ouidou et Scaleway : un partenariat stratégique pour accélérer le cloud souverain en Europe
8 avril 2026

Ouidou et Scaleway : un partenariat stratégique pour accélérer le cloud souverain en Europe


Lire la suite
Comment préparer votre Jira Cloud dès maintenant ? 
14 novembre 2025

Comment préparer votre Jira Cloud dès maintenant ? 


Lire la suite
Replay webinaire IA
5 novembre 2025

Replay webinaire IA


Lire la suite
  • Linkedin Ouidou
  • Youtube Ouidou

Blog Ouidou, le rendez-vous des équipes tech qui veulent comprendre avant de décider. Veille, retours d'expérience et décryptages pour rester à la pointe.

© 2026 Ouidou | Tous droits réservés | Plan du site | Mentions légales | Déclaration d'accessibilité
    Découvrir Ouidou
    No results See all results