合ってるかな~
# 変更点
前バージョンの Tigervnc には vncserver と呼ばれていたラッパースクリプトがあり、
ユーザが手動で Xvnc プロセスを起動することができていました。

使い方はこのように、かなり簡単で、
$ vncserver :x [vncserver オプション] [Xvnc オプション]
これだけでした。

これで問題はなかったのですが、systemd から vncserver を起動したいという要望がありました。
これらの理由で考えが完全に変わり、今は新しい動作方法になりました。
# What has changed
The previous Tigervnc versions had a wrapper script called `vncserver` which
could be run as a user manually to start *Xvnc* process. The usage was quite
simple as you just run
```
$ vncserver :x [vncserver options] [Xvnc options]
```
and that was it. While this was working just fine, there were issues when users
wanted to start a Tigervnc server using *systemd*. For these reasons things were
completely changed and there is now a new way how this all is supposed to work.
# Tigervnc サーバの起動方法
## ユーザマップの追加
ユーザを特定のポートにマッピングできます。
設定ファイル /etc/tigervnc/vncserver.users でマッピングを行います。
それはとても簡単で、ファイルにはいくつかのサンプルがあります。しかし基本的なマッピングの書式は
:x=user
で、例えば、以下のように書けます。
:1=test
:2=vncuser
?# How to start Tigervnc server
?
## Add a user mapping
With this you can map a user to a particular port. The mapping should be done in
`/etc/tigervnc/vncserver.users` configuration file. It should be pretty
straightforward once you open the file as there are some examples, but basically
the mapping is in form
```
:x=user
```
For example you can have
```
:1=test
:2=vncuser
```
## Xvnc オプションの設定
Xvnc のパラメータを設定するには、ユーザマッピングを行ったのと同じディレクトリへ行き、
設定ファイル vncserver-config-defaults を開きます。

このファイルは Xvnc の標準設定で、次のいずれかに該当しない限りすべてのユーザに適用されます。
・ユーザの $HOME/.vnc/config に設定がある場合。
・同じオプションが設定ファイル vncserver-config-mandatory と異なる値を持つ場合、これは
 標準設定を置き換え、ユーザごとの設定より高い優先度があります。
 このオプションは、システム管理者が特定の Xvnc のオプションを強制したい場合にあります。

設定ファイルの書式はこのように非常にシンプルです。
option=value

例えば、
session=gnome
securitytypes=vncauth,tlsvnc
desktop=sandbox
geometry=2000x1200
localhost
alwaysshared

### 注意:
セッションを起動したければ重要なオプションを一つ設定する必要があります。
例えば、GNOME デスクトップを起動したければ、これを使います。
session=gnome

これはディレクトリ /usr/share/xsessions/ のセッションデスクトップファイルの名前と一致する必要があります。
## Configure Xvnc options
To configure Xvnc parameters, you need to go to the same directory where you did
the user mapping and open `vncserver-config-defaults` configuration file. This
file is for the default Xvnc configuration and will be applied to every user
unless any of the following applies:
* The user has its own configuration in `$HOME/.vnc/config`
* The same option with different value is configured in
? `vncserver-config-mandatory` configuration file, which replaces the default
? configuration and has even a higher priority than the per-user configuration.
? This option is for system administrators when they want to force particular
? *Xvnc* options.

Format of the configuration file is also quite simple as the configuration is
in form of
```
option=value
option
```
for example
```
session=gnome
securitytypes=vncauth,tlsvnc
desktop=sandbox
geometry=2000x1200
localhost
alwaysshared
```
### Note:
There is one important option you need to set and that option is the session you
want to start. E.g when you want to start GNOME desktop, then you have to use
```
session=gnome
```
which should match the name of a session desktop file from `/usr/share/xsessions`
directory.
## VNC パスワードの設定
Tigervnc サーバを起動するには、サーバを起動するユーザごとに、これを実行してパスワードを設定する必要があります。
$ vncpasswd

### 注意:
以前から Tigervnc を使用しており、すでにパスワードを作成してある場合は、
vncpasswd によって作成された $HOME/.vnc/ フォルダが SELinux の正しいコンテキストであるか確認する必要があります。

このフォルダを削除し、再度パスワードを作成することにより、作り直すこともできます。

または、このように実行することもできます。
$ restorecon -RFv /home/<USER>/.vnc
## Set VNC password
You need to set a password for each user in order to be able to start the
Tigervnc server. In order to create a password, you just run
```
$ vncpasswd
```
as the user you will be starting the server for.
### Note:
If you were using Tigervnc before for your user and you already created a
password, then you will have to make sure the `$HOME/.vnc` folder created by
`vncpasswd` will have the correct *SELinux* context. You either can delete this
folder and recreate it again by creating the password one more time, or
alternatively you can run
```
$ restorecon -RFv /home/<USER>/.vnc
```
## Tigervnc サーバの起動
最後に、systemd を使ってサーバを起動できます。次を実行してください。

root として、
$ systemctl start vncserver@:x

または、sudo を実行する権限がある場合は通常のユーザとして、
$ sudo systemctl start vncserver@:x

:x を、ユーザマッピングファイルで設定した実際の番号に置き換えることを忘れないでください。

私の実行例はこれ。
$ systemctl start vncserver@:1
GNOME セッションでユーザ test の Tigervnc サーバを起動します。

### 注意:
もし以前に Tigervnc を使っていて、その起動に systemd を使っていた場合、
systemd の設定ファイルを削除する必要があります。
高い可能性として /etc/systemd/system/vncserver@.service の様にコピーしたもの。
そうしないと、このサービスファイルが最新の Tigervnc よりも優先されます。

# 制限事項
すでにグラフィックセッションによってログインしているユーザに対して Tigervnc サーバを起動することはできません。
安全ではないので、サーバを root ユーザで起動するのを避けてください。
root としてサーバは機能するはずですが、そうすることは勧められないし、正しく機能しない何かがあるかもしれません。
## Start the Tigervnc server
Finally you can start the server using systemd service. To do so just run
```
$ systemctl start vncserver@:x
```
as root or
```
$ sudo systemctl start vncserver@:x
```
as a regular user in case it has permissions to run `sudo`. Don't forget to
replace the `:x` by the actual number you configured in the user mapping file.
Following our example by running
```
$ systemctl start vncserver@:1
```
you will start a Tigervnc server for user `test` with a GNOME session.

### Note:
If you were previously using Tigervnc and you were used to start it using
*systemd* then you will need to remove previous *systemd* configuration files,
those you most likely copied to `/etc/systemd/system/vncserver@.service`,
otherwise this service file will be preferred over the new one installed with
latest Tigervnc.

# Limitations
You will not be able to start a Tigervnc server for a user who is already
logged into a graphical session. Avoid running the server as the `root` user as
it's not a safe thing to do. While running the server as the `root` should work
in general, it's not recommended to do so and there might be some things which
are not working properly.