XDMCPでマルチユーザにX画面を提供しようとするとCUDA環境、GNOME3環境で上手くいかないときがあった。
ならばとVNCでX画面を提供しようとすると、
といった操作が必要
CUDA、GNOME3環境の問題からは回避できるが、手続きが面倒。。。
noVNC
vncクライアントがブラウザになったようなもの。
別に、上記の面倒な操作がいらなくなる訳ではないけど。。
できればXDMCPをそのままnoVNC経由でもいいからブラウザで表示されてほしい。。。ってできた#mfbd676f
参照先:https://www.youtube.com/watch?v=VM-2g1iNyz8
[root@c ~]# yum -y install epel-release
[root@c ~]# yum --enablerepo=epel -y install novnc python-websockify numpy
(ubuntu18.04)
apt -y install novnc websockify python-numpy
別に所内で使う分には用意しなくてもいいような気がしますが、、、下記は確かめてません。
証明書は下記のように作るみたい
openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/pki/tls/certs/novnc.pem -out /etc/pki/tls/certs/novnc.pem -days 365
まず、vncと同じように個々個人で「vncpasswd」でvnc向けのパスワードを作って、「vncserver」でvncサービスを起動させます。
その後、websockify でnoVNCのサービスも起動する。
[illya@c ~]$ vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
A view-only password is not used
[illya@c ~]$ vncserver -geometry 1024x1024 :1
(画面番号:1ならvncのポート番号は 5901 になります)
[illya@c ~]$ websockify -D --web=/usr/share/novnc/ 6080 localhost:5901
WebSocket server settings:
- Listen on :6080
- Flash security policy server
- Web server. Web root: /usr/share/novnc
- No SSL/TLS support (no cert file) <---- 証明書を指定してません
- Backgrounding (daemon)
[illya@c ~]$
もし証明書を使うなら、「websockify -D --web=/usr/share/novnc/ --cert=/etc/pki/tls/certs/novnc.perm 6080 localhost:5901」となるみたい
webブラウザでサービスを動かしているマシンの6080ポートに接続します。ここでは「http://c:6080/」へのアクセスになります。
すると、
と表示され、vnc向けに作ったパスワードを入力します。すると、
となる。
vncと同じ画面が、ブラウザベースで利用可能になります。
一応RELION,EMAN2,Chimeraは動くみたい。
操作感はサーバのスペック、回線にも寄るかと
vncの操作の画面が、vncクライアントか、ブラウザなのかの違いでしかない。
利点としてはブラウザならsslを噛まして所外のマシンの操作にも使えるのでしょう。
例えばAWSでマシンを作って、それをssl経由のブラウザベースで操作とかならありかな。
vncをセキュアに使うならsshトンネルかな。sshトンネルを作るならこのnoVNCは楽な選択肢に思える。
ただ、10人20人いるような場面だと個別にvncserverを立ち上げると、その分Xにリソースが割かれる。
単純にXサーバをwindows/macOSに乗せて、X画面だけ持ってこさせたほうが、、、、
vnc/XDMCPでvncクライアントから接続できることを確認して後、
[root@c ~]# websockify -D --web=/usr/share/novnc/ 6080 localhost:5900
を実行したら noVNC 経由でXDMCP接続ができた。