Back to sh0
sh0

Terminal web et explorateur de fichiers dans un PaaS auto-hébergé

Comment nous avons construit un terminal dans le navigateur (xterm.js + WebSocket + Docker exec) et un explorateur de fichiers de style Docker Desktop.

Juste A. Gnimavo (Thales) & Claude | March 26, 2026 2 min sh0
EN/ FR/ ES
terminalxtermwebsocketfile-explorerdockersveltepaas

Il y a un moment dans chaque déploiement où quelque chose ne va pas et vous devez regarder à l'intérieur du conteneur. Vérifier un fichier de log. Valider un chemin de configuration. Voir si un volume s'est vraiment monté. Dans une configuration traditionnelle, vous faites un SSH sur le serveur, lancez docker exec -it container_name /bin/sh, et fouinez. Dans un PaaS, cette porte de sortie devrait être à un clic.

Nous avons construit deux fonctionnalités que la plupart des plateformes PaaS auto-hébergées n'offrent pas : un terminal dans le navigateur qui vous dépose dans n'importe quel conteneur en cours d'exécution, et un explorateur de fichiers de style Docker Desktop qui permet de parcourir, créer, modifier et supprimer des fichiers sans jamais toucher une ligne de commande.

Terminal web : architecture

Le terminal web a trois couches : Frontend (xterm.js v6 avec thème Tokyo Night), Transport (WebSocket bidirectionnel), et Backend (Rust qui spawn docker exec -i comme processus enfant et pipe entre le WebSocket et le stdin/stdout du processus).

Le shell est configurable : /bin/sh (défaut), /bin/bash (si disponible), ou /bin/ash (Alpine).

Explorateur de fichiers : architecture

L'explorateur de fichiers est plus complexe car il implique plusieurs opérations : parcourir, créer, modifier et supprimer. Chaque opération s'exécute via des commandes docker exec sur le conteneur cible.

Le premier bug rencontré était que ls --time-style=long-iso ne fonctionne pas sur les conteneurs Alpine (BusyBox). Le correctif : un repli à trois niveaux (GNU ls, BusyBox --full-time, puis ls -la brut).

La prévention de traversée de chemin valide chaque chemin demandé et bloque la suppression de répertoires système protégés.

La mise en page à deux panneaux

Le panneau gauche (280 px) est un arbre de répertoires récursif avec un sélecteur de conteneur en haut. Le panneau droit affiche soit une table de listing de répertoire, soit un éditeur de fichier, soit un état vide.

Pourquoi c'est important

Le terminal web et l'explorateur de fichiers éliminent la raison la plus courante pour laquelle un développeur fait un SSH sur un serveur après avoir déployé une application : « j'ai besoin de regarder à l'intérieur du conteneur. »


Prochain dans la série : Logs en temps réel : streaming WebSocket depuis les conteneurs Docker.

Share this article:

Responses

Write a response
0/2000
Loading responses...

Related Articles

Thales & Claude deblo

Le jour où Déblo a refusé une bonne réponse — deux fois

Une trace de production a montré Déblo K12 rejetant deux fois de suite la bonne réponse d’un élève de Terminale. Huit heures d’analyse, quatre commits, une rotation A/B de modèles et un benchmark sur 6 modèles plus tard, le tuteur de maths était corrigé. Ce qui a cassé, ce que nous avons changé, et ce que l’échec surprenant de GPT-5.4-mini au test socratique nous a appris sur le choix des modèles pour l’IA éducative.

32 min May 3, 2026
debloclaude-opus-4.7claude-codemethodology +14
Thales & Claude deblo

Web Claude a trouvé le bug. Puis il a failli l’aggraver.

Comment un prompt vocal de 270 lignes pour le tuteur Ultravox de Deblo produisait la même phrase d’accueil scriptu00e9e à chaque appel. Web Claude a diagnostiqué le problème parfaitement, puis a prescrit une correction qui aurait doublé la taille du prompt avec des hooks backend inexistants. Le filtre qui a gardé le diagnostic et rejeté la prescription.

17 min Apr 28, 2026
debloclaude-opus-4.7methodologyprompt-engineering +7
Thales & Claude deblo

Pourquoi j’ai dû corriger Web Claude deux fois sur la stratégie de la page d’accueil de Deblo

Comment une conversation de 48 heures avec Web Claude a failli entraîner Deblo dans le piège généraliste « ChatGPT pour l’Afrique », et pourquoi la connaissance du marché par le fondateur a dû prendre le dessus sur les suggestions stratégiques de l’IA à deux reprises.

26 min Apr 26, 2026
debloclaude-opus-4.7methodologystrategy +6