Difference between revisions of "Install VNC server on Ubuntu Server 12.04"

From Amahi Wiki
Jump to: navigation, search
 
(17 intermediate revisions by 6 users not shown)
Line 1: Line 1:
 +
<div style="border: 1px solid #A3B1BF; padding: .8em 1em; background-color: #E6F2FF; margin: 0px 1em;">
 +
'''NOTE: there is now a one-click [http://www.amahi.org/apps/vnc VNC App]'''</div>
 +
<br />
 +
{{MessageBox|
 +
backgroundcolor = #faa|
 +
image =Warning.png|
 +
heading =WARNING|
 +
message = This is recommended only for advanced users, proceed with caution.}}
 +
__TOC__
 +
=Method 1=
 +
 
Install vncServer in Ububtu 12.04 server to create a virtual desktop on another computer
 
Install vncServer in Ububtu 12.04 server to create a virtual desktop on another computer
  
Line 11: Line 22:
 
Reboot
 
Reboot
  
{{Code|Code = sudo reboot now -h}}
+
sudo reboot now -h
  
 
From here on I used vim but you can use any editor you are comfortable with just replace vim with your choice.
 
From here on I used vim but you can use any editor you are comfortable with just replace vim with your choice.
Line 25: Line 36:
 
http://www.tuxfiles.org/linuxhelp/vimcheat.html  
 
http://www.tuxfiles.org/linuxhelp/vimcheat.html  
  
Now go to another machine, I used windows 7, and install putty. (download here http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)
+
Now go to another machine, I used windows 7, and download putty.  
 +
 
 +
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)
  
 
From here on it will be all copy and paste in putty. (makes it easy)
 
From here on it will be all copy and paste in putty. (makes it easy)
Line 57: Line 70:
 
Copy and paste   
 
Copy and paste   
  
{{Code|Code = sudo apt-get update}}
+
sudo apt-get update
  
 
when complete
 
when complete
  
{{Code|Code = sudo aptitude safe-upgrade}}
+
sudo aptitude safe-upgrade
  
 
reboot server type  
 
reboot server type  
  
{{Code|Code = sudo reboot now -h}}
+
sudo reboot now -h
  
 
A: Install Gnome basic desktop.  
 
A: Install Gnome basic desktop.  
Line 75: Line 88:
 
First off we need to install the Gnome components for our virtual desktop. Type or copy and paste:
 
First off we need to install the Gnome components for our virtual desktop. Type or copy and paste:
  
{{Code|Code = sudo apt-get install gnome-core}}
+
sudo apt-get install gnome-core
  
 
when prompted type Y and then press Enter. This will install the gnome desktop components.
 
when prompted type Y and then press Enter. This will install the gnome desktop components.
Line 81: Line 94:
 
Reboot
 
Reboot
  
{{Code|Code = sudo reboot now -h}}
+
sudo reboot now -h
  
 
To keep the desktop and login window from opening in Ubuntu everytime it starts we want to mask out the few lines which start the service.
 
To keep the desktop and login window from opening in Ubuntu everytime it starts we want to mask out the few lines which start the service.
  
{{Code|Code = sudo vim /etc/init/gdm.conf}}
+
sudo vim /etc/init/gdm.conf
  
 
The first few lines of the script should look like this once you've edited it:
 
The first few lines of the script should look like this once you've edited it:
{{Code|Code =
+
<pre>
 
 
 
# gdm - GNOME Display Manager
 
# gdm - GNOME Display Manager
 
#
 
#
Line 108: Line 120:
  
 
emits login-session-start
 
emits login-session-start
 
+
</pre>
}}
 
  
 
esc :wq to save the changes or :q! to start over. Now the desktop and login won't start in Ubuntu.
 
esc :wq to save the changes or :q! to start over. Now the desktop and login won't start in Ubuntu.
Line 117: Line 128:
 
Reboot
 
Reboot
  
{{Code|Code = sudo reboot now -h}}
+
sudo reboot now -h
  
 
B: We need to install VNC server to be able to interact with the gnome components for the desktop.
 
B: We need to install VNC server to be able to interact with the gnome components for the desktop.
  
{{Code|Code = sudo apt-get install vnc4server}}
+
sudo apt-get install vnc4server
  
 
When prompted type Y and press Enter. This will install VNC Server which is required for running a virtual desktop on another machine.
 
When prompted type Y and press Enter. This will install VNC Server which is required for running a virtual desktop on another machine.
Line 127: Line 138:
 
Next type:
 
Next type:
  
{{Code|Code = vncserver}}
+
vncserver
  
 
You'll then be prompted to create and verify a new password.  
 
You'll then be prompted to create and verify a new password.  
Line 135: Line 146:
 
So, type the following command to kill the session:
 
So, type the following command to kill the session:
  
{{Code|Code = vncserver -kill :1}}
+
vncserver -kill :1
  
 
Now type the following command to open up the file we need to edit:
 
Now type the following command to open up the file we need to edit:
  
{{Code|Code = sudo vim .vnc/xstartup}}
+
sudo vim .vnc/xstartup
  
 
Change it to look like this:
 
Change it to look like this:
  
{{Code|Code =
+
<pre>
 
 
 
#!/bin/sh
 
#!/bin/sh
  
Line 158: Line 168:
 
#x-terminal-emulator -geometry 1280x1024+10+10 -ls -title "$VNCDESKTOP Desktop" &
 
#x-terminal-emulator -geometry 1280x1024+10+10 -ls -title "$VNCDESKTOP Desktop" &
 
#x-window-manager &
 
#x-window-manager &
}}
+
</pre>
  
 
When you're done editing the file press the Esc key once and type :wq
 
When you're done editing the file press the Esc key once and type :wq
Line 166: Line 176:
 
Next type the following command to create the VNC Session once more:
 
Next type the following command to create the VNC Session once more:
  
{{Code|Code = vncserver -geometry 1680x1050}}
+
vncserver -geometry 1680x1050
  
 
where 1280x1024 is the resolution of your DESKTOP COMPUTER.
 
where 1280x1024 is the resolution of your DESKTOP COMPUTER.
Line 200: Line 210:
 
So, from a Putty session:
 
So, from a Putty session:
  
{{Code|Code = cd /home/xxxx}}
+
cd /home/xxxx
  
 
where xxxx is your Ubuntu username. This command switches us into that directory.
 
where xxxx is your Ubuntu username. This command switches us into that directory.
Line 206: Line 216:
 
Next we'll create a folder called MyScripts below your home folder. So type:
 
Next we'll create a folder called MyScripts below your home folder. So type:
  
{{Code|Code = mkdir scripts}}
+
mkdir scripts
  
 
Switch into the folder we've just created type:
 
Switch into the folder we've just created type:
  
{{Code|Code = cd scripts}}
+
cd scripts
  
 
Next type:
 
Next type:
  
{{Code|Code = vim StartVNC.sh}}
+
vim StartVNC.sh
  
 
This will create a new file called StartVNC.sh and open it for editing.
 
This will create a new file called StartVNC.sh and open it for editing.
Line 220: Line 230:
 
Press the i key once and copy and paste the following contents:
 
Press the i key once and copy and paste the following contents:
  
{{Code|Code =
+
<pre>
 
 
 
#!/bin/sh
 
#!/bin/sh
 
echo "JOB RUN AT $(date)"
 
echo "JOB RUN AT $(date)"
Line 227: Line 236:
 
echo ""
 
echo ""
 
/usr/bin/vncserver -geometry 1680x1050
 
/usr/bin/vncserver -geometry 1680x1050
 +
</pre>
  
}}
 
  
 
NOTE: change the 1680x1050 to match the screen resolution of your Desktop computer
 
NOTE: change the 1680x1050 to match the screen resolution of your Desktop computer
Line 236: Line 245:
 
Next we need to make the file executable so, assuming you called your script StartVNC.sh then you'd type:
 
Next we need to make the file executable so, assuming you called your script StartVNC.sh then you'd type:
  
{{Code|Code = chmod a+x StartVNC.sh}}
+
chmod a+x StartVNC.sh
  
 
Test the script by typing the following:
 
Test the script by typing the following:
  
{{Code|Code = vncserver -kill :1}}
+
vncserver -kill :1
  
 
To make sure vncserver isn't running, then:
 
To make sure vncserver isn't running, then:
  
{{Code|Code = ./StartVNC.sh}}
+
./StartVNC.sh
  
 
A new vnc session should start.
 
A new vnc session should start.
Line 252: Line 261:
 
Stop vncserver
 
Stop vncserver
  
{{Code|Code = vncserver -kill :1}}
+
vncserver -kill :1
  
 
Now open your browser and go to your HDA and click on the webmin app you already installed, click continue to this website at the cert warning.
 
Now open your browser and go to your HDA and click on the webmin app you already installed, click continue to this website at the cert warning.
Line 269: Line 278:
 
Type or paste the name of your script including the full path  
 
Type or paste the name of your script including the full path  
  
{{Code|Code = /home/xxxx/scripts/StartVNC.sh >/dev/null}}
+
/home/xxxx/scripts/StartVNC.sh >/dev/null
  
 
into the Command box, replacing xxxx with your own usernam. The ">/dev/null" parameter will discard any output the script may produce.
 
into the Command box, replacing xxxx with your own usernam. The ">/dev/null" parameter will discard any output the script may produce.
Line 285: Line 294:
 
Now let's check the script works on boot. So from the System -> Bootup and Shutdown menu within Webmin scroll down to the bottom of the screen and click the Reboot System button. Alternatively type  
 
Now let's check the script works on boot. So from the System -> Bootup and Shutdown menu within Webmin scroll down to the bottom of the screen and click the Reboot System button. Alternatively type  
  
{{Code|Code = sudo reboot now -h}}
+
sudo reboot now -h
  
 
in a Putty/Terminal session.
 
in a Putty/Terminal session.
Line 294: Line 303:
  
 
Most of this information was obtained from: www.havetheknowhow.com.
 
Most of this information was obtained from: www.havetheknowhow.com.
 +
 +
= Method 2 =
 +
This is just what I found on how to install a VNC for Ubuntu 12.04LTS after figuring out that TigerVNC (the above methods) do not work for Ubuntu. The method is copied from [http://coddswallop.wordpress.com/2012/05/09/ubuntu-12-04-precise-pangolin-complete-vnc-server-setup/ here]. This will result in the gnome GUI, not Unity.
 +
 +
* First we need to update our repositories and install gnome.
 +
 +
sudo apt-get update
 +
sudo apt-get install gnome-core gnome-session-fallback
 +
 +
* Next we install VNC4Server. Follow the instructions.
 +
 +
sudo apt-get install vnc4server
 +
 +
* We need to test the VNC, and then close the session. In the process we are prompted for a password to use everytime we try to connect using our VNC client.
 +
 +
vncserver
 +
vncserver -kill :1
 +
 +
* We open the startup file that we need to edit to make gnome show up in the VNC, and not just a terminal:
 +
 +
cp .vnc/xstartup .vnc/xstartup.bak
 +
nano .vnc/xstartup
 +
 +
* We edit the file to uncomment the second line, and add "gnome-session -session=gnome-classic &". So it will look like this:
 +
 +
<pre>
 +
#!/bin/sh
 +
 +
# Uncomment the following two lines for normal desktop:
 +
unset SESSION_MANAGER
 +
#exec /etc/X11/xinit/xinitrc
 +
gnome-session –session=gnome-classic &
 +
 +
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
 +
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
 +
xsetroot -solid grey
 +
vncconfig -iconic &
 +
#x-terminal-emulator -geometry 80×24+10+10 -ls -title “$VNCDESKTOP Desktop” &
 +
#x-window-manager &
 +
</pre>
 +
* And finally we quit nano and save the file.
 +
      ctrl + x
 +
      y (for confirmation that yes, we do want the file to be overwritten with the new information)}}
 +
* To start the VNC just type the following into a terminal (using something like [[Key-based SSH Logins With Putty|Putty]]. This will start a new VNC session.
 +
vncserver
 +
 +
However, if you have installed the desktop version you can also follow the above method except the edit in the xstartup file will look like the following:
 +
 +
<pre>
 +
#!/bin/sh
 +
 +
# Uncomment the following two lines for normal desktop:
 +
unset SESSION_MANAGER
 +
#exec /etc/X11/xinit/xinitrc
 +
gnome-session –session=ubuntu-2d &
 +
 +
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
 +
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
 +
xsetroot -solid grey
 +
vncconfig -iconic &
 +
#x-terminal-emulator -geometry 80×24+10+10 -ls -title “$VNCDESKTOP Desktop” &
 +
#x-window-manager &
 +
</pre>
 +
 +
This will now give you a connection with the Unity desktop being displayed
 +
 +
=Tips and Tricks =
 +
 +
VNC does not respect the normal rules of elevating the current user through the use of entering the admin password. The only way to run many graphical programs that require the super user is to open a command line terminal within the VNC session and start the program with the "sudo" command. Two programs that may come in handy that work in this fashion are gparted and Synaptic Package Manager.
 +
 +
To start gparted:
 +
 +
In a VNC terminal window type:
 +
 +
sudo gparted
 +
 +
To start Synaptic Package Manager:
 +
 +
In a VNC terminal window type:
 +
sudo synaptic

Latest revision as of 14:16, 11 May 2014

NOTE: there is now a one-click VNC App


Warning.png WARNING
This is recommended only for advanced users, proceed with caution.


Method 1

Install vncServer in Ububtu 12.04 server to create a virtual desktop on another computer

These are the instructions for installing vncserver on Ubuntu 12.04 server edition. They may also work on Desktop, but I haven't tested them on it.

First install ubuntu 12.04 server

Install Amahi using the instructions provided elsewhere on the wiki.

After reboot go to your HDA and login, then go to apps and install OpenSSH and webmin using the links in your HDA.

Reboot

sudo reboot now -h

From here on I used vim but you can use any editor you are comfortable with just replace vim with your choice.

A quick and short tutorial on vim:

Move the cursor to where you want to edit then press i Edit as needed, when finished press esc then :wq to save your changes If you make a mistake press :q! you exit without saving changes, then start again.

A cheat sheet for vim commands can be found here:

http://www.tuxfiles.org/linuxhelp/vimcheat.html

Now go to another machine, I used windows 7, and download putty.

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)

From here on it will be all copy and paste in putty. (makes it easy)

Start putty

In Host Name (or IP address) enter the static ip address of your server, you can find it in your control panel on Amahi.org. For example: 192.168.1.55

DO NOT enter http://

Leave the Port at 22

PUTTY1.gif

If you want you can save it for easier later use by adding a name in Saved Sessions and clicking Save

Now click Yes

A terminal will open and another window asking you to confirm the server click okay

PUTTY2.gif

Enter your ubuntu username and password when asked

PUTTY3.jpg

You will be connected to your server.

all the following commands can be copied and pasted into putty with a simple right click.

Copy and paste

sudo apt-get update

when complete

sudo aptitude safe-upgrade

reboot server type

sudo reboot now -h

A: Install Gnome basic desktop.

log in with putty again from your windows machine.

I installed the server version of Ubuntu, so to be able to have a desk top when I log into vnc I need to install a few things in Ubuntu.

First off we need to install the Gnome components for our virtual desktop. Type or copy and paste:

sudo apt-get install gnome-core

when prompted type Y and then press Enter. This will install the gnome desktop components.

Reboot

sudo reboot now -h

To keep the desktop and login window from opening in Ubuntu everytime it starts we want to mask out the few lines which start the service.

sudo vim /etc/init/gdm.conf

The first few lines of the script should look like this once you've edited it:

# gdm - GNOME Display Manager
#
# The display manager service manages the X servers running on the
# system, providing login and auto-login services

description "GNOME Display Manager"
author "William Jon McCann <mccann@jhu.edu>"

#start on ((filesystem
# and runlevel [!06]
# and started dbus
# and (drm-device-added card0 PRIMARY_DEVICE_FOR_DISPLAY=1
# or stopped udev-fallback-graphics))
# or runlevel PREVLEVEL=S)

stop on runlevel [016]

emits login-session-start

esc :wq to save the changes or :q! to start over. Now the desktop and login won't start in Ubuntu.

NOTE: This only installs a basic desktop, if you want to be able to use programs from your virtual desktop, network manager, media players, office, etc, they will need to be installed after vnc server is installed.

Reboot

sudo reboot now -h

B: We need to install VNC server to be able to interact with the gnome components for the desktop.

sudo apt-get install vnc4server

When prompted type Y and press Enter. This will install VNC Server which is required for running a virtual desktop on another machine.

Next type:

vncserver

You'll then be prompted to create and verify a new password.

We now need to kill the session we just created and make change the startup script for VNCServer to make it work properly.

So, type the following command to kill the session:

vncserver -kill :1

Now type the following command to open up the file we need to edit:

sudo vim .vnc/xstartup

Change it to look like this:

#!/bin/sh

# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
#exec /etc/X11/xinit/xinitrc
gnome-session --session=gnome-classic &

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
#x-terminal-emulator -geometry 1280x1024+10+10 -ls -title "$VNCDESKTOP Desktop" &
#x-window-manager &

When you're done editing the file press the Esc key once and type :wq

This should save the changes and bring you back to the command line. If you make a mistake editing the file then issue :q! instead of :wq to abort your changes.

Next type the following command to create the VNC Session once more:

vncserver -geometry 1680x1050

where 1280x1024 is the resolution of your DESKTOP COMPUTER.

Download and install TightVNC onto your desktop computer.

http://www.tightvnc.com/download.html

When you launch it type your hda server name followed by a colon and the number 1 (this is the name you gave it when you installed Ubuntu)for example: Ubuntu-1204:1

Vnc.jpg

Or use it's static ip address and :1 eg: 192.168.1.55:1 in the VNCServer box.

Vnc1.jpg

Then click Connect, enter the password you created when you typed after installing vncserver.

Vnc2.jpg

You now see the desktop screen.

Vnc3.jpg

________________________

C: Write a script to launch VNC

A script is basically a file containing a list of commands which will be executed each time you run it. I put all my scripts in a directory below my "home" folder in a folder called scripts.

So, from a Putty session:

cd /home/xxxx

where xxxx is your Ubuntu username. This command switches us into that directory.

Next we'll create a folder called MyScripts below your home folder. So type:

mkdir scripts

Switch into the folder we've just created type:

cd scripts

Next type:

vim StartVNC.sh

This will create a new file called StartVNC.sh and open it for editing.

Press the i key once and copy and paste the following contents:

#!/bin/sh
echo "JOB RUN AT $(date)"
echo "============================"
echo ""
/usr/bin/vncserver -geometry 1680x1050


NOTE: change the 1680x1050 to match the screen resolution of your Desktop computer

Press the ESC key once and type :wq and press Enter to save.

Next we need to make the file executable so, assuming you called your script StartVNC.sh then you'd type:

chmod a+x StartVNC.sh

Test the script by typing the following:

vncserver -kill :1

To make sure vncserver isn't running, then:

./StartVNC.sh

A new vnc session should start.

D: Create a cron job in webmin to run the script on boot

Stop vncserver

vncserver -kill :1

Now open your browser and go to your HDA and click on the webmin app you already installed, click continue to this website at the cert warning.

Webmin1.jpg

Enter user and password as required.

Webmin2.jpg


Within Webmin click on System and then Scheduled Cron Jobs in the left column. Then click the Create a new scheduled cron job option at the top of the screen that opens.

Click the button next to the Execute cron job as and choose the username you created when you installed Ubuntu. Hint: your username appears in a Putty/Terminal session prompt. eg. yourusernameappearshere@Myhdaserver.

Type or paste the name of your script including the full path

/home/xxxx/scripts/StartVNC.sh >/dev/null

into the Command box, replacing xxxx with your own usernam. The ">/dev/null" parameter will discard any output the script may produce.

Enter a suitable description in the Description field.

In the When to Execute - Simple schedule drop-down list choose When system boots then click the Create button at the bottom of the screen.

It should look like this:

Webmin3.jpg

First test that you've set the job up correctly within Webmin. You can do this by clicking on the job you've just created from the long list of cron jobs (not checking the box but clicking on the name). In the new window that opens click the Run Now button at the bottom of the screen. You should see a message similar to the one you saw when you tested it from a Putty/Terminal session.

Now let's check the script works on boot. So from the System -> Bootup and Shutdown menu within Webmin scroll down to the bottom of the screen and click the Reboot System button. Alternatively type

sudo reboot now -h

in a Putty/Terminal session.

After reboot go to your Windows machin and open Tight VNC Viewer and connect to your ubuntu virtual desktop. VNC Server now starts automatically on boot.

That's it you should now have vnc server start on boot and a virtual desktop for your server on another machine.

Most of this information was obtained from: www.havetheknowhow.com.

Method 2

This is just what I found on how to install a VNC for Ubuntu 12.04LTS after figuring out that TigerVNC (the above methods) do not work for Ubuntu. The method is copied from here. This will result in the gnome GUI, not Unity.

  • First we need to update our repositories and install gnome.
sudo apt-get update
sudo apt-get install gnome-core gnome-session-fallback
  • Next we install VNC4Server. Follow the instructions.
sudo apt-get install vnc4server
  • We need to test the VNC, and then close the session. In the process we are prompted for a password to use everytime we try to connect using our VNC client.
vncserver
vncserver -kill :1
  • We open the startup file that we need to edit to make gnome show up in the VNC, and not just a terminal:
cp .vnc/xstartup .vnc/xstartup.bak
nano .vnc/xstartup
  • We edit the file to uncomment the second line, and add "gnome-session -session=gnome-classic &". So it will look like this:
#!/bin/sh

# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
#exec /etc/X11/xinit/xinitrc
gnome-session –session=gnome-classic &

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
#x-terminal-emulator -geometry 80×24+10+10 -ls -title “$VNCDESKTOP Desktop” &
#x-window-manager &
  • And finally we quit nano and save the file.
     ctrl + x
     y (for confirmation that yes, we do want the file to be overwritten with the new information)}}
  • To start the VNC just type the following into a terminal (using something like Putty. This will start a new VNC session.
vncserver

However, if you have installed the desktop version you can also follow the above method except the edit in the xstartup file will look like the following:

#!/bin/sh

# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
#exec /etc/X11/xinit/xinitrc
gnome-session –session=ubuntu-2d &

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
#x-terminal-emulator -geometry 80×24+10+10 -ls -title “$VNCDESKTOP Desktop” &
#x-window-manager &

This will now give you a connection with the Unity desktop being displayed

Tips and Tricks

VNC does not respect the normal rules of elevating the current user through the use of entering the admin password. The only way to run many graphical programs that require the super user is to open a command line terminal within the VNC session and start the program with the "sudo" command. Two programs that may come in handy that work in this fashion are gparted and Synaptic Package Manager.

To start gparted:

In a VNC terminal window type:

sudo gparted 

To start Synaptic Package Manager:

In a VNC terminal window type:

sudo synaptic