Z racji tego, że ze swoimi Raspberry Pi – podobnie jak z serwerami – najczęściej łącze się zdalnie (bez korzystania z klawiatury podpiętej bezpośrednio do Pi), to w tym przypadku oprócz SSH do pracy „w konsoli” czasem potrzebuje skorzystać z interfejsu graficznego –  w tym celu przyda się serwer VNC.

Na potrzeby tego poradnika wybrałem TightVNC, który oprócz tego, że jest darmowy jest też relatywnie prosty w konfiguracji i instalacji, o czym mam nadzieję zaraz się przekonacie…

TightVNC

Zaczynamy od zalogowania się do konsoli Pi, i wprowadzenia komendy:

sudo apt-get install tightvncserver -y

Sama instalacja jest wręcz banalna, dzięki temu, że program znajduje się w standardowych repozytoriach (zasobach) Debiana.

Uruchomienie serwera VNC

Po instalacji serwer VNC (TightVNC) uruchamiamy poleceniem:

/usr/bin/tightvncserver

raspberry-pi_ssh_vnc_1st-start

Przy pierwszym uruchomieniu (dla każdego użytkownika) musimy zdefiniować hasło. Można też zdefiniować dodatkowe hasło „tylko do odczytu”, przydatne np. dla szkoleń.

Warto zwrócić uwagę na linijkę:

New 'X' desktop is raspberrypi:1

Jest to informacja, że serwer VNC „czeka na nas” na hoście „raspberrypi” (może być też adres IP) w (małe uproszczenie) „pierwszej instancji”.

Jest to o tyle istotna informacja, że łącząc się po VNC z Pi oprócz nazwy hosta/adresu IP musimy podać też do której instancji się chcemy podłączyć – ma to znaczeni zwłaszcza, gdy z systemu (po VNC) korzysta „na raz” więcej niż jedna osoba, wtedy każdy użytkownik ma swoją instancje, swoje hasło.

Można też ręcznie „wymusić” z jakim numerem (jeśli będzie wolny) chcemy mieć swoją instancję, robimy to poprzez małą modyfikację polecenia uruchamiającego:

/usr/bin/tightvncserver :x

Gdzie za x wstawiamy odpowiednią cyfrę:

raspberry-pi_ssh_vnc_start

Łączymy się ze zdalnym pulpitem

Gdy serwer VNC na Raspberry Pi mamy zainstalowany, skonfigurowany i uruchomiony możemy się połączyć zdalnie za pomocą klienta którego instalujemy na komputerze (odpowiedniego dla Waszego systemu klienta TightVNC możecie pobrać na tej stronie).

Uruchamiamy klienta i wpisujemy odpowiedni „adres”:

Nazwa_hosta:1

lub:

Adres_IP:1

Gdzie:

  • Nazwa_hosta – to nazwa komputera Raspberry Pi, domyślnie „raspberrypi”
  • Adres_IP – to lokalny adres IP pod którym Raspberry Pi znajduje się w sieci, np.: 192.168.1.1

raspberry-pi_vnc01

I wpisujemy zdefiniowane wcześniej hasło:

raspberry-pi_vnc02

Jeśli wszystko przebiegło bez problemów powinniśmy zobaczyć „wirtualny pulpit”:

raspberry-pi_vnc03

Automatyczny start serwera VNC

Jeśli zamierzacie korzystać regularnie z serwera VNC (np. na Raspberry Pi) warto skonfigurować całość tak, by serwer startował automatycznie po każdym uruchomieniu Pi.

Metod/poradników w Internecie wprawdzie jest wiele, ale podam choć jedną metodę „krok po kroku” – będzie to metoda wielokrotnie przeze mnie sprawdzona.

Zaczynamy od utworzenia odpowiedniego „skryptu startowego” korzystając z edytora Nano:

sudo nano /etc/init.d/tightvncserver

I wklejamy (korzystając z SSH/PuTTy możemy użyć kopiuj/wklej) lub wpisujemy tam kod:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          tightvncserver
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/stop tightvncserver
### END INIT INFO

# More details see:
# http://www.penguintutor.com/linux/tightvnc

### Customize this entry
# Set the USER variable to the name of the user to start tightvncserver under
export USER='patryk'
### End customization required

eval cd ~$USER

case "$1" in
  start)
    su $USER -c '/usr/bin/tightvncserver :1'
    echo "Starting TightVNC server for $USER "
    ;;
  stop)
    pkill Xtightvnc
    echo "Tightvncserver stopped"
    ;;
  *)
    echo "Usage: /etc/init.d/tightvncserver {start|stop}"
    exit 1
    ;;
esac
exit 0

Zwracam uwagę na fragmenty:

export USER='patryk'

Zamiast „patryk” wpiszcie tam własną nazwę użytkownika.

su $USER -c '/usr/bin/tightvncserver :1'

Zamiast „:1” możemy podać inny numer „ekranu”.

Pobieranie skryptu

Skrypt możecie pobrać bezpośrednio ze strony autora:

wget http://www.penguintutor.com/otherfiles/tightvncserver-init.txt
sudo mv tightvncserver-init.txt /etc/init.d/tightvncserver

Lub z naszego serwera:

wget https://webinsider.pl/add/download/?link=raspberrypi_vnc_tightvncserver_initd -O tightvncserver
sudo nano tightvncserver /etc/init.d/tightvncserver

Gdy już zmienicie nazwę „na własną” wychodzimy z Nano (CTRL+X i następnie Y).

Kolejny krok to nadanie odpowiednich uprawnień/atrybutów właśnie utworzonemu plikowi:

sudo chmod 755 /etc/init.d/tightvncserver

I na koniec:

sudo update-rc.d tightvncserver defaults

Po tej operacji serwer VNC powinien startować automatycznie – wystarczy uruchomić Pi ponownie by się o tym przekonać… ;-)

Można tez przetestować ręcznie działanie komendy „start” i „stop” korzystając z poleceń:

sudo /etc/init.d/tightvncserver start
sudo /etc/init.d/tightvncserver stop

Automatyczny start dla więcej niż jednego użytkownika

Czasem może pojawić się potrzeba, by uruchamiać serwer VNC automatycznie dla więcej niż jednego użytkownika naraz – pewnie można to zrobić poprzez modyfikacje (rozbudowę) skryptu – zwłaszcza przy większej ilości użytkowników, przydatna może okazać się jakaś pętla.

Ale na razie sposób prostszy, a zarazem daje możliwość relatywnie łatwego zarządzania użytkownikami, bo każdy (dodatkowy) użytkownik będzie miał swój plik – swoją własną usługę.

Zaczynamy od skopiowania skryptu uruchamiającego – w tym przykładzie nowy użytkownik to „Patryk”:

sudo cp /etc/init.d/tightvncserver /etc/init.d/tightvncserver_patryk

Następnie musimy dokonać w nim kilku zmian poprzez modyfikacje linijek 3, 8, 23, 31 i oczywiście 16:

sudo nano /etc/init.d/tightvncserver_patryk

I dokonujemy kilku modyfikacji:

# Provides:          tightvncserver_patryk
# Short-Description: Start/stop tightvncserver_patryk

export USER='patryk'

# Każdy użytkownik musi mieć unikatowy numer "ekranu"
# W tym wypadku 2gi użytkownik a więc :2
su $USER -c '/usr/bin/tightvncserver :2'

echo "Usage: /etc/init.d/tightvncserver_patryk {start|stop}"

Po zapisaniu zmian dodajemy skrypt do „autostartu” za pomocą polecenia:

sudo update-rc.d tightvncserver_patryk defaults

Teraz wystarczy uruchomić nową usługę by sprawdzić czy wszystko działa:

sudo /etc/init.d/tightvncserver_patryk start

raspberry-pi_tightvncserver_2gi-uzytkownik

Oczywiście w kliencie jako adres serwera podajemy :2 dla tego użytkownika, a więc np.:

  • raspberrypi:2
  • adres_IP:2

Jeśli zajdzie potrzeba wyłączenia automatycznego startu serwera VNC dla jakiegoś użytkownika wystarczy skorzystać z polecenia:

sudo update-rc.d -f tightvncserver_patryk remove

Zmiana hasła do serwera VNC

By zmienić hasło do serwera VNC wystarczy zalogować się do systemu np. po SSH na wybranego użytkownika i skorzystać z polecenia:

vncpasswd

Tak jak za pierwszym razem – podajemy nowe hasło, powtarzamy je, a w razie potrzeby tworzymy też hasło tylko do odczytu.

Można też „mniej subtelnie” – kasując plik:

rm ~/.vnc/passwd

Gdzie „~” oznacza katalog domowy użytkownika.

(!) Zgłoś błąd na stronie
Pomogłem? To może postawisz mi wirtualną kawę?
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Patryk