Ubuntu 20.04.1 LTSに、VNCServerとnoVNCを導入してNGINX経由でデスクトップ環境へアクセス可能な状態にする。
XFCEインストール
$ sudo apt update
$ sudo apt install xface4 xfce4-goodies
VNC Server インストール
tigervncserverを使用
$ sudo apt install tigervnc-standalone-server
セッションを開始するユーザーでログインし、パスワードを設定
<user01>$ vncpasswd
Passwrd: xxxx
Verify: xxxx
Would you like to enter a view-only password (y/n)? n
設定ファイル作成とテストのため、VNCServerを一度起動
<user01>$ vncserver :1
<user01>$ vncserver -kill :1
設定ファイルを編集、xfce4 で起動するよう指定
<user01>$ vi ~/.vnc/xstartup
---
!/bin/bash
PATH=/usr/bin:/usr/sbin
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4 &
---
VNCServerの自動起動設定
$ sudo vi /etc/systemd/system/vncserver@.service
---
[Unit]
Description=Remote Desktop Service (VNC)
After=syslog.target network.target
[Service]
Type=forking
User=<user01>
Group=<user01's group>
WorkingDirectory=/home/<user01>
PIDFile=/home/<user01>/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
---
サービスの登録と起動
$ sudo systemctl daemon-reload
$ sudo systemctl enable vncserver@1.service
$ sudo systemctl start vncserver@1.service
ステータス確認
$ sudo systemctl status vncserver@1.service
VNC Client インストール
noVNCを以下からダウンロード
https://github.com/novnc/noVNC
ダウンロードしたファイルを、「/user/local/noVNC」配下に展開
nginxにnoVNCを参照するよう設定追加
$ sudo vi /etc/nginx/conf.d/novnc.conf
---
upstream vnc_proxy {
server 127.0.0.1:6080;
}
server {
listen 443 ssl;
server_name <hostname>;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_certificate <fullchain.pem>;
ssl_certificate_key <privkey.pem>;
auth_basic "Restricted";
auth_basic_user_file /var/www/.htpasswd;
location /websockify {
proxy_http_version 1.1;
proxy_pass http://vnc_proxy/;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 61s;
proxy_buffering off;
}
location / {
index vnc.html;
alias /usr/local/noVNC/;
try_files $uri $uri/ /vnc.html;
}
}
---
サービスのリロード
$ sudo systemctl reload nginx
接続確認
対象サーバーへ接続 https://<HOSTNAME>/vncwc