= Attivazione server VNC
Installazione e configurazione di TigerVNC
:authors: Celestino Amoroso
:docinfo: shared
:encoding: utf-8
:toc: right
:toclevels: 4
:toc-title: Indice Generale
:icons: font
:icon-set: fi
:numbered:
:table-caption: Tabella
:figure-caption: Diagramma
:docinfo1:
:sectlinks:
:sectanchors:
:source-highlighter: rouge
// :rouge-style: ThankfulEyes
:rouge-style: gruvbox
// :rouge-style: colorful
//:rouge-style: monokay

toc::[]

image::https://upload.wikimedia.org/wikipedia/commons/a/a9/TigerVNC_logo.svg[width=200,align=center]

== Installazione server TigerVNC
Installare con utente _root_ o _sudo_ il pacchetto *tigervnc-server*.

.Installazione pacchetto
[source,sh]
----
[root@minis ~]# dnf install tigervnc-server
----

== Configurazione server
La configurazione prevede interventi sul file globale `/etc/tigervnc/vncserver.users` e sui file locali `~/.vnc/config` per ogni utente abilitato.

=== Configurazione utenti
Modificare il file `/etc/tigervnc/vncserver.users` per definire l'associazione fra un'istanza di server VNC ed il corrispondente utente proprietario.

.Associzione utente / istanza VNC
[source,sh]
----
# TigerVNC User assignment
#
# This file assigns users to specific VNC display numbers.
# The syntax is <display>=<username>. E.g.:
#
# :2=andrew
# :3=lisa
:5=camoroso
:2=elena
----

TIP: Il numero dell'istanza VNC definisce la corrispondente porta TCP. In altre parole, l'istanza _:N_ definisce la porta 5900+__N__. Esempio, all'istanza *:5* corrisponde la porta *5905*.

=== Preferenze dell'utente
Le proprietà di una specifica istanza si impostano nel file `~/.vnc/config` dell'utente proprietario. Ad esempio, secondo la configurazione di sopra, l'utente proprietario dell'istanza *:5* è _camoroso_.
Per tale utente il file `config` presenta il seguente contenuto.

.Configurazione VNC di _camoroso_ sul mini-pc
[source,sh]
----
[camoroso@minis ~]$ cat .vnc/config
# create new
# session=(display manager you use)
# securitytypes=(security options)
# geometry=(screen resolution)

session=plasma
securitytypes=vncauth
geometry=1024x768
----
NOTE: Al momento non ho trovato documentazione sui parametri e relativi valori che è possibile specificare in questo file. Il contenuto attuale è basato su un esempio trovato in un forum.

Questa configurazione d'esempio specifica che il server VNC deve caricare una sessione _plasma_, ovvero il desktop KDE, con una risoluzione _1024x768_.

Il valore _vncauth_ del parametro _securitytypes_ inoltre specifica che l'accesso al server richiede l'autenticazione dell'utente mediante password impostata con il comando _vncpasswd_.

=== Password dell'utente
Il comando _vncpasswd_ consente di impostare la password dell'utente proprietario dell'istanza VNC e, se richiesta, anche una password ausiliara che abilita la sola visione del contenuto dell'istanza.

.Impostazione password
[source,sh]
----
[camoroso@minis ~]$ vncpasswd 
Password:
Verify:
Would you like to enter a view-only password (y/n)? y
Password:
Verify:
----

Le password sono registrate in forma non leggibile nel file `~/.vnc/passwd`.


=== Servizio _systemd_ e avviamento
Come utente _root_ o con il comando _sudo_ copiare il modello di unit per l'esecuzione di istanza VNC.

[source,sh]
----
[root@minis ~]# cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@.service

# Abilitare un'istanza, esempio la :5, per l'avviamento al boot
[root@minis ~]# systemctl enable vncserver@:5.service

# Avviamento di un'istanza, esempio la :5
[root@minis ~]# systemctl start vncserver@:5.service
----

== Connessione al server VNC
Il pacchetto TigerVNC comprende il programma _vncviewer_ con il quale è possibile verificare il funzionamento del server. Prima di visualizzare il contenuto dell'istanza, all'utente è richiesto l'inserimento della password impostata con _vncpasswd_.

Un uso pratico del servizio VNC prevede la visualizzazione remota di un'istanza VNC. In questo caso, per operare in modo sicuro, è consigliato canalizzare il protocollo VNC attraversio una connessione SSH.

.Esempio di canalizzazione SSH su MacOS
----
celestino@MBP-CELESTINO DKV % ssh -NL 5905:localhost:5905  minis.internet
----

Il comando _ssh_ stabilisce una connessione sicura SSH al mini-pc attraverso il suo indirizzo esterno e subito dopo apre la porta *5905* locale al PC Mac. Il flusso da e verso questa porta è canalizzato alla stessa porta del mini-pc, ovvero quella dell'istanza *:5* del server VNC.

TIP: Per terminare la canalizzazione, premere semplicemente la sequenza _Ctrl-C_.

TIP: Un esempio di visualizzatore VNC per MacOS è _Remote Desktop - VNC_.


== UPDATE: Fedora 40
La configurazione descritta funziona con versioni precedenti a Fedora 40. In quest'ultima versione sono stata fatti dei cambiamenti.
Il contentuo della directory di configurazione dell'utente .vnc dev'essere spostata in 

  $HOME/.config/tigervnc/

I log del server _Xvnc_ sono regitrati in (host=minis.portale-stac.it, display :5):

  $HOME/.local/state/tigervnc/minis.portale-stac.it\:5.log

[IMPORTANT]
====
Per il desktop KDE installare il pacchetto plasma-workspace-x11:

----
[root]#] dnf install plasma-workspace-x11
----
====

'''
*Celestino Amoroso* +
*celestino . amoroso @ gmail . com*

image::https://gravatar.com/avatar/88d204d546890e5d89073fb1cec29fe9.png?size=48[]
