さくらのVPS(CentOS7)にXfceをインストールしてVNCでリモート接続する

2019年4月16日

VPSサーバーをどこでも使えるデスクトップにしたかったので、デスクトップ環境をインストールしてリモートから接続できるようにした時のメモ。デスクトップ環境はGNOMEとかKDEとかいろいろあるけど、今回は軽量(?)らしいXfceを入れてみた。



VPSサーバーの最初の設定はこちらから

さくらのVPSサーバーにCentOS7をインストールして最初に行った設定

デスクトップ環境とVNCをインストール

インストールはyumを使えば簡単。


$ yum groupinstall Xfce

$ yum install tigervnc-server

Xfceのインストールを紹介しているサイトには、まずEpelリポジトリを導入するように書かれているけど、さくらのVPSでCentOS7の標準インストールをした場合、Epelリポジトリがすでに追加されているので必要なさそう。なので、いきなりyumでXfceインストールできるみたい。

VNCの設定

何はともあれ、まずはVNCの設定を行って、リモートから接続できるようにする。そうしないとデスクトップ環境の操作できないからね。

VNCのパスワードの設定

ということで、最初は下のコマンドでVNCのパスワードの設定をする。


$ vncpasswd

ここでVNCで使用するパスワードを入力すると設定される。

VNCのユニットファイルの作成と設定

パスワードを設定したら、次はVNCサーバーのユニットファイルを作成する。
元になるファイルをライブラリからコピーして、viで編集する。


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

$ vi /etc/systemd/system/vncserver@:1.service

#
# Use "-nolisten tcp" to prevent X connections to your VNC server via TCP.
#
# Use "-localhost" to prevent remote VNC clients connecting except when
# doing so through a secure tunnel.  See the "-via" option in the
# `man vncviewer' manual page.


[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

このユニットファイル内で<USER>と記述されている個所(18、19行目)をVNCサーバのログインユーザ名(例:user111とか)に書き換える。そして、18行目の後ろにgeometryの部分を追加。

ExecStart=/usr/sbin/runuser -l user111 -c "/usr/bin/vncserver %i -geometry 1200x800"

とする。

VNCのスタートアップの設定

とりあえずここで、VNCを一度起動してみる。


$ vncserver :1

起動したら一旦停止する。


$ vncserver -kill :1

これでスタータップの設定ファイル(xstartup)が作成されているので、このファイルを開く。


$ vi /home/tak/.vnc/xstartup

で開いて、元々ある内容をコメントアウトして、下の7〜13行目を追記する。

#!/bin/sh

#unset SESSION_MANAGER
#unset DBUS_SESSION_BUS_ADDRESS
#exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
#x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
x-window-manager &
exec xfce4-session &

これで、VNCが起動したらGUIでXfceが実行されるようになる。

VNCの自動起動を設定する


$ systemctl enable vncserver@:1.service

これだけで大丈夫。

VNCサーバー用のポートの設定

とりあえずここではVNCが使用するポートを使えるようにする。これは、firewalldに設定ファイルがあるので簡単。下のコマンドで設定ファイルを追加して、反映させる。


$ firewall-cmd --permanent --add-service=vnc-server

$ firewall-cmd --reload

$ firewall-cmd --list-all

うまく行けば、services: に、vnc-serverが追加されているはず。
ただ、サーバーでこのまま使うのは危険なので、デスクトップ環境とVNCのインストールと設定が問題なく終われば、最終的にはSSHポートフォワーディングとかを使って、このポート(5900-5903)は閉じるようにしたほうが良い。

デスクトップ環境を整える

VNCserverを起動してリモートから接続


$ vncserver -geometry 1280x800 :1

起動したら、VNCで接続してみる。

Macの場合は画面共有を使う。スポットライトで画面共有で検索してもいいし、「Finder」 > 「移動」 > 「サーバへ接続」から、プロトコルにvncを指定すれば画面共有が開く。
接続先はvnc://XXXXXX.sakura.ne.jp:5901

これで日本語は読めないけど、デスクトップが表示されるはず。表示されたら画面共有は一旦閉じる。

日本語入力環境

日本語入力とフォントをインストールする。


$ yum install ibus-kkc

$ yum install vlgothic-*

$ yum install ipa-*-fonts

インストールが終わったら、さっきと同じようにVNCで接続する。すると、デスクトップの日本語表示が見えるようになっている。
そして、IMEはデスクトップ起動時に自動起動したいのでデスクトップの自動開始から設定する。

デスクトップで右クリックして、「アプリケーション」 > 「設定」 > 「セッションと起動」 > 「自動開始アプリケーション」で、以下を追加。
  名前:IBus daemon
  説明:start IBus daemon
コマンド:ibus-daemon -rdx

これで、Xfceが起動した時に一緒に日本語入力も起動される。

ロケールの変更

ロケールの確認。


$ localectl status

下のような感じで現在のロケールが表示される。

   System Locale: LANG=C
       VC Keymap: jp106
      X11 Layout: jp

ロケールを日本語に変更。そして、再度ロケールの確認。


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

$ localectl status

すると、「System Locale:」の部分が、「LANG=ja_JP.UTF-8」に変わっている。あとは、この設定を反映させる。


$ source /etc/locale.conf

これで、最低限のセットアップは終了!デスクトップのタスクバーがなくて使いづらい時は、デスクトップで右クリックして、「アプリケーション」 > 「設定」 > 「パネル」 > 「アイテム」で、必要なもの(アプリケーションメニューとか時計とかウインドボタンとか)を追加して。あとは必要に応じてChromiumとかlibre officeとかをインストールすれば一通り使えるかな。

まとめと感想

使ってみた印象では、GUIのレスポンスは回線速度に依存する感じ。光ファイバーなら、ローカルネットワークとそんなに遜色ないけど、モバイル回線とかは厳しい…。なんとかギリギリ使える感じ。うーん、どうしたものか…。
と、いうことで、インストールはyumのおかげで簡単だけど、設定はやっぱちょっぴり難しいところもあるね。メモ残しておかないとできないよ。あと、VNC接続に問題なければ、SSHポートフォワーディングとかを利用して5901ポートに直接接続するのは避けたほうが無難です。

2019/01/14追記

sshポートフォワーディングについてのまとめ


SSHポートフォワーディングを使ってVNCサーバーに接続する記事を書いたので、なるべくポートフォワーディングを利用して5901ポートを閉じておきましょう笑



参考リンク

Tipsvps

Posted by ucci1372