====== ブラウザでの 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 で接続する。