SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|12|

2014-03-29(Sat) さくらのVPSを借りて、今、仮想の、デスクトップ!

  ここのところ、艦こればかりやっていて、強いストレスを感じている毎日である。

  どうも、オイラは「ぼぉーとゲームしてるのは性に合いませんね」というか、なんというか。のんびりしていると、むしろ「何かせねば」という強迫観念に襲われてストレスを感じる性格なのである。まぁ、別に「何か」といっても、さほどスゴいコトをやるわけでも、さほどスゴいモノを作るわけでもないのだけれどもさ。

  しかし、前から作ってみたかった自分用のアプリがあって、それがある程度のカタチになってきたこともあり、思い切って、それ用に、もひとつ「さくらのVPS」を借りてみることにしたのである。

  で、イザ借りてみると、ちょっと前から、サーバの設置場所を選べるようになったとは聞いていたが、任意のISOイメージによるOSインストールもできるようになっていた。こりゃ、死角なしだな。今回は、ちょっと高いが、2Gプランを借りてみよう。ほぼデータを失う可能性がないストレージが200GB。高いといっても月に1500円弱だし、携帯電話の月額に比べりゃ安いもんだ。

  前から借りていた1GプランのVPSは、東京にあるのだと思っていたが、どうも大阪だったらしい。今回は石狩をチョイス。レイテンシは高くなるだろうが、データの保全性を考えると場所は離した方がいい。

  インストールするOSは、せっかくなので最新のFedora20。どうも、ちょっとMINT15を味見したりしてるうちに、かなり様相が変わってしまっているらしい。もうすぐRHEL7が仕事の主戦場になることだし、多少は感覚を養っておかねば。

  そもそも、Fedoraから離れてみようかと思ってしまった理由のひとつに、GNOME3のイマイチさがあったわけだが、いつの間にかFedoraでもMATEが使えるようになっているのは本当に助かる。ほとんどブラウザと端末作業ばかりのオイラだが、GNOME3はウィンドウを切り替えるだけでも苦痛だったんだよなぁ。

  さくらのサイトから、ISOイメージインストールを呼び出し、sftpでFedora-20-x86_64-netinst.isoをアップロードする。systemdやfirewalldにとまどいつつ、手探りで「よく通る場所をけもの道に」しつつ、openvpnを導入……と、ふと、ここでなにげに「xrdpを導入して、リモートデスクトップ環境を構築」してみるのも楽しいのではないか、と思いついてしまった。

  普段使いのマシンがAtomなこともあり、画面の反応はイマイチながらも、処理はサクサク、てなことにならんものか、という期待である。

  ところが、軽い気持ちでrdpを導入したが……接続はされるもののデスクトップ画面が現れない……なんじゃこりゃ。んじゃ、元祖のvncならどうか……こっちもダメ。うーむ、オイラ、GUI関係の仕組みについては弱いんだよな。結局、あちらこちらの情報を元に、問題の根っこが「デスクトップ環境にMATEを使っていること」であることを突き止めた。

  デフォルトとはいえ、どうせみんなGNOME3なんか使わずにMATEの一択なんだろ、と思っていたのだが、こんなマイナバグが平気で残っているところをみると、そうでもないのか……オイラはマイノリティなLinux使いの中でも、さらにマイノリティなMATE使いなのか……というわけで、以下が、正しいvncの設定方法である。

・vncサーバ導入
# yum install tigervnc-server
・起動スクリプトを配置すべき場所だけ確認
# systemctl enable vncserver@:1.service
# rm /etc/systemd/system/multi-user.target.wants/vncserver@:1.service
・起動スクリプトを配置
# cp /usr/lib/systemd/system/vncserver@.service /etc/systemd/system/multi-user.target.wants/vncserver@:1.service
・利用ユーザを設定
# vi /etc/systemd/system/multi-user.target.wants/vncserver@\:1.service 
# diff /usr/lib/systemd/system/vncserver@.service /etc/systemd/system/multi-user.target.wants/vncserver@:1.service
40,41c40,41
< ExecStart=/sbin/runuser -l  -c "/usr/bin/vncserver %i"
< PIDFile=/home//.vnc/%H%i.pid
---
> ExecStart=/sbin/runuser -l user -c "/usr/bin/vncserver %i"
> PIDFile=/home/user/.vnc/%H%i.pid
・利用ユーザにスイッチ
# su - uesr
・vncパスワードを設定
$ vncpasswd
・デスクトップ環境の起動設定(MATEの場合はこれがキモ!)
$ vi .Xclients
$ cat .Xclients 
#!/bin/bash
exec mate-session
$ chmod 755 .Xclients
$ exit
# systemctl daemon-reload
・vncサーバ起動
# systemctl start vncserver@:1.service

  あとは手元のマシンからvncクライアントで接続だ。

$ vncviewer 10.8.0.x:1

  ちなみに、上記の.Xclientsの設定が「vncでMATEのデスクトップ画面が現れない問題」への対処なのだが、これは、以下のような起動シーケンス(※)に対する処置である。

・vncサービス起動
・/home/user/.vnc/xstartupの実行……の中で、
・/etc/X11/xinit/xinitrcがあれば実行……の中で、
・/home/user/.Xclientsがあれば実行……が、ない(※)ので、
・/etc/X11/xinit/Xclientsがあれば実行……の中で、
・GNOMEかKDEならデスクトップセッション起動
・おぃ……ちょっとMATE?

  一方で、xrdpの設定方法は以下だけ。

・rdpサーバ導入
# yum install xrdp
・rdpサーバ起動
# systemctl start xrdp

  xrdpの場合は、クライアントからのxrdp接続のあと、/etc/xrdp/startwm.shの実行の中で、/etc/X11/xinit/xinitrcが実行され、上記と同じルートを通るので、vnc設定の中で行った.Xclientsの設定により、こちらの問題も同時に解決されるのであった。

  あとは手元のマシンからrdpクライアントで接続。

$ rdesktop 10.8.0.x

  今回の試行を行う前、rdpはプロトコル上、サウンドも扱えることを知っていたので、ちょっと期待していたのだが、実はrdpは、ほぼvncのラッパーに過ぎず(実際、内部でvncを起動して通信している)、そのような機能はないことに気づいた。

  うーむ、それではリモートデスクトップ環境として、いかにも片手落ちではないか……と、ここで思いついてしまった。確か、pulseaudioにはリモートでサウンドデバイスを扱える機能があったような……というわけで、以下が、pulseaudioの設定方法である。

・デスクトップマシン(音声受信→スピーカー)側の設定
・一般ユーザでログインしてから
$ cd .config/pulse
$ cp /etc/pulse/default.pa .
$ vi default.pa 
・外部からのtcp接続を受け入れる設定
$ diff /etc/pulse/default.pa default.pa 
85c85
< #load-module module-native-protocol-tcp
---
> load-module module-native-protocol-tcp auth-anonymous=1
・デスクトップからログアウト、再度ログインすると、ポート4713が開かれる
$ netstat -anp | grep pulse
tcp        0      0 0.0.0.0:4713            0.0.0.0:*               LISTEN      xxxx/pulseaudio 
tcp6       0      0 :::4713                 :::*                    LISTEN      xxxx/pulseaudio 
 
・リモート(アプリ→音声送信)側の設定
・一般ユーザでログインしてから
$ cd .config/pulse/
$ cp /etc/pulse/client.conf .
$ vi client.conf 
・デスクトップマシンへtcp接続するための設定
$ diff /etc/pulse/client.conf client.conf 
24c24
< ; default-server =
---
> default-server = 192.168.0.x
・vncサーバを立ち上げると、ポート4713へ接続される
# systemctl start vncserver@:1.service
# netstat -anp | grep 4713
tcp        0      0 10.8.0.x:xxxxx          192.168.0.x:4713        ESTABLISHED xxxxx/mate-volume-c 
tcp        0      0 10.8.0.x:xxxxx          192.168.0.x:4713        ESTABLISHED xxxxx/mate-settings

  あとは手元のマシンからvncクライアントで接続。

$ vncviewer 10.8.0.x:1

  vncクライアント上からサウンドを再生すれば、手元のマシンから音が出る。もちろん、vncクライアント側のボリュームアイコンによる音量操作も可能だ。

# yum install sox
$ play /usr/share/sounds/alsa/Front_Center.wav

  一方で、xrdpサーバの場合は、即座にポート4713に接続されたりはしない。

# systemctl start xrdp.service
・手元のマシンからrdpクライアントで接続してから、ポート4713へ接続される
$ rdesktop 10.8.0.x
# netstat -anp | grep 4713
tcp        0      0 10.8.0.x:xxxxx          192.168.0.x:4713        ESTABLISHED xxxxx/mate-volume-c 
tcp        0      0 10.8.0.x:xxxxx          192.168.0.x:4713        ESTABLISHED xxxxx/mate-settings

  あとは、flashプラグインを導入して……

# rpm -ivh flash-plugin-11.2.202.346-release.x86_64.rpm 

  画像の説明

  ……って、結局、艦これやるんかーいっ!

  ちなみに、サウンドも出るようになったものの、画面も音も飛びまくりで、快適なプレイ環境にはほど遠いということだけは言っておく……あ、もしかしたら、まだVPSが試用中で通信速度が制限されているから、かも?

  4/5追記。やはり、通信速度が制限されているからだった。音飛びは完全になくなり、画面はコマ送りではあるが、CPUパワーが高いこともあり、プレイ自体はサクサク。イマドキのPCで遊べば、こんなにスムーズなんだ。こりゃ、マジで実用的かも。