RemoteBox

提供: ArchWiki
移動先: 案内検索

RemoteBox は Perl で書かれたオープンソースの VirtualBox リモートクライアントです。サーバー上の VirtualBox 環境をリモートで管理することができ、ローカルで動作しているのと同じようにゲストを操作できます。VirtualBox はサーバーマシンにインストールし、RemoteBox はクライアントマシンで動作します。RemoteBox は VirtualBox 付属の GUI と操作感が似ている GTK のグラフィカルインターフェイスを備えています。VMWare ESX などの他の仮想化ソフトウェアに例えて言えば、RemoteBox は貧乏人向けの VI クライアントです。

インストール

RemoteBox は remoteboxAUR パッケージでクライアントにインストールできます。必要な GTK2 や Perl パッケージなどは依存パッケージとしてインストールされます。ただし、freerdprdesktop などの RDP クライアントは手動でインストールする必要があります。執筆時点では freerdp-gitAUR 2.0.0.beta1 で動作することを確認済みです。

VirtualBox ウェブサービス

RemoteBox を使用するにはサーバーに VirtualBoxvirtualbox-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 ファイルが作成されているかも確認してください。

参照