Un serveur de terminal graphique sous Linux
Date
10.03.2024
Résumé
J'ai mis en place un environnement graphique sous Linux dans une machine virtuelle sur un serveur, avec TigerVNC pour le partage de bureau.
Cela me permet d'avoir le même environnement quelque soit le poste de travail que j'utilise et de faire des sessions de pair programming sur le code de YesWiki avec MrFlos.
Cela me permet d'avoir le même environnement quelque soit le poste de travail que j'utilise et de faire des sessions de pair programming sur le code de YesWiki avec MrFlos.
Billet
Avec quelques camarades libristes, j’ai récemment rejoint l’équipe de développement de YesWiki. Pour nous aider à nous familiariser plus rapidement avec le code, MrFlos nous a proposé de faire des sessions de pair programming.
Mais, n’étant pas physiquement au même endroit, se posait pour moi la question de l’outil à utiliser pour que ces sessions soit les plus fluides et efficaces possible.
Je n’ai jamais été satisfait de l’utilisation d’une simple visioconférence avec partage d’écran pour ce cas d'usage, parce que seule la personne qui partage son écran peut interagir avec.
Quand nous faisons de l’administration système au DistriLab nous avons l’habitude d’utiliser tmux pour travailler à plusieurs sur la même session ssh. Une visioconférence plus tmux est largement suffisante dans ce cas parce que tout se passe dans le terminal.
Mais après une première tentative de faire pareil pour corriger un bug de YesWiki en binôme avec MrFlos, cette solution s’est vite révélée trop limitante :
Alors j’ai décidé de tester une autre solution. Ça faisait longtemps que j’avais envie de me mettre en place un environnement de travail graphique sous linux dans une machine virtuelle sur un serveur, histoire d’avoir le même environnement quelque soit le poste de travail que j’utilise. Et je me suis dit que si j’avais un environnement comme ça, auquel on pouvait se connecter à plusieurs en même temps, ça pourrait être une bonne solution pour des sessions de pair programming.
Après quelques recherches sur internet je suis tombé sur un article qui avait l’air de décrire exactement ce que je voulais mettre en place, excepté pour la distribution utilisée qui est Ubuntu alors que je voudrais utiliser Debian GNU/Linux : Setting up Remote Desktop Sharing via SSH on Linux
Je me suis donc créé une machine virtuelle sur mon serveur proxmox, sur laquelle j’ai installé Debian Bookworm avec Gnome et, après les quelques configuration de base que je fais sur toutes mes machines (connexion ssh sans mot de passe avec clé publique/privée, blocage des ports réseau avec le firewall ufw, …), j’ai suivi la procédure décrite sur l’article.
Ubuntu étant proche de Debian je n’ai pas eu à adapter grand-chose. La seule différence notable a été le nom de la session graphique à utiliser dans la configuration de TigerVNC. Dans l’article c’est
Après ça il n’y avait plus qu’a personaliser un peu Gnome et à installer un environnement de dévelopement YesWiki (ce que je décrirais dans un autre billet de blog) pour avoir un bureau partagé permettant de faire des sessions de pair programming avec MrFlos
Mais, n’étant pas physiquement au même endroit, se posait pour moi la question de l’outil à utiliser pour que ces sessions soit les plus fluides et efficaces possible.
Je n’ai jamais été satisfait de l’utilisation d’une simple visioconférence avec partage d’écran pour ce cas d'usage, parce que seule la personne qui partage son écran peut interagir avec.
Quand nous faisons de l’administration système au DistriLab nous avons l’habitude d’utiliser tmux pour travailler à plusieurs sur la même session ssh. Une visioconférence plus tmux est largement suffisante dans ce cas parce que tout se passe dans le terminal.
Mais après une première tentative de faire pareil pour corriger un bug de YesWiki en binôme avec MrFlos, cette solution s’est vite révélée trop limitante :
- Il est possible d’avoir un environnement de développement relativement évoluée dans le terminal avec, entre autres, de la coloration syntaxique, de l’aide à la saisie et à la navigation dans le code et l’ouverture simultanée de plusieurs fichiers, en utilisant des logiciels comme neovim ou emacs. Mais ces outils ne sont pas faciles à prendre en main quand on n’a pas l’habitude de les utiliser. Et il faut s’accorder pour utiliser le même outil. (La division entre utilisation d’emacs et de vi/vim/neovim est légendaire, voir l’artice sur la guerre des éditeurs de texte sur Wikipedia). Et je n’ai personnellement jamais réussi à me mettre à apprendre la foultitude de raccourcis claviers qu’il est nécessaire de maitriser pour utiliser l’un ou l’autre de manière efficace. Quand je fais de l’administration système j’utilise nano pour éditer des fichiers. Et ça me suffit largement. Et bien qu'il soit possible d'avoir de la coloration syntaxique avec nano, quand je fais du développement je suis plus a l’aise avec un IDE graphique comme Eclipse ou VSCodium.
- Quand on développe une application web, tout ne peut pas se passer dans le terminal. On est fréquemment appelé à faire des aller-retours entre l’environnement de développement pour modifier le code et le navigateur web pour tester l’application ou chercher des solutions sur internet. Alors les trolls vont me dire qu’il existe des navigateurs web en mode texte. Mais, heu…, non merci.
Alors j’ai décidé de tester une autre solution. Ça faisait longtemps que j’avais envie de me mettre en place un environnement de travail graphique sous linux dans une machine virtuelle sur un serveur, histoire d’avoir le même environnement quelque soit le poste de travail que j’utilise. Et je me suis dit que si j’avais un environnement comme ça, auquel on pouvait se connecter à plusieurs en même temps, ça pourrait être une bonne solution pour des sessions de pair programming.
Après quelques recherches sur internet je suis tombé sur un article qui avait l’air de décrire exactement ce que je voulais mettre en place, excepté pour la distribution utilisée qui est Ubuntu alors que je voudrais utiliser Debian GNU/Linux : Setting up Remote Desktop Sharing via SSH on Linux
Je me suis donc créé une machine virtuelle sur mon serveur proxmox, sur laquelle j’ai installé Debian Bookworm avec Gnome et, après les quelques configuration de base que je fais sur toutes mes machines (connexion ssh sans mot de passe avec clé publique/privée, blocage des ports réseau avec le firewall ufw, …), j’ai suivi la procédure décrite sur l’article.
Ubuntu étant proche de Debian je n’ai pas eu à adapter grand-chose. La seule différence notable a été le nom de la session graphique à utiliser dans la configuration de TigerVNC. Dans l’article c’est
ubuntu-xorg qui est utilisé. Dans mon cas la session s’appelle gnome-xorgAprès ça il n’y avait plus qu’a personaliser un peu Gnome et à installer un environnement de dévelopement YesWiki (ce que je décrirais dans un autre billet de blog) pour avoir un bureau partagé permettant de faire des sessions de pair programming avec MrFlos



