Apache Guacamole: HTTP Status 404 — Not Found

Kenneth KOFFI
2 min readJun 10, 2023


Do you want to get rid of that annoying HTTP Status 404 — Not Found error you receive every time you forget to add /guacamole to the end of your Guacamole instance URL?

Yeah, I think you do. So read on !

By default, Apache Guacamole is NOT accessible at the root / of your domain name, but rather at https://<your fqdn>/guacamole.

We suppose that guacamole.traefik.me is your FQDN. When you try to access Guacamole at https://guacamole.traefik.me instead of https://guacamole.traefik.me/guacamole, you receive the error above.

Fortunately, we can change that behavior.

First method

If you installed the application following my Apache Guacamole: manual installation with docker-compose blog post, then you’re using Docker. And the official Guacamole docker image supports the environment variable WEBAPP_CONTEXT which allow overriding the default path. Setting its value to ROOT will make your Guacamole instance accessible via the ROOT /of your FQDN.

Edit the ${HOME}/docker-stack/docker-compose.yml file we created in the previous blog post to add the environment variable.


# guacamole
container_name: guacamole_frontend
- guacd
- postgres

Run the command below to apply the change:

docker-compose -f ${HOME}/docker-stack/guacamole/docker-compose.yml up -d

Now your instance is no more reachable at /guacamole. If you wish to keep both paths (/guacamole and /) working, keep reading.

Second method

Alternatively, if you serve Guacamole through a reverse proxy (like HAProxy) as I do, the configuration can be altered slightly to handle requests at a different location externally while still serving internal requests at /guacamole/.

Edit the ${HOME}/docker-stack/haproxy/haproxy.cfg file we created in the previous blog post:


backend "${ENDPOINT}"
acl begins_with_guacamole path_beg /guacamole/ /guacamole
http-request redirect code 301 prefix /guacamole unless begins_with_guacamole
server guacamole guacamole:8080 check inter 10s resolvers docker_resolver

Then restart the HAProxy container to apply the change:

docker restart haproxy

I personally prefer this way because it makes Guacamole reachable at both https://<your fqdn>/ and https://<your fqdn>/guacamole/. And you can also include additional paths if you want.

Thank you for reading this article all the way to the end! I hope you found the information and insights shared here to be valuable and interesting. Get in touch with me on LinkedIn.

I appreciate your support and look forward to sharing more content with you in the future. Until next time!

This post also appears on my personal Blog.



Kenneth KOFFI

Administrateur systèmes avec une appétence pour le Cloud et le DevOps