I’d now recommend using this updated guide to deploy guacamole using Docker images. This is *much* easier, and by default you’ll get the latest version.
Use the script below to deploy required-prereqs and install mysql, tomcat8 and guacamole on your target Debian 8.6 client – be sure to change any references of “<password>” to suit your environment.
I have tested this on both Debian 8.6 and Ubuntu 16.04; this is intended for use on a fresh OS, with no prior versions of mysql, tomcat or guacamole. Your run this at your own risk!
# Set blank mysql root password for unattended install of mysql debconf-set-selections <<< 'mysql-server mysql-server/root_password password' debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password' # Install Guacamole server pre-reqs including MySQL apt-get install -y libjpeg-dev libcairo2-dev libossp-uuid-dev libpng12-dev libfreerdp-dev libssh2-1-dev libssh-dev libwebp-dev libpulse-dev libavcodec-dev libavutil-dev libswscale-dev libpango1.0-dev libvncserver-dev maven tomcat8 tomcat8-admin tomcat8-user default-jdk default-jre java-common mysql-server libtool dh-autoreconf git libvorbis-dev # Secure your mysql deployment - follow the defaults, but set a secure password as it is currently blank! mysql_secure_installation # Prepare the database and user needed for guacamole, you'll need your root <password> for a new MySQL user named "guacamole" mysql -u root -p<password> CREATE DATABASE guacamole; CREATE USER 'guacamole'@'localhost' IDENTIFIED BY '<password>'; GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole.* TO 'guacamole'@'localhost'; FLUSH PRIVILEGES; quit # Download and install guacamole server cd ~ git clone https://github.com/apache/incubator-guacamole-server cd incubator-guacamole-server autoreconf -fi ./configure --with-init-dir=/etc/init.d make make install mkdir -p /etc/guacamole/extensions mkdir -p /etc/guacamole/lib # Download and package guacamole client cd ~ git clone https://github.com/apache/incubator-guacamole-client cd incubator-guacamole-client mvn package # MySQL Database Preparation cd ~/incubator-guacamole-client/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql cat schema/*.sql | mysql -u root -p guacamole # Copy MySQL guacamole extension to /etc/guacamole/extensions/ cp ~/incubator-guacamole-client/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/target/guacamole-auth-jdbc-mysql-0.9.10-incubating.jar /etc/guacamole/extensions/ # Download and deploy MySQL Connector-J to /etc/guacamole/lib/ cd ~ wget https://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-5.1.40.tar.gz tar -zxvf mysql-connector-java-5.1.40.tar.gz cd mysql-connector-java-5.1.40 cp mysql-connector-java-5.1.40-bin.jar /etc/guacamole/lib/ # TomCat WebApp and guacamole environment deployment cd ~/incubator-guacamole-client/guacamole/target cp guacamole-0.9.10-incubating.war /etc/guacamole/guacamole.war ln -s /etc/guacamole/guacamole.war /var/lib/tomcat8/webapps/ mkdir /usr/share/tomcat8/.guacamole touch /etc/guacamole/guacamole.properties ln -s /etc/guacamole/guacamole.properties /usr/share/tomcat8/.guacamole/ echo GUACAMOLE_HOME=/etc/guacamole >> /etc/default/tomcat8 # Create guacamole.properties ### Change the <password> here! echo '# MySQL properties' > guacamole.properties echo 'mysql-hostname: localhost' >> guacamole.properties echo 'mysql-port: 3306' >> guacamole.properties echo 'mysql-database: guacamole' >> guacamole.properties echo 'mysql-username: guacamole' >> guacamole.properties echo 'mysql-password: <password> >> guacamole.properties # Resolve freerdp directory issues present when running guacamole on Debian 8.6 mkdir /usr/lib/x86_64-linux-gnu/freerdp ln -s /usr/local/lib/freerdp/guac* /usr/lib/x86_64-linux-gnu/freerdp/ ldconfig systemctl daemon-reload systemctl start tomcat8 /etc/init.d/guacd start systemctl enable tomcat8 systemctl enable guacd
You can now browse to guacamole using the following URL and credentials guacadmin/guacadmin – note the trailing slash on the URL, without this you will get a HTTP 404 error!
http://localhost:8080/guacamole/
Take a look at my nginx reverse proxy guide for guacamole.
11 replies on “Guacamole 0.9.10-incubating; Install with MySQL on Debian 8.6 / Ubuntu 16.x”
[…] If you want to use MySQL for the back-end – rather than XML files – see this guide: http://www.cb-net.co.uk/linux/guacamole-0-9-10-automated-install-with-mysql-on-debian-8-6/ […]
[…] You can now run make and make install / continue with the deployment as outlined in my other posts. […]
[…] Guacamole RDP en-gb Keyboard Mapping – CB-Net on Guacamole 0.9.10-incubating; Install with MySQL on Debian 8.6 […]
great script, but I am having 2 issues…
The MYSQL commands do not run automatically…I have to key them in manually…
Also, no matter what I have tried…logging in with guacadmin/guacadmin it always says the login is invalid…
Any help would be greatly appreciated!
Thanks
Failed login likely means connection to MySQL isn’t working – have you reviewed /var/log/tomcat8/catalina.out ?
Also check you guacamole MySQL password match in the DB instance itself and the guacamole.properties file.
To change the password for the MySQL user follow this guide: http://www.cb-net.co.uk/linux/changing-the-guacamole-mysql-user-password/
this is with Ubuntu 16.04 and a fresh install…
i can’t logging ???
log: http-nio-8080-exec-9] WARN o.a.g.r.auth.AuthenticationService
Can you post more of you catalina.out log, also have you verified the guacamole username/ password is correct in mysql and the guacamole.properties file?
Dec 15, 2016 10:43:11 AM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with JAR file [/usr/share/tomcat8/lib/commons-dbcp.jar], exists: [false], canRead: [false]
Dec 15, 2016 10:43:11 AM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with JAR file [/usr/share/tomcat8/lib/commons-pool.jar], exists: [false], canRead: [false]
Dec 15, 2016 10:43:11 AM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/usr/share/tomcat8/common/classes], exists: [false], isDirectory: [false], canRead: [false]
Dec 15, 2016 10:43:11 AM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/usr/share/tomcat8/common], exists: [false], isDirectory: [false], canRead: [false]
Dec 15, 2016 10:43:11 AM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/usr/share/tomcat8/server/classes], exists: [false], isDirectory: [false], canRead: [false]
Dec 15, 2016 10:43:11 AM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/usr/share/tomcat8/server], exists: [false], isDirectory: [false], canRead: [false]
Dec 15, 2016 10:43:11 AM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/usr/share/tomcat8/shared/classes], exists: [false], isDirectory: [false], canRead: [false]
Dec 15, 2016 10:43:11 AM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/usr/share/tomcat8/shared], exists: [false], isDirectory: [false], canRead: [false]
Dec 15, 2016 10:43:11 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version: Apache Tomcat/8.0.14 (Debian)
Dec 15, 2016 10:43:11 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server built: Nov 17 2016 08:01:34
Dec 15, 2016 10:43:11 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server number: 8.0.14.0
Dec 15, 2016 10:43:11 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Name: Linux
Dec 15, 2016 10:43:11 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Version: 3.16.0-4-amd64
Dec 15, 2016 10:43:11 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Architecture: amd64
Dec 15, 2016 10:43:11 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Version: 1.7.0_111-b01
Dec 15, 2016 10:43:11 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Vendor: Oracle Corporation
Dec 15, 2016 10:43:12 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler [“http-nio-8080”]
Dec 15, 2016 10:43:12 AM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFO: Using a shared selector for servlet write/read
Dec 15, 2016 10:43:12 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1176 ms
Dec 15, 2016 10:43:12 AM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Dec 15, 2016 10:43:12 AM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/8.0.14 (Debian)
Dec 15, 2016 10:43:12 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /var/lib/tomcat8/webapps/ROOT
Warning: default mime table not found: /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/content-types.properties
Dec 15, 2016 10:43:14 AM org.apache.jasper.servlet.TldScanner scanJars
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for