Si vous souhaitez utiliser votre serveur comme un ordinateur et travailler à distance avec des documents à l’aide de l’interface graphique, ou si vous ne souhaitez pas travailler avec le serveur via SSH, vous pouvez utiliser VNC (Virtual Network Computing).
On va configurer le serveur VNC avec l’aide TightVNC sur Ubuntu 20.04 avec l’interface graphique Xfce et connecter un ordinateur local avec un programme client VNC via un tunnel sécurisé SSH et installer Firefox et Libreoffice.
Pour faire ce projet je vais utiliser:
- Virtual private server (VPS): 3 vCore, 2.5 GB RAM, 40 GB SSD, 1Gbps (https://www.racknerd.com/) avec Ubuntu 20.04. Pour le test je vais utiliser utilisateur root. Mais pour le travail il faut créer un autre utilisateur sudoers (qui a le droit d’exécuter la commande sudo).
- Ordinateur local – laptop avec VNC client et MobaXterm
Installation d’une interface graphique (GUI) sur VPS
Puisque notre serveur sera utilisé comme un ordinateur normal, vous devez installer une interface graphique. On va installer le xfce car il utilise le moins de ressources:
sudo apt install xfce4 xfce4-goodies
J’ai choisi LightDM parce qu’il consomme beaucoup moins de ressources 🙂
Installation TightVNC sur Ubuntu 20.04
Pour installer il faut exécuter:
sudo apt install tightvncserver
Maintenant on va configurer mot de passe pour VNC. Le mot de passe doit comporter entre 6 et 8 caractères. Les mots de passe de plus de 8 caractères seront automatiquement tronqués.
vncserver
Pour changer le mot de passe:
vncpasswd
Configuration d’un serveur VNC
Vous devez d’abord arrêter le serveur VNC en cours d’exécution en utilisant l’option kill
vncserver -kill :1
Avant de modifier le fichier xstartup, vous devez sauvegarder le fichier d’origine:
mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
Il faut corriger le file:
nano ~/.vnc/xstartup
Il faut ajouter:
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
Ce script exécute démarrage de startxfce4
Pour que le serveur VNC utilise correctement le nouveau script, vous devez le rendre exécutable:
chmod +x ~/.vnc/xstartup
Redémarrez ensuite le serveur VNC avec l’option -localhost, qui lie le serveur VNC à l’interface de votre serveur. Grâce à cela, VNC n’autorise que les connexions provenant du serveur sur lequel il est installé.
vncserver -localhost
Création d’un tunnel SSH entre votre ordinateur local (avec Linux) et votre serveur:
Cela ajoute une couche de sécurité supplémentaire car seuls les utilisateurs qui ont déjà un accès SSH à votre serveur peuvent y accéder (j’ai caché les derniers chiffres de mon IP!).
ssh -L 61000:localhost:5901 -C -N -l root 192.210.XXX.XXX
-L 59000 : localhost : 5901 : l’option -L spécifie que le port donné sur l’ordinateur local (59000) doit être transféré vers localhost : 5901
-C : ce active la compression
-N : cette option indique à ssh que vous ne souhaitez exécuter aucune commande à distance, uniquement la redirection de port.
-l user your_server_ip : L’option -l permet de définir l’utilisateur qui doit se connecter après s’être connecté au serveur.
Si vous utiliser MobaXterm
Une fois la connexion établie, on utilise le client VNC pour se connecter au serveur. On utilise l’adresse et mot de passe pour connection:
localhost:61000
Comme ça on peut commencer à utiliser notre vps comme ordinateur à distance! Mai on va aller loin!
Exécuter VNC en tant que le service système
La configuration de VNC en tant que le service systemd vous permettra de le démarrer, de l’arrêter ou de le redémarrer comme n’importe quel autre service
créer un nouveau fichier bloc: /etc/systemd/system/[email protected]
nano /etc/systemd/system/[email protected]
Ajoutez les lignes suivantes au fichier. Assurez-vous de remplacer les valeurs des paramètres User, Group, WorkingDirectory et Username par les valeurs PIDFILE qui correspondent à votre nom d’utilisateur :
[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target
[Service]
Type=forking
User=root
Group=root
WorkingDirectory=/root
PIDFile=/root/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
On va redémarrer demon
systemctl daemon-reload
Activation service
systemctl enable [email protected]
Vous devez d’abord arrêter le serveur VNC en cours d’exécution en utilisant l’option kill
vncserver -kill :1
Démarrez les serveurs VNC comme n’importe quel autre service systemd :
systemctl start vncserver@1
Verification statut:
systemctl status vncserver@1
Votre serveur VNC est maintenant prêt à être utilisé lorsque vous démarrez votre serveur, et vous pouvez le gérer avec les commandes systemctl comme tout autre service systemd.
Maintenant on va installer quelques logiciels pour avoir un vrais ordinateur de bureau:
Premierement on va installer Firefox:
apt install firefox
Voilà, Firefox est installé:
Et maintenant on va installer Libreoffice:
apt install libreoffice
Après l’installation on peut le trouver dans le menu:
Et voilà, finalement on peut travailler:
Bonne chance!