さくらのVPS(CentOS7)にXfceをインストールしてVNCでリモート接続する
VPSサーバーをどこでも使えるデスクトップにしたかったので、デスクトップ環境をインストールしてリモートから接続できるようにした時のメモ。デスクトップ環境はGNOMEとかKDEとかいろいろあるけど、今回は軽量(?)らしいXfceを入れてみた。
VPSサーバーの最初の設定はこちらから
目次
デスクトップ環境と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/user/.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ポートフォワーディングを使ってVNCサーバーに接続する記事を書いたので、なるべくポートフォワーディングを利用して5901ポートを閉じておきましょう笑