How to turn your Ubuntu 14.10 headless server into a XFCE + VNC Network Desktop

How to turn your Ubuntu 14.10 headless server into a XFCE + VNC Network Desktop

How to turn your Ubuntu 14.10 headless server into a XFCE + VNC Network Desktop

This tutorial describes the installation of Gnome 3, XFCE and VNC on a headless server (server without monitor) to turn it into a Linux Desktop that you can access from anywhere over the internet with VNC. The server that is used for this setup is a root server in a datacenter that runs just a minimal Ubuntu 14.10 operating system. I will guide you trough the installation and configuration of the following software:eval(ez_write_tag([[728,90],’howtoforge_com-box-3′,’ezslot_6′,106,’0′,’0′]));

Ubuntu 14.10
Gnome 3.14
VNC 4.1.1

Important Notes: This procedure is only applicable to a new installed Ubuntu Linux OS, if you have existing running Ubuntu Linux with a different version where you like to install a desktop and vnc, i suggest you make a backup of your system and after that, you may proceed with this procedure. All commands below assume that you are logged in as root user, so please run “sudo -” to become root if you are logged in as a different user.eval(ez_write_tag([[580,400],’howtoforge_com-medrectangle-3′,’ezslot_2′,121,’0′,’0′]));

WARNING: The VNC protocol does not encrypt the transmitted data or login details, use a VPN tunnel if you plan to use it over a insecure or public network.

1. Installing Gnome

First we install some prerequisites for installing Ubuntu PPA repositories:

apt-get install software-properties-common

Then add the Gnome 3 PPA repository with this command:

add-apt-repository ppa:gnome3-team/gnome3-staging

Then, Press [ENTER] to proceed

to load the gpg key.

Then run:eval(ez_write_tag([[580,400],’howtoforge_com-medrectangle-4′,’ezslot_1′,108,’0′,’0′]));

apt-get update

to load the package list from the server and install pending updates:

apt-get upgrade

2. Installing VNC

VNC (Virtual Network Computing), this is used for remote access software to control and this can be done by installing in destination server.

VNC client(source) -> Internet cloud -> VNC Server(destination)

VNC Destination server:
Assign a IP address 
VNC server installed
Password set in VNC (for security purposes)

VNC Source client:
VNC viewer installed (you can install this to any client pc either your using windows or linux)

Here are the steps:

apt-get install gnome-core xfce4 firefox

Then you may choose Yes or Y to confirm the action, after that issue the command

apt-get install vnc4server

You should test it by running vncserver and setting a password.


If you seen this option view-only password, this means you have no control on remote server. So, in this case you will need to choose “n”, so you have a full access.

Once its running, you may kill the process.

vncserver -kill :1

Then I will make a backup of the original vnc startupfile by executing the command

cp ~/.vnc/xstartup ~/.vnc/xstartup.bak

The next command will empty the file

> ~/.vnc/xstartup

By using vi editor, you may edit the file.

vi ~/.vnc/xstartup

Insert this given data into the file xstartup.

for easier copy / pasting, here the content of the startup file as text

startxfce4 &

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

Then make the startup file executable.

chmod +x xstartup

Next, I will create a startup script

then insert this data into that vncserver file.

[ -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 [email protected]
stop [email protected]
stop [email protected]
sleep 3
start [email protected]
if [ -f /var/lock/subsys/vncserver ]; then
stop [email protected]
sleep 3
start [email protected]
status Xvnc
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
exit 1

and make it executable.

chmod +x /etc/init.d/vncserver

Then, I need to create a configuration file for the vnc server:

mkdir -p /etc/vncserver

vi /etc/vncserver/vncservers.conf

Then insert this to vncserver.conf and make it root user in VNCSERVERS=”1:root” (this will depend on what user are you gonna use)

VNCSERVERARGS[1]="-geometry 1024x768"

Now, will create to startup upon boot of the system.

update-rc.d vncserver defaults

You may reboot the system.


Once the system up and running you may use any VNC client and configure it. (as with me i install TightVNC on my windows pc)

In this example, in VNC server -> <enter the ip address  of the target server>:<port number>, since this VNC server is using port number 5901.

Then you need to enter the password.

If its working, then you should be able to access the desktop of the remote server.

  • Ubuntu
  • TightVNC Client
About the Author

Leave a Reply