How To Install VNC Server On Ubuntu 14.04

This guide explains the installation and configuration of a VNC server on Ubuntu 14.04 server. I use a server here to show you a ay to have a remote desktop on a root server in a data center. The same steps will work for Ubuntu desktops as well.VNC is a very convenient way of administrating the Ubuntu 14.04 desktops remotely. The GUI can be accessed from anywhere over the internet or local network with a VNC client on any OS. The only requirement is that the connecting OS has a VNC-client installed on it.

1 Preliminary Note

In my case, I have a fresh installed Ubuntu14.04 server in a datacenter (root server) where I will install the VNC server so that I can access the Ubuntu Gnome GUI remotely. If you do. In case that you havent a Ubuntu minimal installation yet, follow this guide for the basic installation of the Ubuntu server till Chapter 11. All of the cases are same as per the guide. My network details are as follows:

IP address

VNC-server benefits

  • Remote GUI administration makes work easy & convenient.
  • Clipboard sharing between host Ubuntu server & VNC-client machine.
  • GUI tools can be installed on the host Ubuntu server to make the administration more powerful
  • Host Ubuntu server can be administered through any OS having the VNC-client installed.
  • More reliable and faster then running a X-Server over SSH.
  • More reliable then RDP connections.

2 VNC Server Installation

I am logged in my system as root user on the shell (e.g. by ssh). Now I will install the VNC-server.

 apt-get install gnome-core xfce4 firefox

 apt-get install vnc4server

Please make sure that you are using only vnc-server & no other VNC-server are installed as this could give errors in future mostly that clipboard sharing between the host Ubuntu Server & vnc-client machine. You can check it as follows:

root@vboxtest ~ # dpkg -l | grep vnc
ii  vnc4server                                            4.1.1+xorg4.3.0-37ubuntu5                           amd64        Virtual network computing server software
root@vboxtest ~ #

Please uninstall if TightVNC or anything similar installed.

3 Adding VNC user

In my case, I am using user=srijan it will differ in your case. You can use any username for the same.

adduser srijan

root@server1:~# adduser srijan
Adding user `srijan' ...
Adding new group `srijan' (1001) ...
Adding new group `srijan' (1001) ...
Adding new user `srijan' (1001) with group `srijan' ...
Creating home directory `/home/srijan' ...
Copying files from `/etc/skel' ...

Enter new UNIX password: <--yourpassword
Retype new UNIX password: <--yourpassword
passwd: password updated successfully
Changing the user information for srijan
Enter the new value, or press ENTER for the default
    Full Name []: <--ENTER
    Room Number []:
    Work Phone []:
    Home Phone []:
    Other []:
Is the information correct? [Y/n]

Further, we need to start the vncserver with the user, for this use:

su - srijan


It will show this on the prompt:

srijan@server1:~$ vncserver

You will require a password to access your desktops.

Password:<--Put your VNC password 
Verify:<--Put your VNC password
Password too long - only the first 8 characters will be used
xauth:  file /home/srijan/.Xauthority does not exist

New 'server1:1 (srijan)' desktop is server1:1

Creating default startup script /home/srijan/.vnc/xstartup
Starting applications specified in /home/srijan/.vnc/xstartup
Log file is /home/srijan/.vnc/server1:1.log


Now I am going to make backup of the original file & then make the configuration as follows:

cp ~/.vnc/xstartup ~/.vnc/xstartup.bak
> ~/.vnc/xstartup
vi ~/.vnc/xstartup

startxfce4 &
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &

It will have some issues with the gnome-vnc session so please kill the present vnc session as follows:

vncserver -kill :1

Further, I will make the startup script for the vncserver like this:

vi /etc/init.d/vncserver

[ -f /etc/vncserver/vncservers.conf ] && . /etc/vncserver/vncservers.conf
prog=$"VNC server"
start() {
 . /lib/lsb/init-functions
 echo -n $"Starting $prog: "
 ulimit -S -c 0 >/dev/null 2>&1
 for display in ${VNCSERVERS}
 export USER="${display##*:}"
 if test -z "${REQ_USER}" -o "${REQ_USER}" == ${USER} ; then
 echo -n "${display} "
 su ${USER} -c "cd ~${USER} && [ -f .vnc/passwd ] && vncserver :${DISP} ${VNCUSERARGS}"
stop() {
 . /lib/lsb/init-functions
 echo -n $"Shutting down VNCServer: "
 for display in ${VNCSERVERS}
 export USER="${display##*:}"
 if test -z "${REQ_USER}" -o "${REQ_USER}" == ${USER} ; then
 echo -n "${display} "
 export USER="${display##*:}"
 su ${USER} -c "vncserver -kill :${display%%:*}" >/dev/null 2>&1
 echo -e "\n"
 echo "VNCServer Stopped"
case "$1" in
start $@
stop $@
stop $@
sleep 3
start $@
if [ -f /var/lock/subsys/vncserver ]; then
stop $@
sleep 3
start $@
status Xvnc
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
exit 1

Now make it executable:

chmod +x /etc/init.d/vncserver

Next I will make the configuration file for the vncserver  by creating file as follows:

mkdir -p /etc/vncserver
vi /etc/vncserver/vncservers.conf

Give the entries like this.

VNCSERVERARGS[1]="-geometry 1024x768"

Here your port comes to be 5901 & 1024x768 resolution for the VNC client, you can choose a resolution of your own choice.

Now I will add it into boot startups:

update-rc.d vncserver defaults 99

root@server1:~# update-rc.d vncserver defaults 99
 Adding system startup for /etc/init.d/vncserver ...
   /etc/rc0.d/K99vncserver -> ../init.d/vncserver
   /etc/rc1.d/K99vncserver -> ../init.d/vncserver
   /etc/rc6.d/K99vncserver -> ../init.d/vncserver
   /etc/rc2.d/S99vncserver -> ../init.d/vncserver
   /etc/rc3.d/S99vncserver -> ../init.d/vncserver
   /etc/rc4.d/S99vncserver -> ../init.d/vncserver
   /etc/rc5.d/S99vncserver -> ../init.d/vncserver

And fFinally reboot the machine.


4 VNC Client

On the client side, my OS is Ubuntu 14.04 Desktop with the "vino" VNC Client software installed. But you may use any other VNC client as well. In case, other OS like windows-7 you can e.g. install Realvnc-client or TightVNC.

Now I am going to connect with the VNC server through my VNC-client

It will prompt for the password as follows:

Enter the password as VNC password that you had set for the user "srijan" on the server.

Now you are logged into the GUI of your server.

Choose Use default config:

To setup the graphical user session. In case you want to add more users to access the vnc-console you need to add the user as mentioned above & append the entry in the file as:

vi /etc/vncserver/vncservers.conf

For instance I am using user kishore, entries will be like this

VNCSERVERARGS[2]="-geometry 1024x768"

This will enable user kishore to get the access to the VNC-server with the port 5902. In the same way, you can add the root user also.
Congrats you have configured the VNC-server successfully :) 

Share this page:

28 Comment(s)

Add comment


From: Not a loser linux nerd like you

This "tutorial" was clearly written by a linux nerd who has never had to deal with another human being in his life. While it does a good job of explaining absolutely nothing, it misses out on crucial details, like how to actually enter data into vi. Note: vi was not written by a human being. Therefore, human beings are incapable of understanding its utterly byzantine interface and backwards approach to data entry.

Next time you have the urge to write more tutorials, please kill yourself instead.

From: A nerd

The tutorial was written assuming you have Linux running on a machine that doesn't have a GUI.  If you're already using a headless Linux box via ssh, it's not unreasonable to assume that the reader knows how to use vi.

 Having said that, I'm not going to disagree that if you don't know anything about vi and you launch it, you're now in a world of pain. 

From: Jonti

I've just followed the tutorial to set up a VNC server, and I'm glad the author will live to write other helpful guides

I was surprised to see vi being used for editing.  The occasional script editor like myself is better served by nano, because the vital keystroke commands are always displayed on screen.

From: Anonymous

I am commenting merely to say, you, sir (Not a loser lin...) need to go dance through a field of flowers and enjoy life. As others said, clearly, if you have a headless *nix install, you know what to do, or at least how to recognize an editor command and know how to use it, or an alternate (nano), like I did.

 As far as the guide, it was perfect, exactly what I needed. A few simple commands just to get VNC installed, and a great refresher guide for those, like me, who dont always work with Linux so tend to forget the simple stuffs.

From: me

I have to agree, I hate vi more than anything, I can't understand why we are here in 2015, and old dogs are still up to their old tricks. Learn some new tricks!

I haven't used vi for years, and avoid it like the plague.

When following these, simply replace "vi" with "nano" and you will be much happier.

I suggest to these authors to do the same, and it will improve their user feedback, and limit frustration. It sucks if you take the time to help people, then lose all of your effort because of an antiquated and frustrating line editor.

From: Ivan

No one is born knowing this kind of stuff.  Vi, like many other unix technologies has to be learned.  I had a similar reaction many years ago with my first introduction to vi but like everything else I don't know, I studied it and learned it.  As the saying goes, better to light a candle than to curse the darkness.

From: UbuntuUser

Wonderful in explaining all the steps. It was easy to follow and I am going to try.

From: Arash




Wow... Speechless. Im absolutely speechless.

 ** starting up windows 7 ** 

From: Anonymous

This  /.vnc/xstartup configuration worked for me:

# Uncomment the following two lines for normal desktop:
#exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
xfce4-session &
startxfce4 &

From: Nathan R.

I wanted to say thanks for this tutorial!  I've been messing with several today, and this is the only one that worked.  Great job and thanks for putting this up!
My headless Ubuntu server is running happily up on EC2, and I'm able to connect to it graphically with no problems. 


From: Anonymous

I'm setting up Ubuntu Studio to run as a headless software synthesizer. This helped a lot. Thanks very much!

From: votuduc

Hello, Thank you so much for this great post. 

I do follow all your steps, but I can not access to my Ubuntu (EC2 Amazon) via VNC viewer. I use Mac OS (10.9.5) + RealVNC (version 5.2.2) and I have already created a security group on Instance EC2 in order to enable port 5901.

I got error every time I try to connect to my Ubuntu.

If I input DNS public like into VNC viewer, then I always got error as "The connection was refused by the host computer".

If I input Private IPs:port like, then I get error as "Timed out waiting for a response from the host computer". 

The VNCServer has installed successfully as I get some message as below:



myuser@myserver:~$ service vncserver start

-- result:

Starting VNC server: 1:myuser Password: 

A VNC server is already running as :1

-- command: myuser@myserver:~$ service vncserver stop


Shutting down VNCServer: 1:myuser.

//// Could you please give me an advise? I spend a lot of time to read a lot of tutorial, but I still can not access to Ubuntu via VNC. 

Best and Regards, 


From: ubuntino88


why if I add a second user following the instructions in this guide TightVNC and VNCviewer give me this error: Error in TightVNC Viewer: Unable to establish connection . Persistent refusal of the target computer. ?????

This error is given to me also in the first user, that work correctly before I've put the second user!!!!

If I delete the second user, the first user return to work correctly!!!

any advice???



From: Evelyne Lachance

The server won't start when attempting to use sudo service vncserver start.

The error I get is the following: /etc/init.d/vncserver: 2: /etc/vncserver/vncservers.conf: VNCSERVERARGS[1]=-geometry 1024x768: not found

I tried to put 800x600 and get the same error (with different geometry).

My google-fu fails me on this one, anyone have any ideas?

From: herp

did you put -geometry 1024x768 in quotes? like so:

VNCSERVERARGS[1]="-geometry 1024x768"

? that could be a problem if you didn't...

From: Denis

Oh, vnc4server, tightvncserver it's old development and not actual. Good practice is TigerVNC (

From: TitinoBambino

Interesting and funny but useless comment... :-)

The set of instructions provided by the autor are 100% correct, the use of one or another editor is an unimportant subject, it doesn't actually matter what editor you use, instead of VI, I used one of my choice to get the same things done. and everything works as explained.

Now, if happens to you (as happened to me), that vncserver was not what I was actually looking for, here are the set of instructions to undo everything:

vncserver -kill :#           (where # is the current vncserver running)

rm ~/.vnc/xstartup

rm /etc/vncserver/vncservers.conf

rm /etc/init.d/vncserver

update-rc.d -f vncserver remove

apt-get remove --purge vnc4server

apt-get autoremove                                    (just in case)

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

Still gnome-core, xfce4 and firefox installed initially will remain, it is up to you if you want to remove them as well, those won't harm anyway.

Is not my intention to explain the above commands, just list the set of steps required to undo the install procedure proposed here.

It is supposed that users come here knowing a little bit of Linux


From: herp

Have you tried using your VNCclient to login to your VNCserver at port :1? That's what i needed to do.

So, at VNCclient prompt:

where is your server's ip (on ec2, this will be your public ip or instead just your public dns hostname), and # is your vncServer session you want to connect to - in this tutorial they set up 1:youruser, and so you would want # to be 1 for that user. Hope that helps...

From: Roger Crawford

Much appreciated. Your startup script works! I needed that.

From: Lucas

THis works splendidly, however, i cannot logout from the session?The GUI just hangs.

From: ivan

Even though some people disliked, I just have to congrat the writer of this tutorial because, after 48 hours of desesperated searching and failed tries, I finally understood and finnished in the first time this installation totally usable. Thanks a lot Mister, and to be more precise, I've only been using Linux for one mounth.


This is a excellant how to instructions.. I am only haveing one issue. The VNC does not start when the system is rebooted. anyway to correct that?


From: linux basic


I followed these steps, But for me, getting a gray screen only. How can fix this ?

From: Douglas

Getting these errors:insserv: warning: script 'K01vncserver' missing LSB tags and overridesinsserv: warning: script 'vncserver' missing LSB tags and overrides

From: till

Thats ok, it just means that the start script has no LSB tags. You can ignore that warning.

From: Linux, not windows

If you do not know how to use linux, then don't read a guide on how to install "VNC Server On Ubuntu 14.04". vi saves you so much time when dealing with Linux on a day to day basis, something which you clearly don't do. Go back to your OS for people that don't know how a computer really works. You're just interested in the sausage, not how it's made. Oh looks, it's a pretty desktop shortcut - when you click on it, nice things happen...

From: Ivan S Kirkpatrick

This was the first time I setup vnc successfully.  Your tutorial worked very well and I had no trouble with it at all.  I use vim instead of vi but effectively it is a good tutorial.  I really appreciate your work.

From: yousef alhajeri

Thanx a lot, its not easy to find a simple tutorial that does work on linux for alsmot anything.


keep on with the good work