Tightvnc Viewer
TightVNC Portable is a popular Open Source VNC Viewer that can be stored and run as a Portable VNC Viewer. Virtual Network Computing (VNC) enables a user to view the desktop of a remote machine and control it with a the mouse and keyboard from a local machine as if you were sitting right in front of the remote computer. Undeniably, TeamViewer is the best VNC in the market. Virtual Network Connection software, also known as remote desktop software allows you to control a client’s device, be it an Android Tablet, or iPhone via another computer. 😭 😍 😂 13 Free Work From Home ‘Remote Working’ Software – Collaboration, Chats, & Video Conferencing.
This is a guide to installing TightVNC on the Raspberry Pi. The latest version of Raspbian now includes the RealVNC which is an alternative remote desktop tool. If you would prefer to use RealVNC then it is easily enabled through the raspi-config tool, this guide will be useful for those wanting to understand about creating other applications to run on start-up through systemd.
The command line is a great way to manage a remote Linux computer if you don't mind typing in commands, but sometimes you need to be able to view a GUI. Short of a very long cable one of the best ways of doing this is using the VNC protocol (Virtual Network Computing).
TightVNC vs Real VNC
The TightVNC server creates a different virtual window which is replicated on a different machine using the TightVNC client. This differs from RealVNC which normally usually echos the default screen.
Vnc-java - VNC java applet and command line program. Xrdp - Remote Desktop Protocol (RDP) server. Xtightvncviewer - virtual network computing client software for X. Xvnc4viewer - Virtual network computing client software for X. Tigervnc-viewer - 'TigerVNC is a high-performance, platform-neutral implementation of VNC' remmina-plugin-vnc. The version of TightVNC Viewer you are about to download is 2.8.3. The download is provided as is, with no modifications or changes made on our side. The download was scanned for viruses by our system. We also recommend you to check the files before installation. This download is provided to you free of charge.
When most people think of a remote desktop tool then they usually think of the way that RealVNC operates. In this case when you move the mouse, or launch an application it displays the same output on a physically attached screen (normally HDMI) and on a remote client over the network.
TightVNC is useful if you want to run something different to what is on the main screen. For example you could use it so that you can have a status display on the main screen (via HDMI) with a different display used for the configuration which is displayed on a laptop.
Another advantage of TightVNC is that it is FREE open source software. As such it has no restrictions on use and you can view and modify the source code. Real VNC is a commercial version of VNC and needs to be licensed. Real VNC is free to use for personal use on the Raspberry Pi, but does have restrictions if you want to do other things with it which may require a commercial license. This includes running the Raspbian Desktop image on a PC as that does not included the commercial software.
Installing a start-up script using Systemd
The following are instructions on how to configure this on the Raspberry Pi (Debian based distribution). It should be similar for any other Debian based distribution (eg. Ubuntu) which uses Systemd start-up files. Some other distributions use different software install tools and possibly different init setup tools.
If this is used in combination with the guide to running the Raspberry Pi headless with Debian Linux then it can be used to setup a Raspberry Pi for remote access without ever needing to connect it to a monitor.
Choosing TightVNC
There are several software projects that support VNC. I have chosen to use TightVNC because it is free open source software (GPL2), provides compression to allow it to work over a slow network (Internet) and is readily available in the software repositories.
Client server model
VNC follows the traditional client sever model. The server software runs on the host to be accessed, and client software runs on the local machine that wishes to control the host. The server and client do not have to be the same (eg. the client can be RealVNC when the server is TightVNC), but some features may only work when the same client and server are used.
Install the TightVNC server software
First refresh the software repository information usingsudo apt update
This is particularly important if you have just installed the operating system as the repository information may be incomplete.
Install the server software from the repositories:sudo apt install tightvncserver
Tightvnc Viewer Error
Start server and configure a password
The first time you run the server it will prompt you to set a password. This is the password that you use when connecting remotely.
/usr/bin/tightvncserver
There is no need to create a view only password, unless you have a specific need.
When the server starts it will tell you which virtual desktop has been setup. In this case:New 'X' desktop is raspberrypi:1
says that it's virtual desktop 1. You would connect to this using :1 at the end of the IP address in the client, this is the one we will setup to start automatically later.
You can run multiple instances. Each time you start tightvncserver it will use the next available desktop, but in most cases you will just need one.
Adding Tightvnc to systemd startup
To have Tightvnc startup automatically we need to create a new startup file, which needs to be stored in the /etc/systemd/system/ directory and end with the suffix '.service'. I called this tightvncserver.service. This needs to be created as the root user so using sudosudo nano /etc/systemd/system/tightvncserver.service
Tightvnc Viewer Black Screen
You may need to change the user name on line 8. It is currently set to pi which is the default username on the Raspberry Pi Raspbian image. Set this to whatever username you want to login to TightVNC as. Do not put root as the user.
Change the file so it is owned by rootsudo chown root:root /etc/systemd/system/tightvncserver.service
Make the file executable by runningsudo chmod 755 /etc/systemd/system/tightvncserver.service
It's a good idea to test the script at this point rather than waiting until after a reboot. This is done using:sudo systemctl start tightvncserver.service
Don't worry if you get the following error message, which is because you've already started tightvncA VNC server is already running as :1
Enable startup at boot usingsudo systemctl enable tightvncserver.service
TightVNC will now start at startup. I'd recommend you reboot at this point to make sure it's working but youc an just stop and start the service using the systemctl command instead.
Note that this is designed for running only one instance of TightVNC on the computer. If you want to be able to start and stop specific instances of TightVNC then you will need to tweak the startup script appropriately.
Installing Tightvnc viewer (VNC client) on a Linux computer
On a Linux computer you can install the viewer withsudo apt install xtightvncviewer
or if that is not in the repositories try:sudo apt-get install ssvnc
This will work with Debian / Ubuntu based distributions only, for other distributions use the normal package manager.
Note that ssvnc - which is the version I installed on my Kubuntu computer is based on tightvnc, but also has the ability to configure the ssh tunnelling (see later) through the GUI.
Login usingxtightvncviewer 192.168.1.6:1
(replace with your own IP address as appropriate)
Installing Tightvnc view on a Windows computer
To access from Windows or using the Java Client download from TightVNC.com
Securing TightVNC
TightVNC allows anyone that knows the password to login as the user that it's running under. It also does this without encryption so anyone can snoop in on the session. Fortunately there is a secure solution, which is to tunnel the connection over an ssh (secure shell) login.
First step is to restrict Tightvnc to the local computer only. This is done by adding the option -localhost when starting the tightvncserver. To do this edit line 7 in the /etc/systemd/system/tightvncserver.service file to read:
Tightvnc Viewer Mac
Then restart the server.
To login using ssh - first login to the host computer using sshssh pi@192.168.1.6 -L 5901:localhost:5901
The -L option creates the tunnel, from the current computer (default) port 5901 to the host computer (as localhost) port 5901. Port 5901 is the default port for display 1, 5902 for display 2 etc.
To connect using tightvnc now use the commandxtightvncviewer 127.0.0.1:1
Note that your previous terminal will now be logged into the Raspberry Pi so you will need to start a new terminal or tab to run the viewer.
If using Windows then the ssh tunnel can be created from within PuTTY
Then connect using the vnc client using 127.0.0.1:1.
You can now use the GUI to run applications on the Raspberry Pi without needing a monitor or keyboard. If you have port forwarding set on your router you can do this over the Internet.
Starting your window manager
The instructions above are sufficient for the Raspberry Pi running Raspbian (Debian). On other systems you may need to make a further configuration change to start your normal window manager / application launcher. If you get a blank screen when connecting edit the file ~/.vnc/xstartup and replace the line /etc/X11/Xsession with one of the following as appropriate.
Tightvnc Viewer For Windows
For instance with Ubuntu you would use the entry for gnome, for xubuntu you would use xfce and for kubuntu use kde. The Raspberry Pi uses lxde, but this is started automatically on the Raspberry Pi there is no need to add it to the xstartup file.