20221028 Installatie van VNC toegang op een Raspberry Pi

Missie:

Installeer VNC toegang op een Raspberry Pi 4.

Het delen van het scherm is erg handig als het noodzakelijk is het hoofdscherm te zien bij een systeem zonder scherm toetsenbord en muis.
Normaal gesproken genereert VNC (en ook RSP) een nieuwe sessie op de Pi, soms zelfs met aan andere gebruiker.
Dat betekent dat je niet ziet wat er gebeurt op het scherm van de huidige gebruiker.

Om dat wel mogelijk te maken gaan we een VNC pakket installeren dat het visualiseren van de huidige gebruiker mogelijk maakt: Vino.
Vino gebruikt dezelfde techniek als alle andere VNC pakketten maar genereert geen nieuwe sessie.
Het herhaalt dat wat op de hoofd sessie gebeurt, zonder een nieuwe sessie aan te maken..
Er zijn andere methodes om een VNC sessie op te zetten, maar deze methode werkt heel solide en doet wat het doen moet.

Let op:
Om Vino te gebruiken moet je een installatie met GUI hebben.
Op een Lite installatie gaat deze methode niet werken.
Als je de terminal wil delen, bestaan daar andere methodes voor.
Denk daan aan SSH toegang bijvoorbeeld.

Stap 1 - Breng het besturingssysteem op de laatste stand.

Open een terminal venster en type de volgende commando’s:

sudo apt update 
sudo apt upgrade

Stap 2 - Installeer Vino.

Als het systeem helemaal bijgewerkt is, kunnen we beginnen met deinstallatie van Vino.
Vino maakt het mogelijk het hoofdscherm van de Pi te delen, iets wat de meeste VNC paketten niet doen.
Open een terminal venster en type het volgende commando:

sudo apt install vino

Vino wordt geinstalleerd, wacht tot de installatie klaar is.

In de huidige versie van Bullseye (2022-09-22-raspios-bullseye-armhf-full) blijkt Vino al meegenomen in het image. Dit is te zien aan het feit dat bij de installatie gemeld wordt dat er niks wordt ge-update.

Stap 3 - Maak toegang met een password mogelijk.

Met het gesettings commando kunnen we verscheidene instellingen van Vino aanpassen.
Je kunt met enkele van deze instellingen experimenteren om het gedrag van Vino aan te passen.
Om een password te gaan gebruiken moet de de volgende twee commando’s gebruiken.
Denk er aan dat je <PASSWORD> vervangt door het password dat je wilt gaan gebruiken.

gsettings set org.gnome.Vino authentication-methods "['vnc']"              
gsettings set org.gnome.Vino vnc-password "$(echo -n "PASSWORD" | base64)" 

Stap 4 - Het password weer uitschakelen.

Als je, om welke reden dan ook, de toegang via password weer wil uitschakelen is daarvoor het volgende commando noodzakelijk:

gsettings set org.gnome.Vino authentication-methods "['none']"             

Stap 5 - Encryptie uitschakelen.

Sommige VNC viewers, zoals TightVNC kunnen niet omgaan met de encryptie die Vino gebruikt.
Als je problemen ondervindt bij de verbinding naar je pi kun je overwegen om de encryptie uit te schakelen.
Ingeschakelde encryptie heeft wel duidelijke en logische voordelen.
Gebruik het volgende commando:

gsettings set org.gnome.Vino require-encryption false

Stap 6 - User confirmation uitschakelen.

Net zoals bij encryptie, hebben sommige VNC viewers last van de zgn. "user confermation".
Als je problemen ondervindt bij de verbinding naar je pi kun je overwegen om de user confirmation uit te schakelen.
Gebruik het volgende commando:

gsettings set org.gnome.Vino prompt-enabled false

Stap 7 - Wat is je IP adres?

Om via VNC te kunnen verbinden is noodzakelijk het IP adres van je pi te kennen.
Soms lukt het ook via de hostname, maar dat is geen garantie.
Gebruik het volgende commando, waarbij je let op de hoofdletter I:

hostname -I

Stap 8 - Start de Vino VNC server.

Om de Vino VNC server te starten gaan we het commando dat hier beneden staat gebruiken.
In een later stadium gaan we ervoor zorgen dat Vino direct bij het opstarten van de pi wordt opgestart.

/usr/lib/vino/vino-server

Stap 9 - Test de verbinding met een VNC client.

Op je Windows computer moet nu een VNC client staan. We gaan er een downloaden en installeren.
In dit voorbeeld gaan we TightVNC gebruiken. Je gaat hem downloaden vanaf hun officiele website..
Neem de 64-bit versie als je systeem daar geschikt voor is.
Daarna ga je naar je locatie waar je downloads terecht komen en start het gedownloade bestand op, een .msi bestand.
In dit voorbeeld:

tightvnc-x.x.xx-gpl-setup-64bit.msi

Daarbij staan de x.x.xx voor het versie nummer (nu 28-10-2022 is dat 2.8.63).
Klik op de knop Next.
Accepteer de licentie en klik weer op de knop Next.
Kies voor typical of complete.
Laat in het volgende scherm de vinkjes staan zoals ze staan en klik weer op de knop Next.
Klik op Install. Toets je password voor beheerfuncties in als daar om gevraagd wordt.
We gaan alleen de viewer gebruiken. In het venster waar de VNC server passwords worden gezet, zet je de bolletjes op Do not change.
Als je op een later tijdstip de server wil gaan gebruiken kan dat altijd nog aangepast worden.
Wacht tot de installatie klaar is, klik op Finish.

Start de VNC viewer op. Die staat in je programma’s.
Je krijgt dan het volgende scherm te zien.

tightvnc.jpg

1. Bij de box Remote Host vul je het IP adres (of hostname) in van de pi die je wilt benaderen.
2. Klik op de knop Connect

Nu kan er vanalles gebeuren.
Je kunt zomaar het hoofdscherm van je pi zien of.....
Je krijgt een "problemen scherm" te zien.
Bestudeer de tekstuele inhoud van het "problemen scherm" en neem adequate maatregelen.
Denk daarbij aan de zaken die in de stappen 4, 5 en 6 beschreven zijn, of gebruik de zoekfunctie van je browser.
In mijn geval moest ik "user confirmation" en "encryption" uitschakelen.
Ook wordt een password met sommige speciale karakters niet zomaar geaccepteerd.
Zet het password dan binne hoge komma’s, bijvoorbeeld: "PASSWORD".
Als je een scherm aan de pi hebt aangesloten en de VNC connectie actief is, kun je de muis op beide schermen volgen.
leuk om te zien.

Als je geen problemen met de verbinding hebt of je problemen hebt opgelost, kun je naar de volgende stap:
Het automatisch opstarten van Vino op je pi.

Stap 10 - Automatisch opstarten van Vino.

Om dit te raliseren moeten we een aantal stappen doorlopen.

Stap 10.1 - Maak een shell bestand aan in /etc/sudoers.d

De eerste stap is een script (shell bestand) aanmaken om Vino te starten.
Dit script maken we aan in de /etc/sudoers.d directory.
We doen dit om er zeker van te zijn dat het script wordt gestart met de juiste rechten voor elke gebruiker.
Maak het script aan met het volgende commando:

sudo nano /etc/sudoers.d/vinosrv.sh

Stap 10.2 - Geef de programma code op voor het script.

Zet de volgend code in het script dat in stap 10.1 is aangemaakt.

#! /bin/bash             
/usr/lib/vino/vino-server

De eerste regel (#! /bin/bash) zorgt ervoor dat het systeem het script moet proberen uit te voeren.
De tweede regel start de Vino server op.

Controleer de code en sluit de editor af met de toetsen combinatie: Ctrl-X, dan Y, dan Enter.
Hiermee wordt het bestand tevens opgeslagen.

Stap 10.3 - Maak het script uitvoerbaar (executable).

Om het bestand /etc/sudoers.d/vinosrv.sh uitvoerbaar te maken moet het de juiste eigenschappen hebben.
We doen dat met het volgende commando:

sudo chmod +x /etc/sudoers.d/vinosrv.sh

Het commando chmod +x op een bestand (in dit geval een script) maakt bestand (of script) het uitvoerbaar.
Je kunt dit ook doen met de File manager.
Ga met de muis op het bestand staan en klik Properties dan Permissions dan Allow control.
In de Exectute box, kies Anyone. Dat geeft hetzelfde resultaat.

Stap 10.4 - Voeg het script toe aan auto start.

Het script is in de vorige stap uitvoerbaar gemaakt, nu moeten we het toevoegen aan de autostart van LXDE. LXDE? Wat is dat? LXDE is de desktop van je Raspberry Pi.
LXDE is een "lichtgewicht" desktop voor Linux en andere Unix achtige systemen.
LXDE is een afkorting van Lightweight C11 Desktop Environment.

Het shell script moet toegevoegd worden aan autostart.
Het autostart is ook weer een bestand en bevindt zich in de directory /etc/xdg/lxsession/LXDE-pi/ en heet, hoe raad je het autostart.
Het commando om dit bestand aan te passen:

sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

Aan dit bestand moet de folgende regel worden toegevoegd. We doen dit aan het einde van dit bestand.

@/etc/sudoers.d/vinosrv.sh

Daarna zou je autostart bestand er op het einde uit kunnen zien zoals hier beneden getoond.

@lxpanel --profile LXDE-pi            
@pcmanfm --desktop --profile LXDE-pi  
@xscreensaver -no-splash              
@point-rpi                            
@/etc/sudoers.d/vinosrv.sh            

Controleer de laatste regel en sluit de editor af met de toetsen combinatie: Ctrl-X, dan Y, dan Enter.
Hiermee wordt het bestand tevens opgeslagen.

Stap 10.5 - Herstart het systeem.

Herstart het ssyteem met het volgende commando:

sudo reboot

Als de Raspberry Pi opnieuw is opgestart, probeer via VNC te verbinden.
Als dat lukt dan heb je berikt wat je wilde bereiken.

Back to top