[LINUX] Remote Login using Apache Guacamole

Apache Guacamole is a clientless remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH.

It is clientless because no plugins or client software are required.

Thanks to HTML5, once Guacamole is installed on a server, all you need to access your desktops is a web browser.

Below I’m going to discuss how to install Guacamole and it’s TOTP module (aka login with 2FA) on Ubuntu 24.04.3 LTS.

Understanding the pieces:

guacamole-server (aka guacd) = native daemon that speaks RDP/VNC/SSH, must be built from source.

guacamole web app = a .war deployed to Tomcat (we’ll use Tomcat 9).

Auth = we’ll use MariaDB (JDBC extension).
Guacamole 1.6.0 provides the WAR + JDBC extension prebuilt; only guacamole-server is compiled.

Packages & build dependencies

Build and start guacd (guacamole-server 1.6.0)

Install Java and Tomcat 9 (not Tomcat 10)

Note: Guacamole 1.x targets the javax servlet APIs (Tomcat 9). Tomcat 10 switched to jakarta and isn’t supported yet.

Prepare GUACAMOLE_HOME and deploy the 1.6.0 WAR

Install MariaDB and the JDBC auth extension

Log in and secure it

  • rowse to: http://<server>:8080/guacamole

  • Default admin (created by the schema): guacadmin / guacadmin → change it immediately (Settings → Preferences), then create your own admin and delete guacadmin.

Now, let’s install and the TOTP Module:

Download + verify (from Apache archive)

Install the extension jar

Restart Tomcat (not guacd) and check logs

If it loaded, you’ll see something like:

Extension “TOTP Authentication” (totp) loaded.

 

Enjoy!