[Debian-pan-maintainers] Fwd: Debian packaging: qemu-web-desktop

FARHI Emmanuel emmanuel.farhi at synchrotron-soleil.fr
Mon Apr 18 12:13:58 BST 2022




De: "FARHI Emmanuel" <emmanuel.farhi at synchrotron-soleil.fr> 
À: "roland mas" <roland.mas at gnurandal.com> 
Cc: "PICCA Frederic-Emmanuel" <frederic-emmanuel.picca at synchrotron-soleil.fr> 
Envoyé: Lundi 18 Avril 2022 13:11:33 
Objet: Debian packaging: qemu-web-desktop 

Bonjour Roland, 

J'ai pas mal travaillé sur le projet qemu-web-desktop. La principale motivation a été de n'utiliser qu'un seul port de communication pour websockify, avec des TokenFile. La configuration par défaut utilise toujours un port noVNC (:60xx) par connexion (et par port VNC :590x). Le nouveau mécanisme se choisit avec l'option dans le fichier /etc/qemu-web-desktop/config.pl 


    * $config{service_port_multiple} = 0; 

(au lieu de 1 par défaut). Le nouveau mecanisme a un seul port websockify est plus sur, car il ne necessite que l'ouverture d'un port sur les réseaux d'entreprise, plutot qu'une plage de ports que les IT n'aiment pas (a juste titre). 

Avec le git upstream du projet <https://gitlab.com/soleil-data-treatment/soleil-software-projects/remote-desktop>, tout se passe bien au début (sudo make install, accès au service, lancement de qemu, et websockify en mode 'daemon'). Un fichier qui fait le lien entre le Token websockify (ici TTUHIzPJ) et le port est crée dans /var/lib/qemu-web-desktop/snapshots/websockify-target.d/ avec la syntaxe 


    * TTUHIzPJ: 127.0.0.1:5901 

Mais on obtient le message dans le browser noVNC ' [X] Failed to connect to server '. 

Le log de apache montre: 

# sudo tail -200 /var/log/apache2/error.log 
[Mon Apr 18 12:43:40.366067 2022] [mpm_itk:warn] [pid 258231] (itkmpm: pid=258231 uid=134, gid=106) itk_post_perdir_config(): setgid(33): Operation not permitted 
[Mon Apr 18 12:43:40.366082 2022] [mpm_itk:warn] [pid 258231] Couldn't set uid/gid/priority, closing connection. 

Si on lance le websockify en avance a la main, on obtient le message suivant lorsque l'on clique sur le lien du serveur web 


    * https://grades-01.synchrotron-soleil.fr:6001/vnc.html?resize=scale&autoconnect=true&path=?token=TTUHIzPJ 

j'ai modifié la ligne /usr/lib/python3/dist-packages/websockify/websocketproxy.py, lignes 121-122 afin d'afficher la cause de l'erreur: 

except Exception as e: 
self.log_message("Failed to connect to %s:%s: %s", 
self.server.target_host, self.server.target_port, e) 

puis (idem en tant qu'utilisateur courant, root ou _qemu-web-desktop): 
$ websockify --web /usr/share/novnc --token-plugin=TokenFile --token-source=/var/lib/qemu-web-desktop/snapshots/websockify-target.d/ --cert=/etc/apache2/certificate/apache-certificate.crt --key=/etc/apache2/certificate/apache.key 6001 
WebSocket server settings: 
- Listen on :6001 
- Web server. Web root: /usr/share/novnc 
- SSL/TLS support 
- proxying from :6001 to targets generated by TokenFile 
192.168.3.225 - - [18/Apr/2022 12:26:16] 192.168.3.225: SSL/TLS (wss://) WebSocket connection 
192.168.3.225 - - [18/Apr/2022 12:26:16] 192.168.3.225: Path: '/?token=3SmaqaOg' 
192.168.3.225 - - [18/Apr/2022 12:26:16] connecting to: grades-01.synchrotron-soleil.fr:5905 
192.168.3.225 - - [18/Apr/2022 12:26:16] Failed to connect to grades-01.synchrotron-soleil.fr:5905: [Errno 111] Connection refused 

Cette erreur se produit sur nos deux serveur GPU avec le meme système Bullseye. Par contre sur mon ordi portable en Bullseye, ca marche. Il y a donc un truc qui m'échappe, et qui semble indiquer un problème de droits. 

J'ai fait des tests à la main, qui confirment cela. Un lancement tout a la main fonctionne (y compris en tant que _qemu-web-desktop ou utilisateur courant): 

# qemu-img create -f qcow2 /tmp/snap1.qcow2 10G 
# mkdir /tmp/websockify-target.d 
# FILE=/tmp/websockify-target.d/target1 
# dd status=none of=${FILE} << EOF 
target1: 127.0.0.1:5901 
EOF 
# qemu-system-x86_64 -smp 4 -name qemu-web-desktop_TTUHIzPJ:farhie:Debian11-Bullseye.qcow2 -machine pc,accel=kvm -enable-kvm -cpu host,kvm=off -m 8192 -device virtio-balloon -hda /tmp/snap1.qcow2 -boot d -cdrom /var/lib/qemu-web-desktop/machines/slax.iso -device ich9-ahci,id=ahci -netdev user,id=mynet0 -device virtio-net,netdev=mynet0 -usb -device usb-tablet -vga qxl -boot c -fsdev local,security_model=passthrough,id=fsdev0,path=/mnt -device virtio-9p-pci,id=fs0,fsdev=fsdev0,mount_tag=host_mnt -fsdev local,security_model=passthrough,id=fsdev1,path=/media -device virtio-9p-pci,id=fs1,fsdev=fsdev1,mount_tag=host_media -vnc 127.0.0.1:1 

# websockify --web /usr/share/novnc --token-plugin=TokenFile --token-source=/tmp/websockify-target.d --record=/tmp/websocket.log --cert=/etc/apache2/certificate/apache-certificate.crt --key=/etc/apache2/certificate/apache.key 6001 

et connexion sur: 


    * [ https://grades-01.synchrotron-soleil.fr:6001/vnc.html?resize=scale&autoconnect=true&path=?token=target1 | https://grades-01.synchrotron-soleil.fr:6001/vnc.html?resize=scale&autoconnect=true&path=?token=target1 ] 

marche alors sur les deux serveur GPU (mais pas a travers le service web). 

Vous êtes plus habitué aux environnements apache/mpm_itk et je ne sais pas comment aller plus loin que mes tests ci-dessus. 

Pourriez-vous consacrer quelques heures sur le nouveau contrat de 100h (déjà entamé) pour mettre a jour l'upstream avec la version 22.04.17, et faire des tests d'installation sur un environnement vierge avec l'option ' $config{service_port_multiple}=0; ' ? Je ferai ensuite des tests similaires sur les serveurs GPU où le système est installé (actuellement en 'multiple=1'). 

Merci d'avance, Emmanuel. 

-- 
/ ___| __/\_ | | | ____|_ _| | FARHI Emmanuel 
\___ \ \ | | | _| | || | Div Exp/Data Reduction and Analysis Team 
___) /_ _ | |___| |___ | || |___ Tel : +33 (1) 69 35 96 04 
|____/ \/ |_____|_____|___|_____| Saint-Aubin BP 48 - 91192 GIF/YVETTE CEDEX 
SYNCHROTRON http://www.synchrotron-soleil.fr 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-pan-maintainers/attachments/20220418/aff37681/attachment.htm>


More information about the Debian-pan-maintainers mailing list