© Tito
Installer un serveur graphique (Xorg) sur un serveur dédié hébergé au loin
Vous louez un serveur linux au loin (chez OVH par exemple), sans interface graphique évidemment et vous avez typiquement un accès SSH sur ce serveur... et voici qu'un beau jour vous avez besoin d'une interface graphique (un serveur Xorg) sur cette machine, pour batcher des captures de sites web avec firefox ... ou faire des vignettes de vos fichiers Word avec OpenOffice ou que sais-je encore... \r\nRien de plus simpe : loguez vous à distance en ssh et installez ce qui est nécessaire (testé ici sur une fedora 8).
Il faut d'abord installer les packages manquants (le serveur X11, le serveur d'authentification, les petites apps de base, le serveur de fonts xfs et quelques fonts) :
yum install xorg-x11-server-Xorg
yum install xorg-x11-xauth
yum install xorg-x11-apps
yum install xorg-x11-xfs
yum install xorg-x11-fonts-base xorg-x11-font-utils xorg-x11-fonts-Type1 xorg-x11-fonts-truetype xorg-x11-fonts-75dpi
Quel driver graphique utiliser ? ben ça dépend de votre carte graphique ... cherchons le modèle installé :
lspci |grep -i vga
06:01.0 VGA compatible controller: XGI Technology Inc. (eXtreme Graphics Innovation) Volari Z7
Donc on cherche sur google quel driver xorg supporte cette carte et on en fait l'installation (dans mon cas pour une XGI Volari Z7 c'est le driver xorg SIS) :
yum install xorg-x11-drv-sis
Ok, maintenant que tout est là, éditez le fichier de config du serveur X :
/etc/X11/xorg.conf et faites une config minimaliste, puisque pas d'écran, ni de souris, ni de clavier : on est sur un serveur lame raqué dans une baie, ajustez simplement la ligne Driver ) :
Section "ServerLayout"
Identifier "single head configuration"
Screen 0 "Screen0" 0 0
EndSection
Section "Device"
Identifier "Videocard0"
Driver "sis"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor 1280x1024"
HorizSync 30.0 - 110.0
VertRefresh 50.0 - 150.0
EndSection
Section "Screen"
Identifier "Screen0"
Device "Videocard0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1024x768" "800x600"
EndSubSection
EndSection
Note : si vous n'avez pas besoin de dépasser le 800x600, vous n'avez pas besoin de déclarer un monitor "capable" (donc pas besoin de la section monitor)
Maintenant reconnectez vous normalement en SSH sur votre serveur distant et lancez manuellement le serveur X (repérez les messages d'erreurs éventuels et intervenez sur le fichier de config /etc/X11/xorg.conf si besoin) :
X
_XSERVTransSocketOpenCOTSServer: Unable to open socket for inet6
_XSERVTransOpen: transport open failed for inet6/ns203754.ovh.net:0
_XSERVTransMakeAllCOTSServerListeners: failed to open listener for inet6
X Window System Version 1.3.0
Release Date: 19 April 2007
X Protocol Version 11, Revision 0, Release 1.3
Build Operating System: Fedora 8 Red Hat, Inc.
Current Operating System: Linux ns203754.ovh.net 2.6.24.5-filer-std-ipv4-32 #3 SMP Wed May 28 09:11:43 CEST 2008 i686
Build Date: 24 July 2008
Build ID: xorg-x11-server 1.3.0.0-47.fc8
Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
Module Loader present
Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.0.log", Time: Mon Feb 9 11:35:21 2009
(==) Using config file: "/etc/X11/xorg.conf"
(II) Module already built-in
Voilà ... j'ai un serveur X qui tourne.
Maintenant ouvrez un autre xterm tout en laissant le serveur X tourner, reconnectez vous en ssh et essayez de lancer une application graphique à distance sur ce serveur X :
export DISPLAY=:0.0
xclock
Pas de message d'erreur ... ? ça roule.
Faites un CTRL+c pour arrêter xclock et lancez firefox puis de nouveau xclock par dessus (le & en bout de ligne permet de lancer en tache de fond et de récupérer la main sur votre shell sans attendre la fin du processus) :
yum install firefox
firefox www.google.fr &
xclock &
Maintenant reculez vous et imaginez :
vous avez donc à des centaines de kilomètres de distance un affichage X11 sur votre serveur chez OVH, avec un firefox qui affiche la page de google et un xclock entrain de faire bouger des aiguilles dessus ... et sur ce serveur pas d'écran, ni clavier, ni souris !
et nous n'avons pas non plus installé de window manager, donc pas de bordures autour des fenêtres ! quel bonheur ! ;o)
Le problème c'est qu'on ne peut pas admirez tout ça ... quoi que , il suffit de faire une capture (screenshot) et de se l'envoyer par mail !
Installez donc ImageMagick (photoshop en ligne de commande : va nous permettre de faire la capture) et un petit outil pour transformer l'image jpeg ainsi produite en fichier texte encodé en base64 , pret à être expédié par mail (quand vous attachez une jpeg à un mail avec votre logiciel de messagerie, c'est ce qu'il fait ... ) .
Lancez un 3eme xterm (sur le 1er tourne le serveur X, sur le second l'horloge xclock) et connecter vous en ssh.
D'abord installons ce qui manque peut-être :
yum install ImageMagick
yum install sharutils
Et c'est parti :
export DISPLAY=:0.0
import -window root -quality 100 jpeg:/tmp/capture.jpg
on vient de faire une capture de l'écran tout entier et d'en faire une jpeg de qualité 100% ... maintenant on se l'envoie par mail :
uuencode /tmp/capture.jpg capture.jpg |mail mon-mel@ici.fr -s "ci-joint la capture"
(nécessite que le serveur de messagerie local soit correctement configuré et capable de relayer vos mails, pour ça le vous invite à consulter cet article :
Configuration minimaliste de Sendmail »)
Admirez le résultat de la capture, c'est de toute beauté :
5 338 clics - Créé le 09/02/2009 par Tito - Modifié le 23/02/2009