
L'objectiu d'aquest article és mostrar com podem tenir un servidor remot sempre al nostre abast amb VNC i una Raspberry Pi sense teclat, ratolí ni monitor.
Instal·lem els següents programes per a tenir un escriptori LXQt remot amb VNC sempre disponible:
sudo apt update
sudo apt install tigervnc-standalone-server tigervnc-common tigervnc-tools lxqt-core lxqt-session lxqt-panel pcmanfm-qt openbox dbus-x11 xdg-user-dirs
És molt important la seguretat. Ens crearem una contrasenya per a totes les sessions de connexió remota:
vncpasswd
Anem a crear un script que inicie TigerVNC sempre que iniciem l'escriptori LXQt. Editarem el fitxer ~/.vnc/xstartup i afegirem el següent:
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
#
export XDG_RUNTIME_DIR=/run/user/$(id -u)
if [ ! -d "$XDG_RUNTIME_DIR" ]; then
export XDG_RUNTIME_DIR="$HOME/.xdg-runtime"
mkdir -p "$XDG_RUNTIME_DIR"
chmod 700 "$XDG_RUNTIME_DIR"
fi
#
xrdb "$HOME/.Xresources" 2>/dev/null
exec dbus-launch --exit-with-session startlxqt
I farem que siga executable:
chmod +x ~/.vnc/xstartup
Prova manual
Anem a fer la primera prova. Anem a iniciar manualment el servidor VNC i ens hauria d'obrir un escriptori LXQt:
vncserver -localhost no -geometry 1920x1080 -depth 24 :1
Ens connectarem des de quaslevol ordinador de la nostra LAN:
vncviewer 192.168.1.10:1
Funciona perfectament! aleshores, ja podem automatitzar tenir un escriptori sempre disponible.
Un servei que inicie l'escriptori quan encenem la Raspberry Pi
Ara farem que el servidor TigerVNC s’inicie automàticament cada vegada que la Raspberry arranque de manera autònoma. Ho farem amb un servei systemd d’usuari, que és la manera més neta i moderna (no cal tocar /etc ni executar com a root).
Crearem el fitxer vncserver.server:
joan@r5:~ $ mkdir -p ~/.config/systemd/user
joan@r5:~ $ vi .config/systemd/user/vncserver.service
Afegirem el següent codi:
[Unit]
Description=TigerVNC LXQt Server
After=graphical-session.target network.target
#
[Service]
Type=forking
ExecStart=/usr/bin/vncserver -localhost no -geometry 1920x1080 -depth 24 :1
ExecStop=/usr/bin/vncserver -kill :1
Restart=on-failure
#
# Directori HOME correcte
WorkingDirectory=%h
Environment=DISPLAY=:1
Environment=XDG_RUNTIME_DIR=/run/user/%U
#
[Install]
WantedBy=default.target
Habilitarem el “linger” perquè systemd d’usuari s’execute al boot, Això permet que els serveis “d’usuari” s’executin encara que no hi hagi sessió iniciada.. Ho farem de la següent manera:
sudo loginctl enable-linger $USER
Carreguem el servei i reiniciem la màquina:
systemctl --user daemon-reload
sudo reboot
Ja tenim un servidor sense monitor servint sempre un escriptori remot amb VNC.