USING IRONSECUREDOC

Guacamole Docker (How it Works for Developers For PDF Security)

Published March 5, 2025
Share:

What is Guacamole Docker?

Guacamole Docker is the Dockerized deployment of Apache Guacamole, a clientless remote desktop gateway that allows users to access remote systems, like desktops or servers, via a web browser without installing additional software. It is comprised of two major parts: the Guacamole Web Application, which acts as a user interface for session management and access to remote sessions, and the Guacamole Daemon (guacd), which takes care of the protocol translation for RDP, VNC, and SSH connections. Optionally, it can be used in conjunction with a database such as MySQL or PostgreSQL to store user accounts and connection configurations. Guacamole Docker simplifies deployment, is platform-independent, supports file transfers and clipboard sharing, and offers secure, centralized access to multiple remote systems.

How to Download and Install Guacamole Docker?

Install Docker

Docker must be installed on your computer. If Docker is not installed, install it by following the appropriate installation procedure for your operating system:

Download Docker Desktop
  • Access the Docker Desktop for Windows page.
  • Click "Download for Windows" to download the installer.
Run the Installer
  • Double-click on the downloaded Docker Desktop Installer.exe.
  • Continue with the setup wizard.
  • Select "Use WSL 2 instead of Hyper-V" (highly recommended).
Enable WSL 2 (if not enabled already)

Open up PowerShell as Administrator and enter the following command.

wsl --install
wsl --install
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'wsl --install
$vbLabelText   $csharpLabel

Restart your computer if prompted.

Follow the setup wizard and log into your Docker Hub account if prompted.

Pull the Docker Images

Apache Guacamole consists of two major Docker images:

Guacamole Daemon (guacd)

Pull the guacamole/guacd image that handles the protocol translations for RDP, VNC, and SSH.

docker pull guacamole/guacd

Broken image Add from Pixabay, select from your files or drag and drop an image here.

Guacamole Web Application

Pull a guacamole/guacamole image, which will provide the web interface to allow users to connect to remote systems.

docker pull guacamole/guacamole

Broken image Add from Pixabay, select from your files or drag and drop an image here.

Setup Database For Authentication

Apache Guacamole needs a mechanism to authenticate users. This section describes database authentication via MySQL SQL scripts, although PostgreSQL database and MariaDB are supported for Guacamole authentication as well as other non-database methods.

docker pull mysql:8

Broken image Add from Pixabay, select from your files or drag and drop an image here.

Create a database initialization script to create a table for MySQL authentication:

docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > initdb.sql

Rename and move SQL scripts included with Guacamole schema which can be run into the MySQL Docker container.

docker cp initdb.sql example-mysql:/guac_db.sql

Open a bash shell within the MySQL utility Docker container.

docker exec -it example-mysql bash

The shell prompt should now change to bash-4.4# or something similar. Within the bash shell prompt for the container, log into the MySQL database as the root user:

mysql -u root -p
mysql -u root -p
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'mysql -u root -p
$vbLabelText   $csharpLabel

The prompt should change again to MySQL.

Broken image Add from Pixabay, select from your files or drag and drop an image here.

In the MySQL prompt, change the root password, create a fresh MySQL database, and create a new user for that newly created database. When running the below commands, replace any instance of password with a secure password string for the MySQL root user and the new user for your database, respectively.

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
CREATE DATABASE guacamole_db;
CREATE USER 'guacamole_user'@'%' IDENTIFIED BY 'password';
GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO 'guacamole_user'@'%';
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
CREATE DATABASE guacamole_db;
CREATE USER 'guacamole_user'@'%' IDENTIFIED BY 'password';
GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO 'guacamole_user'@'%';
FLUSH PRIVILEGES;
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'ALTER USER 'root"@"clocalhost' IDENTIFIED BY 'password'; CREATE DATABASE guacamole_db; CREATE USER 'guacamole_user"@"c%' IDENTIFIED BY 'password'; GRANT @SELECT,INSERT,UPDATE,DELETE @ON guacamole_db.* @TO 'guacamole_user"@"c%'; FLUSH PRIVILEGES;
$vbLabelText   $csharpLabel

Guacamole Docker (How it Works for Developers For PDF Security): Figure 5 - Guacamole Schema

We can see all the tables in the table using the below command:

SHOW TABLES;
SHOW TABLES;
Dim TABLES As SHOW
$vbLabelText   $csharpLabel

Guacamole Docker (How it Works for Developers For PDF Security): Figure 6 - SQL Tables

Start Guacamole Docker Using Docker Commands

Start guacd using the below Docker commands (Guacamole Daemon).

docker run -d --name guacd guacamole/guacd

Guacamole Docker (How it Works for Developers For PDF Security): Figure 7 - Start Guacamole Daemon

Start Guacamole (Web Application)

Link the guacd container and MySQL database manually into Guacamole:

docker run --name guacamole-client --link guacd:guacd --link guacamoledb:mysql -e MYSQL_DATABASE=guacdb -e MYSQL_USER=guacamole_user -e MYSQL_PASSWORD=password -d -p 85:8085 guacamole/guacamole

Guacamole Docker (How it Works for Developers For PDF Security): Figure 8 - Start Guacamole Web Application

As shown below, let's verify the status of each Docker container on the running system or machine hosting Docker.

docker ps -a

You should see each container that you created in previous steps.

Once the Guacamole client container is created we can access it through the web browser with the given port number at the time of creating the Guacamole container. Below is the login page of Guacamole client screenshot.

Guacamole Docker (How it Works for Developers For PDF Security): Figure 9 - Login

Adding Linux Server to Guacamole Connection

Verify SSH Support

Guacamole supports SSH by default. Make sure the required extension (guacamole-auth-jdbc or similar) and its dependencies are installed. SSH is usually supported out of the box with Guacamole.

Add an SSH Connection

  • Sign into the Guacamole web interface as an admin.
  • Go to Settings > Connections.
  • Click on New Connection.

Guacamole Docker (How it Works for Developers For PDF Security): Figure 10 - SSH Connection

Basic Connection Settings

  • Name: Give a name to the connection, for example, "My SSH Server."
  • Protocol: Choose SSH.

SSH Connection Details

  • Hostname: Input the IP address or the hostname of the server you would like to connect to.
  • Port: The default is 22. Use another one if your SSH server uses another port.
  • Username: Input your SSH login username.
  • Password: If you are not using key-based authentication, you may also input the password.

Guacamole Docker (How it Works for Developers For PDF Security): Figure 11 - Connection Details

Now, log out of the admin interface and log in as a user with access to the new connection. Select the connection from the list.

Guacamole Docker (How it Works for Developers For PDF Security): Figure 12 - User Connections

It opens the SSH session in the browser.

Guacamole Docker (How it Works for Developers For PDF Security): Figure 13 - SSH Session

What is IronSecureDoc?

IronSecureDoc is a document management and security utility tool, utilizing advanced encryption, complex PDF manipulation, and digital signing. It offers firms and developers the convenience of smooth access and, thus, allows for easier processing of PDF documents without any direct or indirect dependencies. It can be referred to as an Aggressive PDF API if the features enable developers to automatically create and, upload, manipulate, and secure PDF files and documents programmatically.

Guacamole Docker (How it Works for Developers For PDF Security): Figure 14 - IronSecureDoc: The PDF Security and Compliance Server

More to that, IronPDF is a PDF API that enables the creation of a PDF from any type of data input and adding or editing content through parameters like text, images, or metadata. It incorporates the functionality for merging several PDFs and making composed files, splitting documents, and even comments, highlights, or watermarks for annotations.

Pull the IronSecureDoc Docker Image Guacamole SSH

Run the following command to pull the Docker image.

docker pull ironsoftwareofficial/ironsecuredoc:latest

ironsecuredoc: latest Replace with the given version or tag if provided.

Guacamole Docker (How it Works for Developers For PDF Security): Figure 15 - IronSecureDoc

Run the IronSecureDoc Docker Container

Start a container using the downloaded image.

docker container run --rm -p 8080:8080 -e IronSecureDoc_LicenseKey=<IRONSECUREDOC_LICENSE_KEY> -e ENVIRONMENT=Development -e HTTP_PORTS=8080 ironsoftwareofficial/ironsecuredoc:latest

Guacamole Docker (How it Works for Developers For PDF Security): Figure 16 - Docker Container

Access IronSecureDoc

If IronSecureDoc has a web interface, open the server's IP address in your browser with the specified port, for example, http://:8080. Complete any initial setup required for the application.

Below is the IronSecureDoc web interface:

Guacamole Docker (How it Works for Developers For PDF Security): Figure 17 - IronSecureDoc Web Interface

curl -X 'POST' \
  'http://localhost:8080/encrypt?user_password=demo' \
  -H 'accept: */*' \
  -H 'Content-Type: multipart/form-data' \
  -F 'pdf_file=@test.pdf;type=application/pdf'

Guacamole Docker (How it Works for Developers For PDF Security): Figure 18 - API POST

But if we post the code to the IronSecureDoc API, we might also want to request the password to encrypt the request with a user's password to a document. The output file of the document will automatically be sent and downloaded, and it will be saved safely.

Conclusion

Apache Guacamole will enable easy Docker integration for users who wish to remotely access and easily manage containerized applications, including IronSecureDoc, through secure and user-friendly SSH interfaces. Docker's flexibility and the convenience offered by Guacamole allow system administrators to provision, manage, and offer controlled access to powerful tools without exposing their servers directly to the users.

This would ensure scalability, security, and ease of use, which are ideal benefits for organizations when using containerized environments. Providing a reliable platform that simplifies operations while making access more accessible to the end users in the application deployment, testing, or even production, works.

Reliable and Compliant: It can make a full audit with maximum security. With IronSecureDoc REST API, secure printing efficient PDF format and error handling can now be easily integrated into the applications developed by web, mobile, and corporate systems developers. For information on IronSecureDoc's license, please visit the licensing page. For detailed configuration information about the products of Iron Software, please follow the library suite page.

Kannaopat Udonpant

Kannapat Udonpant

Software Engineer

 LinkedIn

Before becoming a Software Engineer, Kannapat completed a Environmental Resources PhD from Hokkaido University in Japan. While pursuing his degree, Kannapat also became a member of the Vehicle Robotics Laboratory, which is part of the Department of Bioproduction Engineering. In 2022, he leveraged his C# skills to join Iron Software's engineering team, where he focuses on IronPDF. Kannapat values his job because he learns directly from the developer who writes most of the code used in IronPDF. In addition to peer learning, Kannapat enjoys the social aspect of working at Iron Software. When he's not writing code or documentation, Kannapat can usually be found gaming on his PS5 or rewatching The Last of Us.
NEXT >
Graylog Docker (How it Works for Developers For PDF Security)

Ready to get started? Version: 2024.10 just released

Free DownloadView Licenses >