Amazon Linux 2 にデスクトップ環境(MATE)を入れてみた

アイキャッチ AWS EC2

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは、望月です。

最近 Amazon Linux 2 でなにかをやっていることが多いですが、今回もAmazon Linux 2にデスクトップ環境を用意する機会がありましたので、ご紹介したいと思います。

前提

セキュリティグループでEC2宛て 5901 ポートへのアクセスを許可しましょう。 その際はもちろんアクセス元IPアドレスの制限を行うようにしてください。

MATE(デスクトップ環境)のインストール

Amazon Linux 2 の Extras Library で提供されているデスクトップ環境 MATE をインストールします。

$ sudo amazon-linux-extras install mate-desktop1.x

VNCサーバの構築

TigerVNCのインストール

VNCサーバには、yum でパッケージ提供されている TigerVNC を利用します。

$ sudo yum install tigervnc-server

TigerVNCのサービス化

TigerVNCのユニットファイルを配置し、ディスプレイ番号は 1 にします。

$ sudo cp /usr/lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

VNC接続用のパスワードを設定します。

$ vncpasswd

Password: <パスワードを入力>
Verify: <パスワードを入力>
Would you like to enter a view-only password (y/n)? n
A view-only password is not used

また、TigerVNCの起動ユーザ設定と、デフォルトでTigerVNCは暗号化通信に対応していますが、暗号化通信のみ接続を許可する形に設定を変更します。

  • 起動ユーザの設定を ec2-user に設定
    • <USER>ec2-user に変更
  • TigerVNCの起動コマンドに -SecurityTypes=TLSVnc 追加
    • 暗号化通信のみ、接続を許可する
$ sudo vi /etc/systemd/system/vncserver@:1.service

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking

# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"
PIDFile=/home/<USER>/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target

↓↓↓

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking

# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/sbin/runuser -l ec2-user -c "/usr/bin/vncserver %i -SecurityTypes=TLSVnc"
PIDFile=/home/ec2-user/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target

起動時にVNCサーバが立ち上がるようにサービスの登録を行います。

$ sudo systemctl enable vncserver@:1.service

ec2-user の環境設定

xstartupファイルを作成し MATE が起動するように設定をします。

$ vi ~/.vnc/xstartup

#! /bin/sh
exec mate-session &

xstartupファイル後、実行権限を追加します。

$ chmod +x ~/.vnc/xstartup

TigerVNCの起動

TigerVNCの起動をします。 ステータスを確認し、問題なく立ち上がっていることを確認しましょう。

$ sudo systemctl start vncserver@:1.service
$ sudo systemctl status vncserver@:1.service

VNC接続確認

TigerVNCのクライアントソフトをインストールし、接続してみます。

  • TigerVNCのクライアントソフトを起動します。
    • VNC server: <publicIP:5901>

  • VNCパスワードを入力し、ログインします。

日本語化

せっかくデスクトップ環境を入れたので、ぜひ日本語化したいですね。やっていきましょう。

日本語化のときはいつも yum groupinstall "Japanese Support" を実行してたのですが、Amazon Linux 2 にはなく、CentOS 7 にもなくなったらしく、軽くショックを受けました。

日本語入力を可能とするIME ibus と、日本語フォント google-noto-sans-japanese-fonts をインストールします。 Google Noto Fonts がパッケージ提供されているの初めて知りました。便利。

$ sudo yum install ibus-kkc
$ sudo yum install google-noto-sans-japanese-fonts

ibus の設定を bashrc に記載します。

$ vi ~/.bashrc

===末尾に以下を追加===
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
ibus-daemon -drx

ロケール設定を ja_JP.UTF-8 にします。

$ sudo localectl set-locale LANG=ja_JP.UTF-8

VNCサーバを再起動します。

$ sudo systemctl restart vncserver@:1.service
$ sudo systemctl status vncserver@:1.service

VNC接続確認 in 日本語

VNCで接続し、日本語化されていることを確認します。

最後に

デスクトップ環境を入れてみたもののデスクトップ環境に対応したアプリなどをなにもインストールしていないため、できることは限られています。

Amazon Linux 2 でデスクトップ環境を利用したいならWorkSpacesを利用するという選択肢もあり、WorkSpacesであれば最初からデスクトップ環境に対応したアプリもインストール済みとなるため、要件に応じ、WorkSpacesをご検討いただければと思います。