このページではVNCサーバー(TigerVNC)をインストールしてLinux VPS(Ubuntu/Debian)をブラウザで遠隔操作(noVNC)する為の設定方法・手順を紹介しています。
VNCとは?
VNCとはネットワークを通じて接続された他のコンピューターの画面を遠隔操作するソフトウェアの事です。
接続先がWindowsの場合にはWindows標準アプリの「リモートデスクトップ」などを用いるのが一般的ですが、LinuxなどのOSではVNCを使ってリモート操作する事があります。
「ビューアー」を使って操作する方法と「ブラウザ」を使って操作する方法がありますが、本ページでは「ブラウザ」を使った方法を説明しています。
ビューア―を使った方法は下記ページで説明しています。
VNCサーバーのインストール
VNCサーバーをインストールしていきますが、デスクトップ環境など一通りの設定が終わってる事を想定して説明していきます。
まだデスクトップ環境などが入っていない場合は下記ページなどを参考にしてください。
TigerVNC/noVNC/D-Busのインストール
「OSのアップデート」「TigerVNCのインストール」「noVNCのインストール」「D-Busのインストール」を行ないます。
sudo apt -y update && sudo apt -y upgrade && sudo apt -y install tigervnc-standalone-server && sudo apt -y install novnc python3-websockify python3-numpy && sudo apt install dbus-x11
UFWのインストール/ポート6080,5901の開放
sudo apt -y install ufw && ufw allow 6080/tcp && ufw allow 5901/tcp
ユーザー名の切り替え
次にVNC接続した際に表示されるLinux側(Ubuntu/Debian)のユーザー名に切り替えます。(先にユーザー作成を行なってください)
sudo -i -u ユーザー名
- ユーザー名がmeta4の場合は「sudo -i -u meta4」
VNCサーバーの起動
次にVNCサーバーを起動します。
tigervncserver -xstartup /usr/bin/gnome-session -geometry 1980x1200 -localhost no :1
- 「gnome-session」の部分はMATEをお使いの場合は「mate-session」に変更が必要です。
- 「1980x1200」の部分は解像度なのでお好みで変更してください。
- 「no :1」はポート5901で開くという意味で、5902で開きたい場合は「no :2」と変更します。
このコマンドを実行すると下記のメッセージが現れパスワード入力を求められるので同じものを2回入力し、次のメッセージ「Would you like to enter a view-only password (y/n)?」が出たら「nキー」→「エンターキー」を押します。
You will require a password to access your desktops.
Password:パスワード入力
Verify:パスワード入力(確認用)
Would you like to enter a view-only password (y/n)? ←nを押してエンターキー
VNCサーバーが正常に起動するとこのようなメッセージが表示されます。
New Xtigervnc server 'ホスト名:1 (ユーザー名)' on port 5901 for display :1.
Use xtigervncviewer -SecurityTypes VncAuth,TLSVnc -passwd /home/ユーザー名/.vnc/passwd ホスト名:1 to connect to the VNC server.
noVNCの起動
websockify -D --web=/usr/share/novnc/ --cert=/home/ユーザー名/novnc.pem 6080 localhost:5901
- ユーザー名はご自分のユーザー名に変更してください。
ブラウザからVNC接続を行なう
インストール・起動が終わったらブラウザから遠隔操作を行ないます。
下記URLをブラウザのアドレスバーに打ち込みます。
http://IPアドレス:6080/vnc.html
- IPアドレスはご自分の環境のものに変更してください。
URLを打ち込むとこのような画面が開くので「Connect」をクリックします。
自分で設定したパスワードを入力し「Send Password」をクリックします
パスワードに間違いがなければリモート接続が完了します。
TigerVNCの停止/自動起動とnoVNCの自動起動
TigerVNCの停止
TigerVNCは下記のコマンドで停止できます。
tigervncserver -kill :1
- 起動させた時のユーザー名でなければ停止できませんので注意して下さい。
- 「:1」の箇所は起動時のポート番号を入力します。
TigerVNCの自動起動
通常、OSを再起動した場合は再度コマンドからVNCサーバーの起動を行なわなければいけませんが、毎回行なうのは面倒なのでOSの起動と同時にTigerVNCも起動するように設定します。
serviceファイルの編集を行ないます。
sudo nano /etc/systemd/system/vncserver@.service
何も無い状態だと思いますが下記をコピペしユーザー名などを編集します。
[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target
[Service]
Type=forking
User=ユーザー名
Group=ユーザー名
WorkingDirectory=/home/ユーザー名
ExecStart=tigervncserver -xstartup /usr/bin/gnome-session -geometry 1980x1200 -localhost no :1
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
- 「ユーザー名」と書いた箇所3つはご自身が作成したユーザー名に変更してください。
- 10行目の「gnome-session」はMATEをお使いの場合は「mate-session」に変更する必要があります。
貼り付け&編集が終わったら、キーボードの「Ctrlキー+Xキー」→「Yキー」→「Enterキー」の順に押し編集を完了させます。
serviceファイルの編集が終わったら下記のコマンドを実行します。
sudo systemctl daemon-reload && sudo systemctl enable vncserver@1.service
noVNCの自動起動
TigerVNCと同じようにサービスファイルを編集します。
sudo nano /etc/systemd/system/novnc.service
何も無い状態だと思いますが下記をコピペしユーザー名などを編集します。
[Unit]
Description=noVNC service
After=syslog.target network.target
[Service]
Type=forking
User=ユーザー名
Group=ユーザー名
WorkingDirectory=/home/ユーザー名
ExecStart=websockify -D --web=/usr/share/novnc/ --cert=/home/ユーザー名/novnc.pem 6080 localhost:5901
[Install]
WantedBy=multi-user.target
- 「ユーザー名」と書いた箇所4つはご自身が作成したユーザー名に変更してください。
貼り付け&編集が終わったら、キーボードの「Ctrlキー+Xキー」→「Yキー」→「Enterキー」の順に押し編集を完了させます。
serviceファイルの編集が終わったら下記のコマンドを実行します。
sudo systemctl daemon-reload && sudo systemctl enable novnc.service && sudo systemctl start novnc.service
あとはOSの再起動を行ない自動起動しているか確認してください。
一部OSバージョンはもう一作業必要
複数のOS(Ubuntu/debian)、OSバージョン、デスクトップ環境(GNOME/MATE)にてきちんと自動起動するか確認しましたが、この方法だと自動起動するケースとしないケースがある事が分かりました。
結論から言うと幾つかの組み合わせでVNCの自動起動が上手くいきませんでした。
noVNCのパスワード入力画面は表示されますが、パスワードを入力しログインを試みるとこのような画面になってしまいます。
A problem has occurred and the system can't recover. All extensions have been disabled as a precaution.
このエラーは良く見かけますが、これだけだと何が問題なのか分からず解決方法を見付けるのに苦労しましたがようやく分かりましたので説明していきます。
その前に下記が正常に自動起動しないOSバージョンになりますので確認して下さい。
VNC自動起動確認結果
OSバージョン | GNOME | MATE |
Ubuntu24.04 | 〇 | 〇 |
Ubuntu23.10 | 〇 | 〇 |
Ubuntu23.04 | 〇 | 〇 |
Ubuntu22.04 | ✕ | 〇 |
Ubuntu20.04 | ✕ | 〇 |
Debian12 | 〇 | 〇 |
Debian11 | ✕ | 〇 |
Debian10 | 〇 | 〇 |
MATEは全て問題ありませんでしたが、GNOMEは幾つかのOSバージョンで上手くいきませんでした。
MATEが問題無くてGNOMEに問題があるというところからヒントを得て解決策が分かりました。
ディスプレイマネージャーを変更する事でエラーを回避する事が出来ます。
MATEにはデフォルトで「LightDM」という名前のディスプレイマネージャーが、GNOMEには「GDM」というディスプレイマネージャーが入っています。
一部OSバージョンのGNOME×GDMの組み合わせで問題が起きているようで、GNOMEにLightDMをインストールし、ディスプレイマネージャーをLightDMに変更する事で解決できます。
LightDMのインストール手順
sudo apt-get install lightdm
インストール中にこのような画面が表示されるのでキーボードの「↓」を押して「LightDM」を選択しエンターを押します。
lightdm を設定しています
Default display manager:
gdm3
lightdm
<了解>
もしも間違って「gdm3」を選択したままエンターを押してしまった場合は下記から同じ画面を表示する事ができます。
sudo dpkg-reconfigure lightdm
これで問題無くnoVNC経由でリモート操作ができるようになる筈です。
上の表の自動起動が問題ないOSバージョンでも同じ問題が起きる可能性が無いとは言い切れないので、もし同じエラーが出た場合はディスプレイマネージャーの変更を行なってみてください。
以上でVNCサーバー(TigerVNC)をインストールしてLinux VPS(Ubuntu/Debian)をブラウザから遠隔操作(noVNC)する為の設定方法・手順の説明を終わります。