🐯

Ubuntu 22.04 TigerVNCのセットアップ

2024/03/09に公開

環境

Proxmox上のUbuntu22.04
Ubuntu初心者

記事を書いた理由

Ubuntuはデフォルトでリモートデスクトップの設定ができますが、ログイン済みの状態でないと使用できないようなので、代わりにTigerVNCを構築します。

TigerVNCを構築する記事はいくつかありますが、記事の通りに進めてもうまく動作させることができなかったのであれこれ試した結果を残します。

インストール

sudo apt install tigervnc-standalone-server -y

記事によってインストールするパッケージが増減しますが、上のコマンドだけで十分足りるようです。

パスワード設定

TigerVNCを実行します。ただ初回はパスワードなどの設定を求められます。

vncserver
Password:
Verify:
Would you like to enter a view-only password (y/n)?

パスワードの設定がすんだらいったん閉じましょう。(場合によっては設定が終わったら閉じてるかもしれません)
すべてのセッションを閉じるには

vncserver -kill :*

基本設定

私の場合TigerVNCの設定ディレクトリとファイルがなかったので作ります。
xstartupはTigerVNC起動時に実行されます。そのため実行権限を付与します。

mkdir ~/.vnc
touch ~/.vnc/xstartup
chmod +x ~/.vnc/xstartup

任意のエディタでxstartupを開き、ファイルに記述します。

#!/bin/bash

/etc/X11/Xtigervnc-session
gnome-session

次に~/.vnc/configファイルを編集します。これも私の環境だと最初はなかったので作成します。

touch ~/.vnc/config

任意のエディタでconfigを開き、記述します。

session=ubuntu
geometry=1200x720
alwaysshared

詳しくはこちらを見てください。
session=ubuntuとしているのは起動するセッション名/usr/share/xsessions/内の.desktopファイルの名前を指定する必要があるからです。
geometryはそのまま解像度ですね
alwayssharedlocalhostと対になる設定のようです。


最後に/etc/tigervnc/vncserver.usersを編集してアクセスできるユーザーを設定します。
書いてある通りなのですが、:1=exampleのように追加します。
私の場合は:1が使用できなかったので代わりに:2に変更しました。

# TigerVNC User assignment
#
# This file assigns users to specific VNC display numbers.
# The syntax is <display>=<username>. E.g.:
#
# :2=andrew
# :3=lisa
:2=nop

としました。

テスト

実行してテストしてみましょう。

vncserver

実行するとすぐにコマンドが終了するので、正常に動作しているかはメッセージで判断するか、以下のコマンドを実行して結果が出てくるかで判断します。

vncserver -list

(例)実行結果

TigerVNC server sessions:

X DISPLAY #     RFB PORT #      RFB UNIX PATH   PROCESS ID #    SERVER
2               5902                            19473           Xtigervnc

この場合2番目のディスプレイをポート5902で開いていますね。

もしうまくいかなかった場合はディスプレイの番号を変えて試してみてください

vncserver :2

:2は2番目のディスプレイで開くという意味です。


終了するには

vncserver -kill :1

別のディスプレイ番号で開いた方は:1を適宜変えてください


この状態でTigerVNCにはアクセスできるのですがデフォルトではlocalhostからのアクセスしか許可されていません。そのため、外部からアクセスするには

vncserver -localhost no :1

とします


では、VNCクライアントでアクセスしてみましょう
私はクライアントにもTigerVNCを使いました
https://sourceforge.net/projects/tigervnc/files/stable/1.13.1/

IPアドレスはip aでも実行して取得し、:1で開いたなら:5901 :2で開いたなら:5902 のようにアクセスできます
私の場合は

192.168.1.15:5902

追加設定

毎回vncserverコマンドを実行するのは面倒なのでサービスを立ち上げましょう。
設定ファイルはaptで入れた後なら既に入っているはずです。

/lib/systemd/system/tigervncserver@.service

起動するには以下のコマンドを実行します。
@の後にディスプレイ番号 :1や:2 を入力します

sudo systemctl status tigervncserver@:1.service

起動時に立ち上げるには

sudo systemctl enable tigervncserver@:1.service

ただこの状態だとlocalhostからのアクセスしか通さないので
/etc/tigervnc/vncserver-config-defaultsファイルを編集します。
$localhost=false;を追加します。

....省略
# the auto generation is disabled and the user has to take care
# that usable certificates are present.

$localhost=false;
1;

最後に

正直なところTigerVNCの情報が人によってまちまちで、この方法がすべて正しいかはわかりません。もし「もっとこうしたほうがいいよ」等のアドバイスがありましたら、コメントを頂けると嬉しいです。

Discussion