Apache Guacamole is a clientless remote desktop gateway, supporting VNC, RDP and SSH.
freebsd-update fetch && freebsd-update install pkg update && pkg upgrade pkg install guacamole-client guacamole-server cp /usr/local/etc/guacamole-client/user-mapping.xml.sample /usr/local/etc/guacamole-client/user-mapping.xml sysrc tomcat8_enable="YES" sysrc guacd_enable="YES"
Guacamole-Client requires a database located on local or remote server. In this example we use MariaDB as it is widely known and supported. At the time of writing MariaDB 10.3 is the latest version and the MySQL Java Connector is at 8.0.15
pkg install mariadb103-server mysql-connector-java-8.0.15 sysrc mysql_enable="YES" /usr/local/etc/rc.d/mysql-server start
First we secure the new installation and set a root password for the MariaDB
mysql_secure_installation
Now it is time to connect to MariaDB and create our database
mysql -u root -p CREATE DATABASE guacamole; CREATE USER 'guacamole'@'localhost' IDENTIFIED BY 'S3curePassw0rd'; GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole.* TO 'guacamole'@'localhost'; FLUSH PRIVILEGES; quit
We add the tables and setup basic file and folder structure
cd /usr/local/share/guacamole-client/ tar xvfz guacamole-auth-jdbc.tar.gz cd guacamole-auth-jdbc-1.0.0/mysql/schema cat *.sql | mysql -u root -p guacamole mkdir /usr/local/etc/guacamole-client/extensions mkdir /usr/local/etc/guacamole-client/lib cp /usr/local/share/guacamole-client/guacamole-auth-jdbc-1.0.0/mysql/guacamole-auth-jdbc-mysql-1.0.0.jar /usr/local/etc/guacamole-client/extensions/ cp /usr/local/share/java/classes/mysql-connector-java.jar /usr/local/etc/guacamole-client/lib/ cd /usr/local/etc/guacamole-client/ cp guacamole.properties.sample guacamole.properties
The file guacamole.properties must be filled with our new environment
guacd-hostname: localhost guacd-port: 4822 mysql-hostname: localhost mysql-port: 3306 mysql-database: guacamole mysql-username: guacamole mysql-password: S3curePassw0rd! mysql-default-max-connections-per-user: 0 mysql-default-max-group-connections-per-user: 0
Finally we restart guacd and tomcat8
/usr/local/etc/rc.d/guacd restart /usr/local/etc/rc.d/tomcat8 restart
If you get a blank screen while connecting to http://<yourhost>:8080/guacamole/ check the logs:
tail -f /usr/local/apache-tomcat-8.0/logs/catalina.out
Maybe the timezone of MariaDB is wrong or unrecognized, then you have to set a new one that fits your region
mysql -u root -p SET GLOBAL time_zone = '+2:00'; (hours counting from UTC)