ansi-vncとは
黒い画面で動くVNCクライアントというか、ビューアー。
ansi-canvasという、node-canvasをベースにターミナルで動く、キャラクタベースの描画ライブラリを元に作られている。
VNCサーバーの用意
随分前にDocker始めた頃に、firefoxのDockerイメージの存在を知り、これが、Xvncサーバーを使っていた事を思い出した。
QiitaでもDocker で X11 アプリを動かす. - Qiitaという記事に、このイメージの紹介がありました。
vncサーバー側のパスワードの変更
ansi-vncはパスワード付きのVNCサーバーとの通信にももちろん対応しているのですが、現状パスワードが数字のみの場合、内部的にJavaScriptの文字列として扱えず、認証でコケます。
ansi-vncを治しても良いのですが、パスワードで数字のみのほうが昨今のセキュリティ事情的には如何なものか?ということで、Dockerfileのパスワードを変更してこれに対応しました。
git clone https://github.com/creack/docker-firefox.git
cd docker-firefox
Ubuntuのバージョン指定が12.04となっており、現時点でこのままだとビルドでエラーが起きたので、このバージョンも14.04に変更し、
Dockerfileを以下のように編集しました。
# Firefox over VNC
#
# VERSION 0.1
# DOCKER-VERSION 0.2
from ubuntu:14.04
# make sure the package repository is up to date
#run echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
run apt-get update
# Install vnc, xvfb in order to create a 'fake' display and firefox
run apt-get install -y x11vnc xvfb firefox
run mkdir /.vnc
# Setup a password
run x11vnc -storepasswd a1234 ~/.vnc/passwd
# Autostart firefox (might not be the best way to do it, but it does the trick)
run bash -c 'echo "firefox" >> /.bashrc'
docker build -t kjunichi/firefox-vnc .
VNCサーバーの起動
ansi-vncは入力は出来ないようなので、VNCサーバー側で複数のセッションを共有出来るようにsharedオプション付きで起動します。
docker run -p 5900:5900 kjunichi/firefox-vnc x11vnc -forever -usepw -create -shared
VNCクライアントでの接続
OSXであれば、Finderからコマンド+Kで表示されたダイアログに
vnc://192.168.59.103:5900
といった様に、boot2docker ipで表示されたIPアドレスとポート番号5900を指定します。
ansi-vncのビルド
OSXでHomebrew環境の場合、以下の様にPKG_CONFIG_PATHの追加が必要でした。
export PKG_CONFIG_PATH=/opt/X11/lib/pkgconfig
npm install -g ansi-vnc
ansi-vncの接続
OSXの以外は--hostにはlocalhostでOKのはず。
ansi-vnc --host $(boot2docker ip 2>/dev/null) --port 5900 --password a1234
関連記事
ansi-vncを最近話題のGoで書かれたttygifで動画にしたサンプルを以下で見ることが出来ます。