GCEにUbuntuを入れ、xrdpとgnome3(gnome shell)でリモートデスクトップ環境を構築する

# はじめに

間に合わせで購入した中古ノートPCが、突然フリーズしてHDDが吹っ飛んでしまった（実は、2017年、年始の話）。
SSDのご時世、HDDだったのも悪いのですが、えぇい、ならばCloudじゃー。

ということで、勢いで、GCE上にデスクトップ環境を作ってしまった時の作業メモです。

当時はUbuntu 16.04 LTSで構築したのですが、最近、Ubuntu 17.04でも試したので、それも記載しておきます。

なぜgnomeなんて重たいものを？とツッコまれそうですが、使い物になるか試してみたかったんです。

# 構成

```

Client       Server(GCE)
+----+      +++----------+
|    |<---->|||xrdp      |
+----+  RDP +++----------+
            ||VNC Server |
            ++-----------+
            |X Server    |
            +------------+
```
RDPのポートなら、ファイアウォールルールの設定がデフォルトでされているのもうれしいです。
ちなみに、Ubuntu 17.04では、xrdpのバージョンが新しく、VNC Serverを入れる必要がありません。


# Ubuntuのインストール

ふつーにGCEのインスタンスを作成してください。16.04 LTSでも17.04でもお好きな方を。

# タイムゾーンの設定

デスクトップとして使うので、タイムゾーンの設定をしましょ。

```shell-session
sudo dpkg-reconfigure tzdata
sudo apt-get update
```

タイムゾーンを変えたら、一旦apt-get updateしといた方がいいみたい。apt-get installする時に、先にupdateしろ！と怒られました。

# gnome-shellを入れる

パッケージの指定は適当でよいです。依存関係は、aptが解決してくれるので。
たぶん、gnome-shellだけでも大丈夫だと思います。

大量のパッケージのインストールが始まるので、コーヒーでも飲んで静かに待ちましょう。
ここでX関連もインストールされます。

最初、aptitudeを入れて、aptitudeでGnome Desktop Environmentのインストールをしました。
そしたら、sshdも更新されたらしく、Google Cloud Consoleのsshでログインが出来なくなったので、手動で入れてます。

```shell-session
sudo apt-get install gnome-core gnome-shell gnome-software
```

# tigervncserverを入れる（16.04 LTSの場合のみ）

[Debian 8のGNOME3デスクトップにVNC/XRDPでリモート接続する](https://www.hiroom2.com/2016/05/24/debian-8%E3%81%AEgnome3%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E3%81%ABvnc-xrdp%E3%81%A7%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E6%8E%A5%E7%B6%9A%E3%81%99%E3%82%8B/
https://github.com/TigerVNC/tigervnc/releases)
こちらのサイトで述べられていますが、tigervncserverでないと、うまく接続できません。

Debianの場合、このサイトに記載されている作業をしなければいけませんが、Ubuntuの場合、tigervncserverのサイトでパッケージが用意されています。それをインストールするのがよいです。

[TigerVNCのリリースページ](https://github.com/TigerVNC/tigervnc/releases)

リリースページから、ダウンロードのページまでのリンクがわかりづらいですが、最終的に以下のページにバイナリが置いてあります。
[https://bintray.comのダウンロードページ](https://bintray.com/tigervnc/stable/tigervnc/1.8.0#files)
こちらから、16.04 LTS用のパッケージをダウンロードします。

そしたら、aptでインストールします。

```shell-session
sudo apt install ./tigervncserver_1.7.0-1ubuntu1_amd64.deb
```

私が入れたバージョンは1.7.0でしたが、1.8.0が出てますね。

# xrdpを入れる

やっと、xrdpを入れる準備が整いました。

```shell-session
sudo apt-get install xrdp
```

# ログイン用の一般ユーザを作成

Google Cloud ConsoleのsshでログインするGoogleのアカウントとは分けた方がよさそうです。
（Googleのアカウントだとsudo時にパスワードをきいてこなく、rootに近い扱いになってますし）

こちらの一般ユーザは、パスワードを設定します。

```shell-session
sudo adduser foo
```

一般ユーザでもさすがにsudoができないと不憫なので、sudoができるようにします。

```shell-session
sudo gpasswd -a foo sudo
```

これでsudoできるようになりますが、sudo時にパスワードはきかれます。

# リモートでのログインする許可をする（17.04の場合のみ）

16.04 LTSでは不要でしたが、17.04では、設定を変えないとリモートからログインできませんでした。

[XRDP – HowTo install on Ubuntu Gnome 17.04 – easy way](http://c-nergy.be/blog/?p=10887)
こちらに解決方法が書いてあります。
/etc/X11/Xwrapper.configのallowed_userを変更します。変更後は、マシンを再起動したほうがよいでしょう。

これで、リモートからログインできるようになります。

![remote-desktop-in-gce.png](https://qiita-image-store.s3.amazonaws.com/0/141420/5e57dc71-a4e5-8385-8f25-d1d4f8adfe3d.png)

# 日本語環境を入れる

日本語の環境を入れます。

```shell-session
sudo apt-get install language-pack-gnome-ja
```

language-pack-gnome-jaを入れると、check-language-supportというコマンドが使用可能になります。
このコマンドは、該当する言語サポートで足りないパッケージを一覧で出力します。
なので、

```shell-session
sudo apt-get install $(check-language-support)
```

とすれば、あと必要なパッケージを入れることができます。
（もしかしたら、IMEは別途入れる必要あるかもしれません。私はmozcを入れました）

後は、設定のregion & languageから言語の選択で日本語が選択肢として表示されるので、それを選択してください。

# 何かcolor managed device作成の認証が毎回出る

[XRDP – HowTo install on Ubuntu Gnome 17.04 – easy way](http://c-nergy.be/blog/?p=10887)
先ほど引用したサイトのLast Tweakに記載されています。

私の場合、16.04 LTS、17.04のどちらでも出ました。
/etc/polkit-1/localauthority.conf.d/ディレクトリに、02-allow-colord.confを作成し、設定を記述すればよいです。

# 終わりに

勢いでやってしまいましたが、以下の設定で、意外と使えるレベルになっています。

- 背景は画像でなくする
- gnome-shellのTweakでアニメーションをしないよう変更する
- それでもだめなら、画面の解像度・色数を下げる


いったい、誰得な記事なんだ、これは。