クラウドのUbuntuに軽量GUI環境（Chrome・日本語入力表示・リモートデスクトップ）をセットアップする

### 本記事について
ここでは、クラウド上のLinux(Ubuntu)において、スペックの低いマシンでも、最低限のGUI作業（Chrome＆日本語入力表示＆リモートデスクトップ）ができるようにするための、GUI環境のセットアップについてまとめました。

### 背景
- 最近はWebサービスを利用することが増え、Chromeと日本語入力ができれば、Linuxでも、WindowsやMacに近い感覚で作業ができるようになってきました。
- ローカルで作業してサーバーにアップする場合でも、ローカルの時点からLinuxで作業できれば、サーバーに上げるとうまく動かなくなったというトラブルも減ります。

そこで、クラウドや仮想端末で、手軽にLinuxで作業・検証ができるよう、最低限のGUI作業ができる軽量Linux環境を構築する方法をまとめました。

# OSインストール
## インストール
- 最新のLTS版Ubuntuをインストールする

## アップデートする
```sh
sudo apt-get update
sudo apt-get upgrade
```

## タイムゾーン設定
```sh
sudo timedatectl set-timezone Asia/Tokyo
```

## 日本語表示・入力設定
```sh
sudo apt-get -y install language-pack-ja-base language-pack-ja ibus-mozc fcitx fcitx-mozc
sudo localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"
source /etc/default/locale
```

# GUIインストール
## パスワードを設定する

```sh
sudo passwd <ログインユーザー名>
```

## パスワードでSSHログインできるようにする
  - 「/etc/ssh/sshd_config」ファイルを開く
  - 「PasswordAuthentication」を「yes」にする
  - ファイルを保存する
  - sshサービスを再起動する

```sh
sudo nano /etc/ssh/sshd_config
sudo service ssh restart
```

## 「ubuntu-desktop」をインストール

```sh
sudo apt-get install ubuntu-desktop
```

## 「mate」をインストール

```sh
sudo apt-get install mate-*
sudo apt-get install ubuntu-mate-*
echo mate-session > ~/.xsession
```

## 「xrdp」をインストール

```sh
sudo apt-get install xrdp
sudo update-rc.d -f xrdp defaults
```

## 「xrdp」の日本語キーボード設定＆サービス再起動

```sh
cd /etc/xrdp
sudo wget http://www.mail-archive.com/xrdp-devel@lists.sourceforge.net/msg00263/km-e0010411.ini
sudo mv km-e0010411.ini km-0411.ini
sudo chmod 644 km-0411.ini
sudo ln -s km-0411.ini km-e0010411.ini
sudo ln -s km-0411.ini km-e0200411.ini
sudo ln -s km-0411.ini km-e0210411.ini
sudo service xrdp restart
```

# リモートデスクトップ設定
ここまでで、Ubuntuにリモートデスクトップでアクセスきるようになっています。
次にWindowsからリモートデスクトップでUbuntuにアクセスします。

- 「リモートデスクトップ」を起動
- [オプションの表示]
  - 「コンピュータ」
     - UbuntuのグローバルIPアドレスをセット
  - 「ユーザー名」
     - Ubuntuのユーザー名をセット
  - 他タブを適当にセット
  - 「名前をつけて保存」でショートカットを作っておくと、後で入力の手間が省けて便利です

# GUI設定
リモートデスクトップでアクセスすると、UbuntuのGUI環境にログインできます。
ログイン後にGUIのカスタマイズを行います。

## 日本語入力設定
1. [システム]-[設定]-[ルック＆フィール]-[言語サポート]で「fcitx」を選択
1. [システム]-[設定]-[Fcitx設定]
2. 「Fcitx」の設定「Global config」-「入力メソッドのオンオフ」で好きな起動キーをアサイン（うまくいかないキーもあります）
3. 再ログイン

## Chromeをインストール
- [アプリケーション]-[インターネット]-[Firefoxウェブ・ブラウザ]
- 「chrome」で検索して、検索結果からChromeファイル（拡張子deb）をダウンロード
- Chromeをインストール

```sh
sudo dpkg -i <ダウンロードしたChromeファイル>
google-chrome
```
- [アプリケーション]-[インターネット]-[Google Chrome]が追加されます

# 最後に
以上で、日本語環境とChromeがインストールされ、最低限のGUIでの作業が可能になったかと思います。

- [アプリケーション]にターミナルやファイルマネージャ的なものが入っていますので、概ねWindowsでやるような作業をGUIで行えます。
- リモートデスクトップの設定変更や、背景を無しにしたり等、カスタマイズによりある程度レスポンスの向上がはかれるので、設定を色々試してみるとよいかと思います。
- ウィンドウマネージャ・日本語入力システムは好みもあるので、慣れてきましたら色々試してみるとよいかと思います。
- Visual Studio Codeはそのままではリモートデスクトップでは起動できず、対処方法について[別記事](https://qiita.com/kwbt/items/b7c65a452004bfd8857a)にまとめました。
- Windowsとのファイルのやり取りはDropboxを利用しています。
  - WindowsとLinuxにDropboxをインストールし、「Windows Subusystem for Linux」からDropboxのフォルダをシンボリックリンク等でアクセスできるようにすると、同じソースをWindowsとLinuxでシームレスに作業できるのでお勧めです。
  - 同期ファイルが多いようでしたら、別途Linux用にDropboxのアカウントを作成し、Linuxと同期するフォルダを共有フォルダのみにするのもよいかと思います。

# 参考ページ
- https://forums.ubuntulinux.jp/viewtopic.php?id=13399
- https://aws.amazon.com/jp/premiumsupport/knowledge-center/connect-to-linux-desktop-from-windows/

**元記事**
- [クラウドのUbuntuに軽量GUI環境（Chrome・日本語入力表示・リモートデスクトップ）をセットアップする](https://www.kwbtblog.com/entry/2018/12/23/035859)