Difference between revisions of "Guacamole"

From Amahi Wiki
Jump to: navigation, search
Line 4: Line 4:
 
heading =WARNING|
 
heading =WARNING|
 
message = This is recommended only for advanced users, proceed with caution.}}
 
message = This is recommended only for advanced users, proceed with caution.}}
== What is Guacamole? ==  
+
= What is Guacamole? =  
 
Guacamole is an HTML5 remote desktop gateway.   
 
Guacamole is an HTML5 remote desktop gateway.   
  
Line 11: Line 11:
 
No browser plugins are needed, and no client software needs to be installed.  The client requires nothing more than a web browser supporting HTML5 and AJAX.
 
No browser plugins are needed, and no client software needs to be installed.  The client requires nothing more than a web browser supporting HTML5 and AJAX.
  
== Installing Guacamole on Amahi ==
+
= Installing Guacamole on Amahi =
 
<div style="border: 1px solid #A3B1BF; padding: .8em 1em; background-color: #E6F2FF; margin: 0px 1em;">
 
<div style="border: 1px solid #A3B1BF; padding: .8em 1em; background-color: #E6F2FF; margin: 0px 1em;">
 
'''WARNING:''' All commands in this tutorial are executed as <code>root</code> (or precede with <code>sudo</code>).</div>
 
'''WARNING:''' All commands in this tutorial are executed as <code>root</code> (or precede with <code>sudo</code>).</div>
=== Dependencies ===
+
== Dependencies ==
 
The following dependencies are included so as to make as many features in Guacamole available to the installer.  Install them with the following:
 
The following dependencies are included so as to make as many features in Guacamole available to the installer.  Install them with the following:
 
For Fedora 23 or newer (Fedora 21, substitute <code>yum</code> for <code>dnf</code>):
 
For Fedora 23 or newer (Fedora 21, substitute <code>yum</code> for <code>dnf</code>):
Line 23: Line 23:
 
:'''NOTE:'''  You will need to install the Amahi [https://www.amahi.org/apps/web-apps Web Apps] plug-in to use this guidance. Ensure you '''enable''' [[Advanced Settings]].
 
:'''NOTE:'''  You will need to install the Amahi [https://www.amahi.org/apps/web-apps Web Apps] plug-in to use this guidance. Ensure you '''enable''' [[Advanced Settings]].
  
=== Preparing Amahi ===
+
== Preparing Amahi ==
 
Login to your Amahi Dashboard and choose "Set Up" in the upper right.
 
Login to your Amahi Dashboard and choose "Set Up" in the upper right.
 
Now select the "Apps" tab.
 
Now select the "Apps" tab.
Line 29: Line 29:
 
Fill in the name (guacamole) and leave everything else as it is.
 
Fill in the name (guacamole) and leave everything else as it is.
  
=== Setting up MySQL Authentication ===
+
== Setting up MySQL Authentication ==
==== Creating the Database ====
+
=== Creating the Database ===
 
  hda-create-db-and-user guacdb
 
  hda-create-db-and-user guacdb
  
==== Installing MySQL Authentication Module ====
+
=== Installing MySQL Authentication Module ===
 
Create a working directory and move there
 
Create a working directory and move there
 
  mkdir -p /var/hda/web-apps/guacamole/sqlauth && cd /var/hda/web-apps/guacamole/sqlauth
 
  mkdir -p /var/hda/web-apps/guacamole/sqlauth && cd /var/hda/web-apps/guacamole/sqlauth
Line 60: Line 60:
 
  systemctl restart mariadb.service
 
  systemctl restart mariadb.service
  
==== Loading Guacamole's schema into the MySQL Tables ====
+
=== Loading Guacamole's schema into the MySQL Tables ===
 
The schema for MySQL was downloaded in the previous process.
 
The schema for MySQL was downloaded in the previous process.
 
Just change directories to the files location
 
Just change directories to the files location
Line 67: Line 67:
 
  cat ./*.sql | mysql -uroot -phda guacdb
 
  cat ./*.sql | mysql -uroot -phda guacdb
  
=== Installing Guacamole Server ===
+
== Installing Guacamole Server ==
 
Guacamole uses "guacd", a Guacamole server and a Guacamole Client for users to connect to the "guacd" server.  We first install Guacamole Server.
 
Guacamole uses "guacd", a Guacamole server and a Guacamole Client for users to connect to the "guacd" server.  We first install Guacamole Server.
  
Line 88: Line 88:
 
  ldconfig
 
  ldconfig
  
=== Installing Guacamole Client ===
+
== Installing Guacamole Client ==
 
Create a new directory and move to it.
 
Create a new directory and move to it.
 
  mkdir -p /var/lib/guacamole && cd /var/lib/guacamole/
 
  mkdir -p /var/lib/guacamole && cd /var/lib/guacamole/
Line 98: Line 98:
 
  ln -s /var/lib/guacamole/guacamole.war /var/lib/tomcat/webapps/
 
  ln -s /var/lib/guacamole/guacamole.war /var/lib/tomcat/webapps/
  
=== Guacamole's Configuration File ===
+
== Guacamole's Configuration File ==
 
Create a directory for the configuration file.
 
Create a directory for the configuration file.
 
  mkdir -p /etc/guacamole/
 
  mkdir -p /etc/guacamole/
Line 122: Line 122:
 
  ln -s /etc/guacamole/guacamole.properties /usr/share/tomcat/.guacamole/
 
  ln -s /etc/guacamole/guacamole.properties /usr/share/tomcat/.guacamole/
  
=== Starting Guacamole Server ===
+
== Starting Guacamole Server ==
 
Restart Tomcat.
 
Restart Tomcat.
 
  ​systemctl restart tomcat
 
  ​systemctl restart tomcat
Line 133: Line 133:
 
  chkconfig guacd on
 
  chkconfig guacd on
  
== Configuring Guacamole and Amahi ==
+
= Configuring Guacamole and Amahi =
 
Create Symbolic links between guacamole in Tomcat and Amahi's webapp directory
 
Create Symbolic links between guacamole in Tomcat and Amahi's webapp directory
 
  ln -s /var/lib/tomcat/webapps/guacamole/* /var/hda/web-apps/guacamole/html
 
  ln -s /var/lib/tomcat/webapps/guacamole/* /var/hda/web-apps/guacamole/html
Line 152: Line 152:
 
  systemctl restart httpd
 
  systemctl restart httpd
  
== Logging In to Guacamole ==
+
= Logging In to Guacamole =
 
You can access the web login screen for Guacamole from other computers in the network you can access Guacamole by '''<nowiki>http://****:8080/guacamole</nowiki>''' (Where the "****" is the IP address of your Amahi server).
 
You can access the web login screen for Guacamole from other computers in the network you can access Guacamole by '''<nowiki>http://****:8080/guacamole</nowiki>''' (Where the "****" is the IP address of your Amahi server).
  
 
The default user is "guacadmin", with the default password of "guacadmin". You can change your password by editing your own user in the administration screen.
 
The default user is "guacadmin", with the default password of "guacadmin". You can change your password by editing your own user in the administration screen.
  
== Access Outside Network ==
+
= Access Outside Network =
 
If you want Guacamole's web interface to be accessible outside of your LAN you will have to forward a random, unused port (1111, for example) to port 8080 in your router.   
 
If you want Guacamole's web interface to be accessible outside of your LAN you will have to forward a random, unused port (1111, for example) to port 8080 in your router.   
  

Revision as of 01:17, 11 October 2016

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


What is Guacamole?

Guacamole is an HTML5 remote desktop gateway.

Guacamole provides access to desktop environments using remote desktop protocols like VNC and RDP. A centralized server acts as a tunnel and proxy, allowing access to multiple desktops through a web browser.

No browser plugins are needed, and no client software needs to be installed. The client requires nothing more than a web browser supporting HTML5 and AJAX.

Installing Guacamole on Amahi

WARNING: All commands in this tutorial are executed as root (or precede with sudo).

Dependencies

The following dependencies are included so as to make as many features in Guacamole available to the installer. Install them with the following: For Fedora 23 or newer (Fedora 21, substitute yum for dnf):

dnf install tomcat gcc cairo-devel libjpeg-devel libpng-devel uuid-devel freerdp-devel \
pango-devel libssh2-devel libtelnet-devel libvncserver-devel pulseaudio-libs-devel openssl-devel \
libvorbis-devel libwebp-devel wget
NOTE: You will need to install the Amahi Web Apps plug-in to use this guidance. Ensure you enable Advanced Settings.

Preparing Amahi

Login to your Amahi Dashboard and choose "Set Up" in the upper right. Now select the "Apps" tab. Click on "Webapps" and on the page that comes up choose the "New Web App" button at the bottom. Fill in the name (guacamole) and leave everything else as it is.

Setting up MySQL Authentication

Creating the Database

hda-create-db-and-user guacdb

Installing MySQL Authentication Module

Create a working directory and move there

mkdir -p /var/hda/web-apps/guacamole/sqlauth && cd /var/hda/web-apps/guacamole/sqlauth

Download Guacamole's authorization module

wget http://sourceforge.net/projects/guacamole/files/current/extensions/guacamole-auth-jdbc-0.9.9.tar.gz

Unpack it

tar -zxf guacamole-auth-jdbc-0.9.9.tar.gz

Download MySQL and Java Connector

wget http://dev.mysql.com/get/Downloads/Connector/j/mysql-connector-java-5.1.38.tar.gz

Unpack it

tar -zxf mysql-connector-java-5.1.38.tar.gz

Create directories for the extensions in Tomcat's folders

mkdir -p /usr/share/tomcat/.guacamole/{extensions,lib}

Move the modules to their respective directories.

mv guacamole-auth-jdbc-0.9.9/mysql/guacamole-auth-jdbc-mysql-0.9.9.jar /usr/share/tomcat/.guacamole/extensions/
mv mysql-connector-java-5.1.38/mysql-connector-java-5.1.38-bin.jar /usr/share/tomcat/.guacamole/lib/


Restart MariaDB

systemctl restart mariadb.service

Loading Guacamole's schema into the MySQL Tables

The schema for MySQL was downloaded in the previous process. Just change directories to the files location

cd /var/hda/web-apps/guacamole/sqlauth/guacamole-auth-jdbc-0.9.9/mysql/schema/ 

and run the following command:

cat ./*.sql | mysql -uroot -phda guacdb

Installing Guacamole Server

Guacamole uses "guacd", a Guacamole server and a Guacamole Client for users to connect to the "guacd" server. We first install Guacamole Server.

Change Directories

cd /var/hda/web-apps/guacamole

Download Guacamole Server

wget https://sourceforge.net/projects/guacamole/files/current/source/guacamole-server-0.9.9.tar.gz

Unpackage it

tar -xzf guacamole-server-0.9.9.tar.gz

Move to the Guacamole source code directory

cd guacamole-server-0.9.9/

Configure, make and install it.

./configure --with-init-dir=/etc/init.d
make
make install
ldconfig

Installing Guacamole Client

Create a new directory and move to it.

mkdir -p /var/lib/guacamole && cd /var/lib/guacamole/

Download Guacamole Client.

wget http://sourceforge.net/projects/guacamole/files/current/binary/guacamole-0.9.9.war -O guacamole.war

Create a symbolic link of the file for Tomcat.

ln -s /var/lib/guacamole/guacamole.war /var/lib/tomcat/webapps/

Guacamole's Configuration File

Create a directory for the configuration file.

mkdir -p /etc/guacamole/

Create a file called "guacamole.properties" in that directory

vi /etc/guacamole/guacamole.properties

Press the i key to begin inserting text into the guacamole.properties file and include the following contents:

# MySQL properties
mysql-hostname: localhost
mysql-port: 3306
mysql-database: guacdb
mysql-username: guacdb
mysql-password: guacdb

# Additional settings
mysql-default-max-connections-per-user: 0
mysql-default-max-group-connections-per-user: 0

If you use vi for creating this file, press the Esc key to get back in command mode and :wq to write the changes and quit vi.

Now create a symbolic link of this file for Tomcat

ln -s /etc/guacamole/guacamole.properties /usr/share/tomcat/.guacamole/

Starting Guacamole Server

Restart Tomcat.

​systemctl restart tomcat

Start Guacamole Server.

/etc/init.d/guacd start

Configure Guacamole Server to start at boot.

systemctl enable tomcat
chkconfig guacd on

Configuring Guacamole and Amahi

Create Symbolic links between guacamole in Tomcat and Amahi's webapp directory

ln -s /var/lib/tomcat/webapps/guacamole/* /var/hda/web-apps/guacamole/html

Edit ####-guacamole.conf in /etc/httpd/conf.d (replacing #### with the appropriate number):

vi /etc/httpd/conf.d/####-guacamole.conf

Right below the ServerAlias line, add the following:

ProxyPass / http://localhost:8080/guacamole/
ProxyPassReverse / http://localhost:8080/guacamole/

Again, if you use vi for creating this file, press the Esc key to get back in command mode and :wq to write the changes and quit vi.

Make sure the owner of all the file is apache and the group is users.

chown -R apache:users /var/hda/web-apps/guacamole

Restart Apache

systemctl restart httpd

Logging In to Guacamole

You can access the web login screen for Guacamole from other computers in the network you can access Guacamole by http://****:8080/guacamole (Where the "****" is the IP address of your Amahi server).

The default user is "guacadmin", with the default password of "guacadmin". You can change your password by editing your own user in the administration screen.

Access Outside Network

If you want Guacamole's web interface to be accessible outside of your LAN you will have to forward a random, unused port (1111, for example) to port 8080 in your router.

Then when you access Guacamole from outside your LAN you will need to add /guacamole to the end of your url. (http://servername.yourhda.com:1111/guacamole).

If you do not add /guacamole to your url, you will see a blank page since you did not specify which application in Tomcat you wanted to access.