今回はAWSのEC2/Ubuntu 20.04.2 LTS内にデスクトップをインストールし、noVNCを利用してブラウザからアクセスできる環境を構築してみました。設定項目がかなりあるので、本来であればAnsible化したほうがいいですが、まずは手動で試してみました!
Environment
- AWS EC2 IAM(Ubuntu 20.04.2 LTS)
- Disk 100GB
- t3a.large(t3a.mediumでもOK)
- セキュリティーグループ 22,3389,5901,6080
※間違えてAWS MarketにあるUbuntu Desktopを選択しないように!コスト高いので!
Install Desktop
- upgrade package
1 2 |
# apt update -y # apt upgrade -y |
- add user
1 2 |
# adduser adachin # gpasswd -a adachin sudo |
- install XRDP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# apt install -y ubuntu-desktop xrdp # xrdp -v xrdp 0.9.12 A Remote Desktop Protocol Server. Copyright (C) 2004-2018 Jay Sorg, Neutrino Labs, and all contributors. See https://github.com/neutrinolabs/xrdp for more information. - 無効化 # sed -e 's/^new_cursors=true/new_cursors=false/g' -i /etc/xrdp/xrdp.ini # systemctl restart xrdp # systemctl enable xrdp.service # systemctl enable xrdp-sesman.service - add xsession file # su - adachin $ cd ~ $ DESKTOP=/usr/share/ubuntu:/usr/local/share:/usr/share:/var/lib/snapd/desktop $ cat <<EOF > ~/.xsessionrc > export GNOME_SHELL_SESSION_MODE=ubuntu > export XDG_CURRENT_DESKTOP=ubuntu:GNOME > export XDG_DATA_DIRS=${DESKTOP} > export XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg > EOF $ cat <<EOF | sudo tee /etc/polkit-1/localauthority/50-local.d/xrdp-color-manager.pkla >[Netowrkmanager] >Identity=unix-user:* >Action=org.freedesktop.color-manager.create-device >ResultAny=no >ResultInactive=no >ResultActive=yes >EOF $ sudo systemctl restart polkit |
- Access
https://apps.apple.com/jp/app/microsoft-remote-desktop/id1295203466?mt=12
日本語化
- Activities > updateを検索して選択
- Activities > langを検索して選択
- 下記のように設定して再起動(日本語のままですんません)
- 入力ソース設定 > 日本語(Mozc)を追加
- パッケージの追加 > ソフトウェアの追加でCanonicalパートナーにチェック
日本語が打てればOK。
- キーマップ変更
1 2 3 4 5 6 7 |
$ 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 |
- 時刻の変更
1 2 |
$ sudo dpkg-reconfigure tzdata $ gsettings set org.gnome.desktop.interface clock-show-date true |
これでリモートデスクトップからの初期設定は完了。次はVNC Serverを構築します。
Setting VNC Server
- install
1 2 3 4 5 |
# apt install gnome-core xfonts-base # systemctl start gdm # apt install -y tigervnc-common tigervnc-standalone-server tigervnc-xorg-extension |
- run
1 2 |
# vncserver :1 # vncserver -kill :1 |
- fix xstartup
1 2 3 4 5 6 7 |
# vim .vnc/xstartup #!/bin/sh [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources vncconfig -iconic & dbus-launch --exit-with-session gnome-session & |
- vnc pass
1 |
# tigervncpasswd |
- again run
1 2 3 4 5 6 7 |
# vncserver -localhost no -geometry 1152x864 -depth 24 # vncserver -list TigerVNC server sessions: X DISPLAY # RFB PORT # PROCESS ID :1 5901 50790 |
- Access
Mac > Finder > 移動 > サーバーへ接続
VNCのportからアクセスできるようになったので次はブラウザからログインできるようにnoVNCをインストールします。
Install noVNC
- install package
1 |
# apt install novnc websockify python-numpy |
- restart vncserver
1 2 |
$ vncserver -kill :1 $ vncserver :1 |
- add systemctl and start novnc
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# vim /usr/lib/systemd/system/novnc.service [Unit] Description=noVNC startup [Service] Type=simple ExecStart=/usr/bin/websockify -D --web=/usr/share/novnc/ 6080 localhost:5901 ExecStop=/bin/kill ${MAINPID} Restart=always User=adachin Group=adachin [Install] WantedBy=multi-user.target # systemctl daemon-reload # systemctl start novnc.servicewebsockify -D --web=/usr/share/novnc/ 6080 localhost:5901 |
VNC Serverのみsystemctlがうまくいかんのであとで調査しましょう!
- Access
http://xxx.xxx.xxx:6080/vnc.html
これでブラウザからアクセスすることができました。セキュリティグループの3389,5901は使用しないので削除しましょう。ただ、セキュリティのことを考えるとEIP開放しているので、EIPは利用せずにALBのRProxy(社内用)でIP制限と、かつドメインでhttpsアクセスできるようにすると尚ベストです。それが以下。
ALB RProxy https access
こんな感じで社内向けRProxy用ALBがあればIP制限もできますし、ポートをターゲットグループでプロキシすればドメインでかつhttpsでアクセスできるようになります。
https://hoge.adachin.me/vnc.html
まとめ
手順が多すぎる!一つでも漏らすとまったく繋がらないので手順書はしっかり書くといいですね。てかAnsible化しよう… プラスこのUbuntuサーバーにDockerもインストールとなると新しく別ユーザでVNCやnoVNCサーバーを動作しないとアクセスはできるものの、ログインができないので結構ハマった…
しかしブラウザからアクセスできるのはめちゃくちゃ便利だな〜
※追記
[Ubuntu Desktop][Apache Guacamole]ブラウザからVNCで複数ユーザーをログインしたい場合
参考
https://qiita.com/osugizmo/items/21578272ae2db05ab001
https://qiita.com/nnagashima/items/21d9526979344f51121c
https://qiita.com/DaiGuard/items/3faebe98fe0f0e997567
https://qiita.com/makaaso-tech/items/013de0d81bdca03bd25e
0件のコメント