
Anem a configurar un ordinador per a que tinga x11vnc, el qual permet mostrar via VNC l'escriptori actual, i també novnc (que és un client HTML5 + JavaScript que ens permetrà obrir l'escriptori amb VNC però des de qualsevol navegador web.
Instal·lem x11vnc:
sudo apt-get install x11vnc
Instal·lem novnc i websockify:
sudo apt install novnc websockify
Executem x11vnc:
./x11vnc
Ens fixem en el port, imaginem que és :5901.
I ara executem novnc:
/usr/share/novnc/utils/novnc_proxy --vnc localhost:5901 --listen 6080
Això fa dues coses, per una banda websockify crea un pont entre el navegador (WebSockets) i el port VNC, i per altra banda novnc_proxy serveix la interfície web (HTML/JS) al port 6080.
Finalment, per a connectar-nos des de qualsevol ordinador de la nostra xarxa, escriurem el següent en qualsevol navegador:
http://IP_DEL_SERVIDOR:6080/vnc.html
I així ja veurem la pantalla de connexió de noVNC i quan accedim, ja veurem l'escriptori actual:
Connexió persistent sempre disponible!
Si volem que la connexió estiga sempre activa, podrem executar les següents dues ordres. D'aquesta manera x11vnc es quedarà sempre escoltant peticions (paràmetre -forever) encara que tanquem la pestanya del navegador o ens connectem des d'altres ordinadors. El servidor novnc_proxy també quede actiu permanentment al port 6080.
Amb nohup, tots dos processos seguiran funcionant encara que tanques el terminal o la sessió SSH.
nohup x11vnc -forever -nopw -display :0 &
nohup /usr/share/novnc/utils/novnc_proxy --vnc localhost:5900 --listen 6080 &
Iniciant x11vnc des de l'inici del sistema
I si això t'acaba de funcionar, ara podem configurar dos fitxers que iniciaran x11vnc i novnc quan inicie l'escriptori LXQt, de manera que si reiniciem la Raspberry Pi o s'envà la llum, una vegada torne a iniciar l'escriptori remot estarà disponible una altra vegada.
Crearem el directori autostart dins de ~/.config així:
mkdir -p /home/joan/.config/autostart
I ara crearem un fitxer per al x11vnc així:
vi /home/joan/.config/autostart/x11vnc.desktop
Amb el següent valor:
[Desktop Entry]
Type=Application
Name=x11vnc
Exec=x11vnc -forever -nopw -display :0 -bg -o /home/joan/x11vnc.log
StartupNotify=false
Terminal=false
I també crearem un fitxer en autostart per al novnc així:
vi /home/joan/.config/autostart/novnc.desktop
Amb el següent valor:
[Desktop Entry]
Type=Application
Name=noVNC
Exec=/usr/share/novnc/utils/novnc_proxy --vnc localhost:5900 --listen 6080
StartupNotify=false
Terminal=false
I ja ho tenim. Sempre que reiniciem la Raspberry Pi, no caldrà executar res, tindrem l'escriptori disponible via HTTP amb novnc.
Configurant una contrasenya d'accès al sistema
Per seguretat, sempre cal configurar una contrasenya en un entorn on fem servir VNC o x11vnc. Com que estem executant x11vnc, podem configurar una contrasenya amb:
$ x11vnc -storepasswd
Enter VNC password:
Verify password:
Write password to /home/joan/.vnc/passwd? [y]/n
Password written to: /home/joan/.vnc/passwd
joan@thinkpad:~$
Això ens ha desat la contrasenya a /home/joan/.vnc/passwd
I ara, si volem que x11vnc ens demane la contrasenya, afegirem al final el paràmetre:
-rfbauth /home/joan/.vnc/passwd
Aleshores, en comptes d'executar x11vnc simplement així en l'arranc:
$ cat .config/autostart/x11vnc.desktop
[Desktop Entry]
Type=Application
Name=x11vnc
Exec=x11vnc -forever -display :0 -bg -o /home/joan/x11vnc.log -rfbauth /home/joan/.vnc/passwd
StartupNotify=false
Terminal=false
Ho reemplaçarem per:
$ cat .config/autostart/x11vnc.desktop
[Desktop Entry]
Type=Application
Name=x11vnc
Exec=x11vnc -forever -display :0 -bg -o /home/joan/x11vnc.log -rfbauth /home/joan/.vnc/passwd
StartupNotify=false
Terminal=false
I així sempre ens demanarà la contrasenya:
Des d'internet, fora de la teua xarxa local (LAN)
També podem arribar a connectar-nos al noVNC instal·lat a l'ordinador fàcilment. Caldrà que configures una NAT en el teu router i li digues que totes les peticions del port del novnc_proxy 6080 es dirigisquen a la IP de l'ordinador al que et vols connectar.
Ara caldrà que configures un domini/subdomini dinàmic a la IP pública del teu router. Jo faig servir Afraid DNS des de fa molts anys, perquè és FreeBSD i és molt robust.
Aleshores, una vegada ja tens feta la NAT en el teu router i tens un domini, ja pots escriure la url HTTP abans explicada i el router atendrà eixa petició i apuntarà a l'ordinador amb el servidor x11vnc.
Ara, com que estem fora de casa connectats a internet, podrem connectar-nos amb un smartphone o una tauleta, de igual manera que quan treballem amb una AsiAir Plus, és a dir, que pots tenir l'ordinador connectat al telescopi i tu pots estar a uns metres del telescopi amb una tauleta sense necessitat d'estar davant del telescopi per a gestionar físicament l'ordinador: