1. Images & Charts
  2. guacamole-fips

Minimus is ending operations. The registry shuts down 22 October 2026. Read the announcement here

guacamole-fips

guacamole-fips

Apps
Fips
Stig
Updated yesterday

Guacamole-FIPS Overview

Secure your stack with a FIPS-validated, hardened Guacamole image freshly-built by Minimus. Minimus images always include the most up-to-date package version for all packages and dependencies contained in the image.


Guacamole gives support and IT teams browser-based access to remote desktops and servers over RDP, VNC, and SSH, so users can reach a Windows or Linux machine from any web browser without installing client software, a VPN, or opening extra network ports. This makes it useful for centralizing remote access to internal systems, granting contractors or support staff temporary access without distributing native remote-desktop clients, and routing connections through a single, auditable web gateway. Use this image when you need to meet the requirements for FIPS-validated cryptographic protection.


FIPS 140-3 Certification

This image is FIPS-validated to ensure its cryptographic operations meet the Federal Information Processing Standards (FIPS) required for secure government and regulated environments. Its core cryptographic modules are validated under the NIST Cryptographic Module Validation Program (CMVP) and comply with the FIPS 140-3 standard.

To verify that the FIPS 140-3 provider is configured and active, follow the instructions in the FIPS compliance tab.


Try It Out

Guacamole needs two companion pieces to run: Guacamole-Server, which provides guacd, the daemon that proxies RDP, VNC, and SSH connections, and a database that stores users and connections through Guacamole's JDBC auth extension. The steps below start Guacamole-Server-FIPS, a Postgres-FIPS database, and the Guacamole web application, all using Minimus FIPS images.

Step 1 - Create a Docker Network

Create a shared network so the containers can reach each other by name:

docker network create guacamole-net

Step 2 - Start Guacamole-Server

Run the Minimus Guacamole-Server-FIPS image on the shared network:

docker run --rm -d --name guacamole-server \
  --network guacamole-net \
  reg.mini.dev/guacamole-server-fips

Step 3 - Start a Postgres Database

Start a database using the Minimus Postgres-FIPS image. The following command sets the password to MinimusSecure!!, but you can set any password you want:

docker run --rm -d --name postgres \
  --network guacamole-net \
  -e POSTGRES_DB=guacamole_db \
  -e POSTGRES_USER=guacamole_user \
  -e POSTGRES_PASSWORD=MinimusSecure!! \
  reg.mini.dev/postgres-fips

Step 4 - Initialize the Database Schema

Generate Guacamole's schema with the Minimus image itself, then load it into Postgres:

docker run --rm reg.mini.dev/guacamole-fips /opt/guacamole/bin/initdb.sh --postgresql | \
  docker exec -i postgres psql -U guacamole_user -d guacamole_db -f -

If you see a connection error, give Postgres a few seconds to finish starting up and run the command again.

Step 5 - Start Guacamole

Run Guacamole on the same network, pointing it at Guacamole-Server and the Postgres database:

docker run --rm -d --name guacamole \
  --network guacamole-net \
  -p 8080:8080 \
  -e GUACD_HOSTNAME=guacamole-server \
  -e POSTGRES_HOSTNAME=postgres \
  -e POSTGRES_DATABASE=guacamole_db \
  -e POSTGRES_USER=guacamole_user \
  -e POSTGRES_PASSWORD=MinimusSecure!! \
  reg.mini.dev/guacamole-fips

Visit http://localhost:8080/guacamole/ to access the Guacamole UI and log in with the default administrator account:

  • Username: guacadmin
  • Password: guacadmin

This account is a well-known default, so change its password immediately after logging in.

Step 6 - Add a Sample Connection

The dashboard starts out empty, so we'll use Guacamole's REST API to add a sample connection.

First, authenticate as guacadmin to get a token:

TOKEN=$(curl -s -d "username=guacadmin&password=guacadmin" \
  http://localhost:8080/guacamole/api/tokens | sed -n 's/.*"authToken":"\([^"]*\)".*/\1/p')

Then create a connection with that token:

curl -s -X POST "http://localhost:8080/guacamole/api/session/data/postgresql/connections?token=$TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "demo-vnc",
    "protocol": "vnc",
    "parameters": {"hostname": "guacamole-server", "port": "5900"},
    "attributes": {}
  }'

Refresh the dashboard and demo-vnc will appear under "All Connections." (Nothing is actually listening on that host and port, so opening the connection won't succeed).

Step 7 - Clean Up

Stop and remove the containers and network:

docker rm -f guacamole postgres guacamole-server
docker network rm guacamole-net

Technical Considerations

The Guacamole-FIPS image provided by Minimus is a FIPS-validated, slim, security-hardened alternative to the public image.

Guacamole-FIPS built by Minimus:

  1. Runs as a non-root user by default, matching the public image's non-root default of user guacamole (UID 1001).
  2. Drill down on the version specification tab to see the default user, listening ports, entrypoint, volumes, environment variables, etc.

The Payoff

A hardened, minimal image that will remain more secure for the long run and accrue vulnerabilities at a slower rate.


Terms & Info

Trademark

This catalog is published by Minimus. All product names, logos, and marks, other than those belonging to Minimus, shown are owned by their respective rights holders and appear here only to identify the open source software each image contains. Minimus claims no ownership of those marks and implies no affiliation with, endorsement by, certification by, or sponsorship by any rights holder.

Disclaimer

Images are provided "as-is" without warranty of any kind. "Hardened" refers to the security configuration applied at the time of build and does not constitute a guarantee of ongoing security or absence of vulnerabilities. The free tier is provided without support, SLA, or guaranteed patching timelines. Security updates may be applied to paid subscriptions before or instead of free tier images. By pulling or using any image you agree to our Terms of Use.