RemoteBox
RemoteBox は Perl で書かれたオープンソースの VirtualBox リモートクライアントです。サーバー上の VirtualBox 環境をリモートで管理することができ、ローカルで動作しているのと同じようにゲストを操作できます。VirtualBox はサーバーマシンにインストールし、RemoteBox はクライアントマシンで動作します。RemoteBox は VirtualBox 付属の GUI と操作感が似ている GTK のグラフィカルインターフェイスを備えています。VMWare ESX などの他の仮想化ソフトウェアに例えて言えば、RemoteBox は貧乏人向けの VI クライアントです。
インストール
RemoteBox は remoteboxAUR パッケージでクライアントにインストールできます。必要な GTK2 や Perl パッケージなどは依存パッケージとしてインストールされます。ただし、freerdp や rdesktop などの RDP クライアントは手動でインストールする必要があります。執筆時点では freerdp-gitAUR 2.0.0.beta1 で動作することを確認済みです。
VirtualBox ウェブサービス
RemoteBox を使用するにはサーバーに VirtualBox と virtualbox-ext-oracleAUR パッケージをインストールする必要があります。GUI を使用しないヘッドレスサーバーの場合、virtualbox-headlessAUR をインストールすることを推奨します。また、サーバーに virtualbox-guest-iso もインストールすることを推奨します。
VirtualBox が稼働しているサーバーで、ホームディレクトリとログインシェルを持つ新しいユーザーを作成してください。例:
# useradd -m -g vboxusers -s /bin/bash vbox
上記のコマンドで 'vboxusers' をプライマリグループとする新しいユーザー 'vbox' とホームディレクトリ・ログインシェルが作成されます。ホームディレクトリは VirtualBox や仮想マシンの設定を保存するのに必要です。ログインシェルはないと RemoteBox がログインできません。ユーザーを作成したらパスワードを設定してください:
# passwd vbox
次に /usr/lib/systemd/system/vboxweb.service
を /usr/lib/systemd/system/vboxweb-mod.service
にコピーして vboxweb-mod.service
ファイルを作成します。
以下のように /usr/lib/systemd/system/vboxweb-mod.service
を編集してください:
[Unit] Description=VirtualBox Web Service After=network.target [Service] Type=forking PIDFile=/run/vboxweb/vboxweb.pid ExecStart=/usr/bin/vboxwebsrv --pidfile /run/vboxweb/vboxweb.pid --host <your server ip> --background User=vbox Group=vboxusers [Install] WantedBy=multi-user.target
<your server ip> はあなたのサーバーの IP アドレスに置き換えてください。
vboxweb-mod.service
の tmpfile ルールを作成:
# echo "d /run/vboxweb 0755 vbox vboxusers" > /etc/tmpfiles.d/vboxweb-mod.conf
vboxweb-mod.service
を最初に起動するときのために /run/vboxweb
ディレクトリを手動で作成:
# mkdir /run/vboxweb # chown vbox:vboxusers /run/vboxweb # chmod 755 /run/vboxweb
上記のユニットファイルの ExecStart 行を編集して --logfile <logfile location>
ディレクティブを記述することでログ出力を有効にできます。詳細なログを出力させるには --verbose
ディレクティブも指定してください。設定したログファイルには vbox ユーザーから書き込みを行えることを確認してください。
設定できたら vboxweb-mod.service
を起動・有効化してください。
RemoteBox から vboxweb サービスに接続
RemoteBox を開いて Connect
ボタンをクリックしてください。以下の接続情報を指定:
URL: http:<your server ip>:18083 Username: vbox Password: <password recorded earlier>
ログイン後 File -> Connection Profiles
から新しい接続プロファイルを作成することで接続を楽にすることができます。
トラブルシューティング
サーバーに接続する際に問題が発生する場合、まずサービスが動作しているかどうか確認してください。サーバーのコンソールで以下のコマンドを実行:
# systemctl status vboxweb-mod.service
動作していないと出力される場合、journalctl
でログを確認してください。logfile
を設定していた場合、vboxweb サービスのログファイルを確認してください。
たとえ詳細にログ出力するように設定していても、vboxweb は原因がそれと分かるような情報を与えてくれないときがあります。そのような場合、vbox
になってからコマンドラインで vboxwebsrv
を実行してください。
# su vbox
vboxwebsrv を手動で起動:
$ /usr/bin/vboxwebsrv --pidfile /run/vboxweb/vboxweb.pid --host <your server ip>
--background
と --logfile
ディレクティブは指定しません。サービスが起動する場合、問題はログファイルのパーミッションかもしれません。起動したままにしてクライアントから RemoteBox で接続できるか確認してください。
接続できない場合、Ctrl-c
でサービスを停止して --background
ディレクティブを付けて起動してみてください。そして netstat などを使って vboxwebsrv がポート 18083 を listen しているかどうか確認してください。別のポートが使われている場合、そのポートを使って RemoteBox で接続してください。
別の原因としてはサーバーやクライアントのファイアウォールが考えられます。
以下のエラーメッセージが表示される場合:
vboxwebsrv: error: failed to initialize COM! hrc=NS_ERROR_FAILURE
ホームディレクトリに 'vbox' ユーザーから書き込みできるか確認してください。また、~/.config/VirtualBox
ファイルが作成されているかも確認してください。