さくらのVPSにリモートデスクトップで接続しローカルで音声を出力する方法

「さくらのVPS」にUbuntu 15.10をインストールしました。Ubuntuですのでデスクトップ環境もぜひ使いたいですし、GUIで操作するほうが利便性が良いことも多々あります。

そこで、インストールしたUbuntu 15.10に手元のWindowsマシンからリモートデスクトップで接続してみました。さらに、音声も転送されるようにしてみました。

1. 参考にするWebページ

以下のページが参考になりました。ただし、エントリが書かれたのはやや前ですので、バージョンの違いなどからそのままでは正しく動作しません。

xrdp でオーディオリダイレクト可能なデスクトップ環境を構築する (Xbuntu 14.04.1)

2. インストールの手順

インストールは2段階に分けられます。はじめにリモートデスクトップを行うための xrdp のインストール、次にリモートデスクトップで音声が転送されるようにするための pulseaudio のインストールです。

3. xrdp のインストール

apt-getでもインストールできますが、バージョンが古く不適切です。したがって手動でインストールをします。手動でインストールする際もバージョンの違いにより正しくインストールできないことがあり、いろいろ試した結果、以下のバージョンをインストールすることでOKでした。

# git clone --depth 1 -b v3.03 https://github.com/scarygliders/X11RDP-o-Matic.git
# sudo ./X11rdp-o-matic.sh --justdoit --withsound --withjpeg --branch master

ビルドには1時間以上かかりました(さくらのVPS 1G)。

正しくインストールされたかの確認をするためには次のようにします。xrdpとx11rdpが両方ともバージョン0.9.0-1で入っていることが確認できればOKです。

# dpkg -l xrdp x11rdp

もし A dependency job for xrdp.service failed. see journalctl -xe for details というエラーが出た場合はファイルを削除する必要があります。詳しくはこちらに書いてあります。消すファイルは以下の2つです。ファイルを消したら xrdp を起動(再起動)しましょう。

/lib/systemd/system/xrdp.service
/lib/systemd/system/xrdp-sesman.service

# service xrdp restart
# service x11rdp restart

3. pulseaudio のインストール

前章でインストールに用いた xrdp のソースはまだそのままにしておきます。続いて pulseaudio のインストールです。

デフォルトで pulseaudio は入っていると思いますので、アンインストールします。丁寧にアンインストールしないと既存バージョンが残ってしまうので、アンインストールしたら、再度確認をしましょう(あとでまた確認をします)。

# pulseaudio --version
pulseaudio 6.0
# apt-get purge pulseaudio*
# apt-get purge pulseaudio:i386

pulseaudio をソースからビルドします。ソースはここにあるのですが、いくつかのバージョンで試してみたところ、4.0 を超えるとビルドエラーが出ますので、ここでは 4.0 を利用します。

# wget http://freedesktop.org/software/pulseaudio/releases/pulseaudio-4.0.tar.gz
# tar zxvf pulseaudio-4.0.tar.gz
# cd pulseaudio-4.0/

必要なライブラリを入れます。

apt-get install libjson-c-dev
apt-get install libsndfile1-dev
apt-get install libcap-dev

ビルドします。Warningが出てもErrorが出ていなければ大丈夫です。数分でビルドできます。インストールが終わったら ldconfig しておきます。

# ./bootstrap.sh
# make install
# ldconfig

リモートデスクトップ用の pulseaudio の設定をしましょう。前章のソースファイルの場所、/X11RDP-o-Matic/xrdp/sesman/chansrv/pulse にある Makefile を編集します。PULSE_DIR の値を pulseaudio のソースフォルダの値に変更します(以下は例です)。

PULSE_DIR = /home/(ユーザー名)/pulseaudio-4.0

ビルドしましょう。module-xrdp-sink.so と module-xrdp-source.so が生成されます(ここでビルドエラーが出る場合はバージョンの違いです)。生成されたモジュールを /usr/local/lib/pulse-4.0/modules/ にコピーします。最後に pulseaudio のバージョンが 4.0 であるかを確認しておきます。

# make
# cp module-xrdp-sink.so module-xrdp-source.so /usr/local/lib/pulse-4.0/modules/
# pulseaudio --version
pulseaudio 4.0-rebootstrapped

ここまでで全ての手順が終わりました。

4. Ubuntuの再起動

Ubuntuを再起動しましょう。

5. リモートデスクトップで接続して音声が転送されるか確認

実際にリモートデスクトップで接続して音声が転送されているかどうか確認しましょう。目視で確認するために、pavucontrol を入れましょう。デバイスが xrdp sink になっていれば成功です。

# apt-get install pavucontrol

radiko.jpあたりを開いて適当に再生されて、音声が転送されていれば以下のようになるはずです。

f:id:gregminster:20151220122202p:plain

6. 実用上の課題

これで音声付きでさくらのVPS(Ubuntu 15.10)に対してリモートデスクトップができるようになりました。ただ、速度については、環境に依存するとは思いますが、現状では動作が重く、音声が飛び飛びで、ややツラい感じがします。この点はVPSの性能を上げるか、さくら側の設定が変更されるかで変わる可能性はあるかとは思います。

ともあれ、これでスマートフォンやタブレットから音付きで「刀剣乱舞」や「艦隊これくしょん」がプレイできるようになりました。スマートフォン版が出るまでの「つなぎ」の感は否めませんが、いつでもどこでも音付きとうらぶ、艦これが実現しました(これがやりたかった)。