====== ブラウザでの desktop 接続 ======
prisoner desktop にブラウザで接続する。\\
{{:vps:novnc.png}}
===== desktop 設定 =====
==== pkg ====
pkgにて以下を導入。
  * xdm
  * xsm
==== xdm ====
prisner desktop 起動時に xdm を起動する。
  * /usr/local/etc/rc.d/xdm 作成
#!/bin/sh
#
# PROVIDE: xdm
# REQUIRE: DAEMON ldconfig
. /etc/rc.subr
name="xdm"
rcvar="xdm_enable"
command="/usr/local/bin/xdm"
start_cmd="xdm_start"
xdm_start()
{
	${command}
}
load_rc_config $name
run_rc_command "$1"
  * /etc/rc.conf 編集
xdm_enable="YES"
  * /usr/local/etc/X11/xdm/Xaccess 編集
*   #any host can get a login window
  * /usr/local/etc/X11/xdm/xdm-config 編集
!DisplayManager.requestPort:    0
==== TigerVNC  ====
TigerVNC を inetd で制御する。
  * /etc/services 編集
vnc     5901/tcp
  * /etc/inetd.conf 編集
vnc	stream	tcp	nowait	nobody	/usr/local/bin/Xvnc	Xvnc -inetd -query localhost -once -geometry 1440x900 -securitytypes=none
  * /etc/rc.conf 編集
inetd_enable="YES"
===== web 設定 =====
==== pkg ====
pkgにて、以下を導入。
  * novnc
  * bash
  * git
==== WebSockify 設定 ====
WebSockify のダウンロードと設定する。
  * websockify をダウンロードするため、launch.sh を一度実行する。
# cd /usr/local/libexec/novnc/utils
# chmod 744 launch.sh
# ./launch.sh
<中略>
Filed to start WebSockets proxy
#
  * /usr/local/libexec/novnc/utils/websockify/run 修正
python3.6 -m websockify $@ (python を python3.6 に修正)
==== noVNC 設定 ====
noVNC 向け設定を行う。
  * /usr/local/etc/rc.d/novnc を作成する。
#!/bin/sh
# PROVIDE: novnc
PATH=$PATH:/usr/local/bin
. /etc/rc.subr
name="novnc"
rcvar="${name}_enable"
start_cmd="novnc_start"
novnc_start()
{
	echo "Start run"
	echo ${command_args}
	/usr/local/libexec/novnc/utils/websockify/run --daemon ${novnc_local} ${novnc_remote}
}
load_rc_config $name
run_rc_command "$1"
  * /etc/rc.conf を編集する。
novnc_enable="YES"
novnc_local="6080"
novnc_remote="192.168.100.2:5901"
==== apache 設定 ====
  * /usr/local/etc/apache24/httpd.conf 設定
LoadModule proxy_module libexec/apache24/mod_proxy.so
LoadModule proxy_http_module libexec/apache24/mod_proxy_http.so
LoadModule proxy_wstunnel_module libexec/apache24/mod_proxy_wstunnel.so
  
  * /usr/local/etc/apache24/extra/httpd-ssl.conf 設定
SSLCACertificateFile "/usr/local/etc/apache24/ssl.crt/cacert.pem"
ProxyRequests Off
ProxyPass /websockify ws://localhost:6080/websockify retry=3
ProxyPassReverse /websockify ws://localhost:6080/websockify retry=3
RedirectMatch permanent /<パス>$ /<パス>/
Alias /<パス> /usr/local/libexec/novnc
    AllowOverride all
    Order allow,deny
    Allow from all
    Require all granted
    SSLVerifyClient require
    * /websockify へは reverse proxy 設定
    * /usr/local/libexec/novnc へは alias 設定
    * <パス> は推測しにくいものにしたほうが良い?
    * クライアント証明書で保護
==== 接続 ====
  * Aliasで指定したパス+ vnc.html で接続する。