Difference between pages "Dd" and "Guacamole 0.8.3"

From Linuxintro
(Difference between pages)
imported>ThorstenStaerk
 
 
Line 1: Line 1:
[[dd]] is a utility to create a '''d'''isk '''d'''ump by reading every single block on a disk, e.g. your hard drive. Its architecture is laid out so it can do much more than creating a dump. Here is what dd can do for you:
+
Hello! baceakd interesting baceakd site! I'm really like it! Very, very baceakd good!
* manage a disk backup
 
** create a backup from a disk to a file
 
** restore a backup from a file to a disk
 
** clone a harddisk
 
** create a disk image and transfer it over the network
 
* create an iso image of a CD
 
* rescue a file that contains bad blocks
 
* analyze your disk by displaying selected [[blocks]]
 
* create your own operating system by dumping your bootloader to the boot sector
 
* benchmark the throughput of your disks
 
  
= Disk Backup =
+
= Quickstart =
Say we have a harddisk /dev/sda that we want to backup entirely (sector-by-sector) to a USB volume /dev/sdb1, mounted on /mnt/sdb1. We call this a ''dump'' or an ''image'' of /dev/sda. The dump shall be named ''backup.img''. Here is the dd command:
+
This will show you
dd if=/dev/sda of=/mnt/sdb1/backup.img
+
* how to install guacamole 0.8.3 on Ubuntu (tested with 10.04 and 12.04)
In this command, '''if''' stands for '''i'''nput '''f'''ile and '''of''' for '''o'''utput '''f'''ile.
+
* how to make this configuration survive a reboot
 +
* how to secure transmission with SSL
 +
* how to make the website accessible from behind a firewall (port 80 or 443)
  
To restore this backup, we boot from a live CD and do the command vice versa.
+
Here's what you do as root user:
'''This can overwrite all content on your harddisk, this is the intention.'''
+
* install software that we will need later:
  dd if=/mnt/sdb1/backup.img of=/dev/sda
+
apt-get update
 +
  apt-get install tomcat6 tightvncserver make xterm
  
To clone a disk A to B, both disks need to have the same capacity. It is very convenient for USB disks. Say our USB disk source is called /dev/sdb and the target is called /dev/sdc. Do it like this:
+
== configure VNC server ==
  dd if=/dev/sdb of=/dev/sdc
+
Guacamole does the communication between a VNC server and the web browser. So whatever you see in VNC will be in the browser. Let's use gnome as desktop environment:
Now if sdc has a bigger capacity, this capacity will be lost because the file system is not aware of it.
+
* install gnome:
 +
apt-get install gnome-session
 +
* activate gnome for your VNC:
 +
  cd
 +
mkdir .vnc
 +
cat >> .vnc/xstartup <<EOF
 +
#!/bin/sh
 +
gnome-session || xterm
 +
EOF
 +
chmod 777 .vnc/xstartup
  
To transfer a disk image over the network, use
+
== deploy guacamole client ==
  dd if=/dev/sdb | ssh root@target "(cat >backup.img)"
+
* download the guacamole webapp from http://sourceforge.net/projects/guacamole/files/current/binary/
 +
* deploy it
 +
# mv guacamole-0.8.3.war /var/lib/tomcat6/webapps/
 +
* surf to http://localhost:8080/guacamole-0.8.3. A folder /var/lib/tomcat6/webapps/guacamole-0.8.3 will be created with some content. We will need that later.
 +
* although login is not yet possible your browser will show a login screen like that:
 +
 
 +
[[File:guacamole-login.png|250px]]
 +
 
 +
== install guacamole server ==
 +
* install some [[dependencies]] that the server will need to build with vnc support:
 +
apt-get install libvncserver-dev libpng-dev libcairo-dev
 +
* download guacamole-server from http://sourceforge.net/projects/guacamole/files/current/source/
 +
* unpack it
 +
tar xvzf guacamole-server-0.8.3.tar.gz
 +
* build the server:
 +
cd guacamole-server-0.8.3
 +
./configure && make -j8 && make install
 +
* the following step is ugly; installation and binary do not completely fit so we must do that:
 +
ln -s /usr/local/lib/libguac.so* /lib
 +
ln -s /usr/local/lib/libguac-client-vnc.so* /lib/
 +
* now we start the guacamole daemon
 +
# guacd
 +
guacd[11581]: INFO:  Guacamole proxy daemon (guacd) version 0.8.3
 +
guacd[11581]: INFO:  Successfully bound socket to host ::1, port 4822
 +
  guacd[11581]: INFO:  Exiting and passing control to PID 11582
 +
 
 +
== configure guacamole ==
 +
* create a folder for guacamole's configuration:
 +
mkdir /etc/guacamole
 +
* create a file /etc/guacamole/guacamole.properties with the content
 +
# Hostname and port of guacamole proxy
 +
guacd-hostname: localhost
 +
guacd-port:    4822
 +
 +
# Location to read extra .jar's from
 +
lib-directory:  /var/lib/tomcat6/webapps/guacamole-0.8.3/WEB-INF/classes
 +
 +
# Authentication provider class
 +
auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider
 +
 +
# Properties used by BasicFileAuthenticationProvider
 +
basic-user-mapping: /etc/guacamole/user-mapping.xml
 +
* create a file /etc/guacamole/user-mapping.xml with the content
 +
<user-mapping>
 +
    <authorize username="user" password="password">
 +
      <protocol>vnc</protocol>
 +
          <param name="hostname">localhost</param>
 +
          <param name="port">5901</param>
 +
          <param name="password">password</param>
 +
    </authorize>
 +
</user-mapping>
 +
 
 +
== configure tomcat ==
 +
* find out your tomcat's user directory:
 +
# cat /etc/passwd|grep tomcat
 +
tomcat6:x:113:116::/usr/share/tomcat6:/bin/false
 +
: in this case it is /usr/share/tomcat6
 +
* create a folder .guacamole in your tomcat's user directory:
 +
mkdir /usr/share/tomcat6/.guacamole
 +
* link guacamole.properties into your tomcat's user directories' guacamole folder
 +
ln -s /etc/guacamole/guacamole.properties /usr/share/tomcat6/.guacamole
 +
 
 +
== finishing ==
 +
* start a vnc server, as password set password (the vnc password given in user-mappings.xml)
 +
vncserver
 +
* restart your tomcat server
 +
/etc/init.d/tomcat6 restart
 +
* point your browser to http://localhost:8080/guacamole-0.8.3
 +
* log in as user, password password (the user given in user-mappings.xml)
 +
* you should see a screen like this:
 +
 
 +
[[File:Guacamole-after-login.png]]
 +
 
 +
* next steps: SSL
 +
* next steps: proxypass
 +
 
 +
= Persist it =
 +
Add the following lines to /etc/crontab:
 +
@reboot root /usr/local/sbin/guacd &
 +
@reboot root USER=root /usr/bin/vncserver
 +
 
 +
= TroubleShooting =
 +
 
 +
== invalid login ==
 +
* now the problem is that tomcat does not know where to find the Authentication class:
 +
 
 +
/var/lib/tomcat6/webapps/guacamole/WEB-INF/classes/net/sourceforge/guacamole/net/basic/BasicFileAuthenticationProvider.class
 +
 
 +
is not in /etc/guacamole/guacamole.properties
 +
 
 +
* so add it
 +
* cat /etc/passwd gives me a line
 +
tomcat6:x:113:116::/usr/share/tomcat6:/bin/false
 +
 
 +
ll /usr/share/tomcat6/.guacamole/
 +
total 8
 +
drwxr-xr-x 2 root root 4096 Nov 26 07:58 ./
 +
drwxr-xr-x 6 root root 4096 Nov 26 07:57 ../
 +
lrwxrwxrwx 1 root root  35 Nov 26 07:58 guacamole.properties -> /etc/guacamole/guacamole.properties
 +
 
 +
* works now. So the thing is:
 +
** take care that it is called guacamole and not guacamole-0.8.3 (sure?)
 +
** make sure the classpath in /etc/guacamole/guacamole.properties is correct, e.g.
 +
# Location to read extra .jar's from
 +
lib-directory:  /var/lib/tomcat6/webapps/guacamole/WEB-INF/classes
 +
 
 +
== Server error ==
 +
* now I got a server error so I straced guacd:
 +
strace -p 15332
 +
and saw
 +
[pid 20344] open("/usr/lib/x86_64-linux-gnu/libguac-client-vnc.so", O_RDONLY) = -1 ENOENT (No such file or directory)
 +
so the problem is that libguac-client-vnc.so is missing.
 +
* downloaded java version 1.7.45 and compiled guacamole-client using mvn. But there was no *.so* file in it
 +
* so installed libvncserver-dev and rebuild and reinstalled guacamole-server
 +
* and there it is, libguac-client-vnc.so
 +
* now the error message changed from "server error" to "unauthorized"
 +
 
 +
= See also =
 +
* [[connect to a Linux computer]]
 +
* [[guacamole 0.8 on SUSE]]
 +
* [[guacamole 0.3.0 on Ubuntu 10.04]]
 +
* [[guacamole on Debian 6]]
 +
* [[guacamole on Ubuntu 11.10 32bit]]
 +
* [[cool things]]
 +
* [[schedule tAsks]]
 +
* http://guac-dev.org/Debian%20Install%20Instructions
 +
* ulteo
 +
* http://www.filegott.se/prd/index.php/how-tos/19-how-to-setup-guacamole-in-linux-ubuntu
 +
* http://guac-dev.org/doc/gug/installing-guacamole.html#idp99200
 +
 
 +
[[Category:Tool]]
 +
[[Category:Webmaster]]

Revision as of 12:49, 5 December 2013

Hello! baceakd interesting baceakd site! I'm really like it! Very, very baceakd good!

Quickstart

This will show you

  • how to install guacamole 0.8.3 on Ubuntu (tested with 10.04 and 12.04)
  • how to make this configuration survive a reboot
  • how to secure transmission with SSL
  • how to make the website accessible from behind a firewall (port 80 or 443)

Here's what you do as root user:

  • install software that we will need later:
apt-get update
apt-get install tomcat6 tightvncserver make xterm

configure VNC server

Guacamole does the communication between a VNC server and the web browser. So whatever you see in VNC will be in the browser. Let's use gnome as desktop environment:

  • install gnome:
apt-get install gnome-session
  • activate gnome for your VNC:
cd
mkdir .vnc
cat >> .vnc/xstartup <<EOF
#!/bin/sh
gnome-session || xterm
EOF
chmod 777 .vnc/xstartup

deploy guacamole client

# mv guacamole-0.8.3.war /var/lib/tomcat6/webapps/
  • surf to http://localhost:8080/guacamole-0.8.3. A folder /var/lib/tomcat6/webapps/guacamole-0.8.3 will be created with some content. We will need that later.
  • although login is not yet possible your browser will show a login screen like that:

Guacamole-login.png

install guacamole server

  • install some dependencies that the server will need to build with vnc support:
apt-get install libvncserver-dev libpng-dev libcairo-dev
tar xvzf guacamole-server-0.8.3.tar.gz
  • build the server:
cd guacamole-server-0.8.3
./configure && make -j8 && make install
  • the following step is ugly; installation and binary do not completely fit so we must do that:
ln -s /usr/local/lib/libguac.so* /lib
ln -s /usr/local/lib/libguac-client-vnc.so* /lib/
  • now we start the guacamole daemon
# guacd 
guacd[11581]: INFO:  Guacamole proxy daemon (guacd) version 0.8.3
guacd[11581]: INFO:  Successfully bound socket to host ::1, port 4822
guacd[11581]: INFO:  Exiting and passing control to PID 11582

configure guacamole

  • create a folder for guacamole's configuration:
mkdir /etc/guacamole
  • create a file /etc/guacamole/guacamole.properties with the content
# Hostname and port of guacamole proxy
guacd-hostname: localhost
guacd-port:     4822

# Location to read extra .jar's from
lib-directory:  /var/lib/tomcat6/webapps/guacamole-0.8.3/WEB-INF/classes

# Authentication provider class
auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider

# Properties used by BasicFileAuthenticationProvider
basic-user-mapping: /etc/guacamole/user-mapping.xml
  • create a file /etc/guacamole/user-mapping.xml with the content
<user-mapping>
   <authorize username="user" password="password">
      <protocol>vnc</protocol>
         <param name="hostname">localhost</param>
         <param name="port">5901</param>
         <param name="password">password</param>
    </authorize>
</user-mapping>

configure tomcat

  • find out your tomcat's user directory:
# cat /etc/passwd|grep tomcat
tomcat6:x:113:116::/usr/share/tomcat6:/bin/false
in this case it is /usr/share/tomcat6
  • create a folder .guacamole in your tomcat's user directory:
mkdir /usr/share/tomcat6/.guacamole
  • link guacamole.properties into your tomcat's user directories' guacamole folder
ln -s /etc/guacamole/guacamole.properties /usr/share/tomcat6/.guacamole

finishing

  • start a vnc server, as password set password (the vnc password given in user-mappings.xml)
vncserver
  • restart your tomcat server
/etc/init.d/tomcat6 restart

Guacamole-after-login.png

  • next steps: SSL
  • next steps: proxypass

Persist it

Add the following lines to /etc/crontab:

@reboot root /usr/local/sbin/guacd &
@reboot root USER=root /usr/bin/vncserver

TroubleShooting

invalid login

  • now the problem is that tomcat does not know where to find the Authentication class:

/var/lib/tomcat6/webapps/guacamole/WEB-INF/classes/net/sourceforge/guacamole/net/basic/BasicFileAuthenticationProvider.class

is not in /etc/guacamole/guacamole.properties

  • so add it
  • cat /etc/passwd gives me a line
tomcat6:x:113:116::/usr/share/tomcat6:/bin/false
ll /usr/share/tomcat6/.guacamole/
total 8
drwxr-xr-x 2 root root 4096 Nov 26 07:58 ./
drwxr-xr-x 6 root root 4096 Nov 26 07:57 ../
lrwxrwxrwx 1 root root   35 Nov 26 07:58 guacamole.properties -> /etc/guacamole/guacamole.properties
  • works now. So the thing is:
    • take care that it is called guacamole and not guacamole-0.8.3 (sure?)
    • make sure the classpath in /etc/guacamole/guacamole.properties is correct, e.g.
# Location to read extra .jar's from
lib-directory:  /var/lib/tomcat6/webapps/guacamole/WEB-INF/classes

Server error

  • now I got a server error so I straced guacd:
strace -p 15332

and saw

[pid 20344] open("/usr/lib/x86_64-linux-gnu/libguac-client-vnc.so", O_RDONLY) = -1 ENOENT (No such file or directory)

so the problem is that libguac-client-vnc.so is missing.

  • downloaded java version 1.7.45 and compiled guacamole-client using mvn. But there was no *.so* file in it
  • so installed libvncserver-dev and rebuild and reinstalled guacamole-server
  • and there it is, libguac-client-vnc.so
  • now the error message changed from "server error" to "unauthorized"

See also