Ubuntu Weekly Recipe

第595回 リモートデスクトップのためのSPICEクライアントあれこれ

この記事を読むのに必要な時間:およそ 5.5 分

シンプルなGTKベースのクライアント「spice-client-gtk」

もっともシンプルなクライアントが,SPICEプロトコルの公式が作成しており,SPICEプロトコルのテストアプリケーションでもあるspice-client-gtkです。次のようにインストールできます。

$ sudo apt install spice-client-gtk

デスクトップファイルなどは作成しないので,起動するには端末から次のように実行します。

$ spicy --uri='spice://vmserver.local:5900'

--urlにSPICEアドレスを指定します。もしくは引数なしで起動した上で,メニューの「File」「Connect」からアドレスを指定する方法もあります。

図1 無事にリモートの画面が表示された

画像

マウスがウィンドウから抜けられなくなったり,間違ってフルスクリーンモードにした場合は,右Shift-F12で元に戻ります。ESCキーでは戻らないので注意してください。

ちなみに同梱のspicy-screenshotを使うと,現在表示している内容のスクリーンショットを取得できます。ただし,メインウィンドウは切断されますので,テストや記事の執筆用途だと思いましょう。

公式推奨の「virt-viewer」

SPICEの公式が推奨しているのが,virt-managerとセットでインストールされることの多いvirt-viewerです。virt-managerで仮想マシンを作成した場合は,基本的にvirt-viewerでゲストのディスプレイにアクセスすることになります。もちろんvirt-managerがなくても単体でvirt-viewerを利用可能です。

$ sudo apt install virt-viewer

アプリケーション一覧から「リモートビューアー」を選択するか,端末から次のコマンドを実行しましょう。

$ remote-viewer spice://vmserver.local:5900

図2 実はspice-client-gtkのほうができることは多い

画像

ちなみに第572回で紹介しているGNOME BoxesもSPICEクライアントとして利用できるようです。ローカルでlibvirtも利用する予定があるのなら,GNOME Boxesもセットでインストールすると,ローカルとリモートの両方の仮想マシンのデスクトップをBoxes経由で参照できます。Boxesでリモートデスクトップを使いたい場合,⁠新規」「URLを入力する」を選択し,URLに「spice://vmserver.local:5900」を入力し「続行」ボタンを押してください。最後に仮想環境を作成するかどうかを問い合わせられますので「作成」ボタンを押すと,リモートの仮想マシンに自動的に接続します。

Ubuntuデスクトップに最初から入っている「Remmina」

UbuntuデスクトップではリモートデスクトップクライアントとしてRemminaが最初からインストールされています。RemminaにはSPICEプラグインが存在するものの,Ubuntuにはインストールされていません。公式リポジトリにパッケージは存在するので,それをインストールしておきましょう。

$ sudo apt install remmina-plugin-spice

Remminaは端末から起動するより,アプリケーション一覧から「Remmina」を検索して起動したほうが便利です。

図3 プロトコルを「SPICE」に変更してアドレスを入力する

画像

図4 デスクトップクライアントとしてはおそらくもっとも高機能

画像

マウスとキーボードのイベントがRemminaの先の仮想マシンに奪われてしまった場合,右Ctrlキーを2回入力してください。SPICE固有の操作は,サイドバーのボタンの説明を読むとだいたいわかるかと思います。

ちなみに上記はUbuntu 19.10とYaruテーマでのスクリーンショットです。Ubuntu 18.04 LTSだともう少し野暮ったくなります。

ウェブブラウザーからアクセス可能な「spice-html5」

ちょっと変わったところとしては,ウェブ版クライアントとしてspice-html5が存在します。

websockifyを利用すると,WebSocket通信を通常のソケット通信に変換できます。つまりSPICEサーバーとのソケット通信をwebsockifyに任せることで,ウェブブラウザーからSPICEサーバーへの通信が可能になるというわけです※2⁠。

※2
数ヶ月前にSPICEサーバーが直接WebSocket通信できる機能が取り込まれました。おそらく0.15以降のバージョンではwebsockifyは必須ではなくなる見込みです。

websockifyはspice-html5パッケージの推奨パッケージとして指定されているので,標準設定だと一緒にwebsockifyもインストールされます。

$ sudo apt install spice-html5

SPICE 0.14以前において,spice-html5の使い方には2種類存在します。

  • 任意のウェブサーバーとwebosockifyを組み合わせて動かす方法
  • webosckifyをウェブサーバーとしても動かす方法

今回はよりお手軽な後者のみを説明します。まずはwebsockifyを使ってWebSocketサーバーを立ち上げましょう。

$ websockify --web /usr/share/spice-html5/ 5959 vmserver.local:5900

--webオプションを指定することで,指定したディレクトリをベースにウェブサーバーとして起動します。別途ウェブサーバーが存在するなら--webは不要ですが,ウェブサーバーから/usr/share/spice-html5にアクセスできるようにしておく必要があります。

「5959」はWebSocketサーバーのポートで,最後にターゲットサーバーとしてSPICEアドレスを指定します。

あとはウェブサーバーを立ち上げたアドレスの5959番ポートにウェブブラウザーからアクセスするだけです。

$ xdg-open http://localhost:5959/spice.html

あとは「Host」「Port」にWebSocketサーバーが動いているアドレスと,webosockifyに指定したポート番号を設定して,⁠Start」ボタンを押してください。

図5 すべてウェブブラウザーだけで完結するのが便利

画像

spice-html5の便利な点は,⁠ローカルマシンにSPICEクライアントが不要」な点です。リモートデスクトップを動かす以上,リモートアクセス可能なサーバーが存在します。つまりリモートサーバー上でQEMUだけでなく,spice-html5もセットで動かしてしまえば,クライアント側はウェブブラウザーさえあれば良いということになります。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。