Select Page

A prior model of this educational used to be written through finid.


Digital Community Computing, or VNC, is a connection machine that lets you use your keyboard and mouse to have interaction with a graphical desktop setting on a far flung server. It makes managing recordsdata, instrument, and settings on a far flung server more uncomplicated for customers who aren’t but ok with the command line.

On this information, you can arrange a VNC server on an Ubuntu 18.04 server and hook up with it securely via an SSH tunnel. You’ll be able to use TightVNC, a quick and light-weight far flung regulate package deal. This selection will be sure that our VNC connection shall be easy and strong even on slower web connections.

Must haves

To finish this educational, you can want:

Step 1 — Putting in the Desktop Atmosphere and VNC Server

Via default, an Ubuntu 18.04 server does now not include a graphical desktop setting or a VNC server put in, so we will start through putting in the ones. In particular, we can set up programs for the most recent Xfce desktop setting and the TightVNC package deal to be had within the legitimate Ubuntu repository.

In your server, replace your checklist of programs:

Now set up the Xfce desktop setting to your server:

  • sudo apt set up xfce4 xfce4-goodies

As soon as that set up completes, set up the TightVNC server:

  • sudo apt set up tightvncserver

To finish the VNC server’s preliminary configuration after set up, use the vncserver command to arrange a safe password and create the preliminary configuration recordsdata:

You’ll be able to be induced to go into and check a password to get entry to your gadget remotely:


You're going to require a password to get entry to your desktops. Password: Check:

The password will have to be between six and 8 characters lengthy. Passwords greater than eight characters shall be truncated robotically.

If you check the password, you can give you the chance to create a a view-only password. Customers who log in with the view-only password will be unable to regulate the VNC example with their mouse or keyboard. This can be a useful choice if you wish to show one thing to folks the use of your VNC server, however this is not required.

The method then creates the important default configuration recordsdata and connection data for the server:


Do you want to go into a view-only password (y/n)? n xauth: report /house/sammy/.Xauthority does now not exist New 'X' desktop is your_hostname:1 Growing default startup script /house/sammy/.vnc/xstartup Beginning programs laid out in /house/sammy/.vnc/xstartup Log report is /house/sammy/.vnc/your_hostname:1.log

Now let’s configure the VNC server.

Step 2 — Configuring the VNC Server

The VNC server wishes to understand which instructions to execute when it begins up. In particular, VNC wishes to understand which graphical desktop it will have to hook up with.

Those instructions are positioned in a configuration report referred to as xstartup within the .vnc folder underneath your own home listing. The startup script used to be created whilst you ran the vncserver within the earlier step, however we will create our personal to release the Xfce desktop.

When VNC is first arrange, it launches a default server example on port 5901. This port is named a show port, and is referred to through VNC as :1. VNC can release a couple of cases on different show ports, like :2, :3, and so forth.

As a result of we’re going to be converting how the VNC server is configured, first forestall the VNC server example this is working on port 5901 with the next command:

The output will have to appear to be this, even though you can see a unique PID:


Killing Xtightvnc procedure ID 17648

Earlier than you regulate the xstartup report, again up the unique:

  • mv ~/.vnc/xstartup ~/.vnc/xstartup.bak

Now create a brand new xstartup report and open it on your textual content editor:

Instructions on this report are completed robotically on every occasion you get started or restart the VNC server. We’d like VNC to start out our desktop setting if it isn’t already began. Upload those instructions to the report:


#!/bin/bash xrdb $HOME/.Xresources startxfce4 &

The primary command within the report, xrdb $HOME/.Xresources, tells VNC’s GUI framework to learn the server person’s .Xresources report. .Xresources is the place a person could make adjustments to sure settings of the graphical desktop, like terminal colours, cursor issues, and font rendering. The second one command tells the server to release Xfce, which is the place you are going to in finding all the graphical instrument that you want to with ease set up your server.

To be sure that the VNC server will have the ability to use this new startup report correctly, we will wish to make it executable.

  • sudo chmod +x ~/.vnc/xstartup

Now, restart the VNC server.

You’ll be able to see output very similar to this:


New 'X' desktop is your_hostname:1 Beginning programs laid out in /house/sammy/.vnc/xstartup Log report is /house/sammy/.vnc/your_hostname:1.log

With the configuration in position, let’s hook up with the server from our native gadget.

Step 3 — Connecting the VNC Desktop Securely

VNC itself does not use safe protocols when connecting. We will use an SSH tunnel to attach securely to our server, after which inform our VNC consumer to make use of that tunnel somewhat than making an instantaneous connection.

Create an SSH connection to your native pc that securely forwards to the localhost connection for VNC. You’ll be able to do that by the use of the terminal on Linux or macOS with the next command:

  • ssh -L 5901: -C -N -l sammy your_server_ip

The -L transfer specifies the port bindings. On this case we are binding port 5901 of the far flung connection to port 5901 to your native gadget. The -C transfer permits compression, whilst the -N transfer tells ssh that we do not wish to execute a far flung command. The -l transfer specifies the far flung login identify.

Take note to exchange sammy and your_server_ip with the sudo non-root username and IP deal with of your server.

If you’re the use of a graphical SSH consumer, like PuTTY, use your_server_ip as the relationship IP, and set localhost:5901 as a brand new forwarded port in this system’s SSH tunnel settings.

As soon as the tunnel is working, use a VNC consumer to connect with localhost:5901. You’ll be able to be induced to authenticate the use of the password you put in Step 1.

As soon as you might be attached, you can see the default Xfce desktop. It will have to glance one thing like this:

VNC connection to Ubuntu 18.04 server

You’ll be able to get entry to recordsdata in your house listing with the report supervisor or from the command line, as noticed right here:

Files via VNC connection to Ubuntu 18.04

Press CTRL+C on your terminal to prevent the SSH tunnel and go back on your advised. This may disconnect your VNC consultation as neatly.

Subsequent let’s arrange our VNC server as a provider.

Step 4 — Working VNC as a Device Provider

Subsequent, we will arrange the VNC server as a systemd provider so we will get started, forestall, and restart it as wanted, like another provider. This may additionally be sure that VNC begins up when your server reboots.

First, create a brand new unit report referred to as /and many others/systemd/machine/vncserver@.provider the use of your favourite textual content editor:

  • sudo nano /and many others/systemd/machine/vncserver@.provider

The @ image on the finish of the identify will allow us to move in an issue we will use within the provider configuration. We will use this to specify the VNC show port we wish to use after we set up the provider.

Upload the next strains to the report. Be sure you alternate the worth of Person, Team, WorkingDirectory, and the username within the price of PIDFILE to compare your username:

/and many others/systemd/machine/vncserver@.provider

[Unit] Description=Get started TightVNC server at startup After=syslog.goal community.goal [Service] Sort=forking Person=sammy Team=sammy WorkingDirectory=/house/sammy PIDFile=/house/sammy/.vnc/ ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=multi-user.goal

The ExecStartPre command stops VNC if it is already working. The ExecStart command begins VNC and units the colour intensity to 24-bit colour with a answer of 1280×800. You’ll be able to regulate those startup choices as neatly to satisfy your wishes.

Save and shut the report.

Subsequent, make the machine conscious about the brand new unit report.

  • sudo systemctl daemon-reload

Permit the unit report.

  • sudo systemctl permit vncserver@1.provider

The 1 following the @ signal indicates which show quantity the provider will have to seem over, on this case the default :1 as used to be mentioned in Step 2..

Prevent the present example of the VNC server if it is nonetheless working.

Then get started it as you could possibly get started another systemd provider.

  • sudo systemctl get started vncserver@1

You’ll be able to check that it began with this command:

  • sudo systemctl standing vncserver@1

If it began as it should be, the output will have to appear to be this:


● vncserver@1.provider - Get started TightVNC server at startup Loaded: loaded (/and many others/systemd/machine/vncserver@.provider; oblique; dealer preset: enabled) Energetic: lively (working) since Mon 2018-07-09 18:13:53 UTC; 2min 14s in the past Procedure: 22322 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, standing=0/SUCCESS) Procedure: 22316 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, standing=0/SUCCESS) Primary PID: 22330 (Xtightvnc) ...

Your VNC server will now be to be had whilst you reboot the gadget.

Get started your SSH tunnel once more:

  • ssh -L 5901: -C -N -l sammy your_server_ip

Then make a brand new connection the use of your VNC consumer instrument to localhost:5901 to connect with your gadget.


You presently have a secured VNC server up and working to your Ubuntu 18.04 server. Now you are able to set up your recordsdata, instrument, and settings with an easy-to-use and acquainted graphical interface, and you are able to run graphical instrument like internet browsers remotely.