{"id":12130,"date":"2022-07-14T19:04:43","date_gmt":"2022-07-14T16:04:43","guid":{"rendered":"https:\/\/kifarunix.com\/?p=12130"},"modified":"2024-03-09T20:26:55","modified_gmt":"2024-03-09T17:26:55","slug":"install-apache-guacamole-as-docker-container-on-ubuntu","status":"publish","type":"post","link":"https:\/\/kifarunix.com\/install-apache-guacamole-as-docker-container-on-ubuntu\/","title":{"rendered":"Install Apache Guacamole as Docker Container on Ubuntu"},"content":{"rendered":"\n<p>In this guide, we are going to learn how to install Apache Guacamole as Docker container on Ubuntu. We are using Ubuntu 22.04. Apache Guacamole\u00a0is a clientless HTML5 web based remote desktop gateway which provides remote access to servers and desktops through a web browser. It supports standard protocols like VNC, RDP, and SSH.<\/p>\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>Table of Contents<\/h2><nav><ul><li><a href=\"#install-apache-guacamole-as-a-docker-container\">Install Apache Guacamole as a Docker Container<\/a><ul><li><a href=\"#install-apache-guacamole-as-a-docker-container-on-ubuntu-22-04\">Install Apache Guacamole as a Docker Container on Ubuntu 22.04<\/a><ul><li><a href=\"#install-docker-ce-on-ubuntu-22-04\">Install Docker CE on Ubuntu 22.04<\/a><\/li><li><a href=\"#install-docker-compose-on-ubuntu-22-04\">Install Docker Compose on Ubuntu 22.04;<\/a><\/li><li><a href=\"#download-apache-guacamole-container-images\">Download Apache Guacamole Container Images<\/a><\/li><\/ul><\/li><li><a href=\"#configure-apache-guacamole-authentication\">Configure Apache Guacamole Authentication<\/a><ul><li><a href=\"#create-my-sql-docker-container\">Create MySQL Docker Container<\/a><\/li><li><a href=\"#initialize-guacamole-my-sql-database\">Initialize Guacamole MySQL Database<\/a><\/li><li><a href=\"#create-guacamole-database-and-database-user\">Create Guacamole Database and Database User<\/a><\/li><\/ul><\/li><li><a href=\"#start-guacamole-server-container\">Start Guacamole Server Container<\/a><\/li><li><a href=\"#start-guacamole-client-container\">Start Guacamole Client Container<\/a><\/li><li><a href=\"#accessing-apache-guacamole-from-browser\">Accessing Apache Guacamole from Browser<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"install-apache-guacamole-as-a-docker-container\">Install Apache Guacamole as a Docker Container<\/h2>\n\n\n\n<p>Guacamole is made up of two parts;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>guacamole-server<\/code>, which provides the&nbsp;guacd&nbsp;proxy&nbsp;and all the native, server-side components required by Guacamole to connect to remote desktops.<\/li>\n\n\n\n<li><code>guacamole-client<\/code>&nbsp;which provides the client to be served by the servlet container which is usually&nbsp;<code>Tomcat<\/code>.<\/li>\n<\/ul>\n\n\n\n<p>You need to install both of these components to setup Apache Guacamole web-based remote desktop client.<\/p>\n\n\n\n<p>Guacamole is available on the default Ubuntu 22.04 repositories. However, available version is not up-to-date;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt-cache policy guacd<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>guacd:\n  Installed: (none)\n  Candidate: 1.3.0-1.1\n  Version table:\n     1.3.0-1.1 500\n        500 http:\/\/ke.archive.ubuntu.com\/ubuntu jammy\/universe amd64 Packages\n<\/code><\/pre>\n\n\n\n<p>Building Guacamole from sources as of this writing, fails since Ubuntu 22.04 ships with OpenSSL 3.x and Guacamole requires openssl 1.x to successfully compile and install.<\/p>\n\n\n\n<p>Thus, the only option, if it is really necessary to install Apache Guacamole on Ubuntu 22.04, is to <a href=\"https:\/\/kifarunix.com\/install-apache-guacamole-on-ubuntu\/\" target=\"_blank\" rel=\"noreferrer noopener\">disable the openssl related warnings from being treated as errors<\/a> or run it as a Docker container.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"install-apache-guacamole-as-a-docker-container-on-ubuntu-22-04\">Install Apache Guacamole as a Docker Container on Ubuntu 22.04<\/h3>\n\n\n\n<p>To be able to run Apache Guacamole as a Docker container on Ubuntu 22.04;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"install-docker-ce-on-ubuntu-22-04\">Install Docker CE on Ubuntu 22.04<\/h4>\n\n\n\n<p>Install Docker CE on Ubuntu 22.04 by running the commands below;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install ca-certificates curl gnupg lsb-release -y<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -fsSL https:\/\/download.docker.com\/linux\/ubuntu\/gpg | sudo gpg --dearmor &gt; \/etc\/apt\/trusted.gpg.d\/docker-archive-keyring.gpg<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>echo \\\n\"deb &#91;arch=$(dpkg --print-architecture)] https:\/\/download.docker.com\/linux\/ubuntu $(lsb_release -cs) stable\" \\\n&gt; \/etc\/apt\/sources.list.d\/docker.list<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>apt update\napt install docker-ce docker-ce-cli containerd.io<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"install-docker-compose-on-ubuntu-22-04\">Install Docker Compose on Ubuntu 22.04;<\/h4>\n\n\n\n<p>Execute the commands below to install Docker compose on Ubuntu 22.04;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -sL \"https:\/\/github.com\/docker\/compose\/releases\/download\/1.29.2\/docker-compose-$(uname -s)-$(uname -m)\" -o \/usr\/local\/bin\/docker-compose<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>chmod +x \/usr\/local\/bin\/docker-compose<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"download-apache-guacamole-container-images\">Download Apache Guacamole Container Images<\/h4>\n\n\n\n<p>Execute the commands below to download the Apache Guacamole server and client images.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker pull guacamole\/guacd<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>docker pull guacamole\/guacamole<\/code><\/pre>\n\n\n\n<p>Listing available images;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker images<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>REPOSITORY            TAG       IMAGE ID       CREATED        SIZE\nguacamole\/guacd       latest    e391c1b36ad7   15 hours ago   271MB\nguacamole\/guacamole   latest    ec2f40adddc3   17 hours ago   439MB<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"configure-apache-guacamole-authentication\">Configure Apache Guacamole Authentication<\/h3>\n\n\n\n<p>The Guacamole Docker container needs at least one authentication mechanism in order to function, such as a MySQL database, PostgreSQL database, LDAP directory or RADIUS server.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"create-my-sql-docker-container\">Create MySQL Docker Container<\/h4>\n\n\n\n<p>In this guide, we will use MySQL database authentication.<\/p>\n\n\n\n<p>As a result, let&#8217;s deploy MySQL database container. We are using the lastest MySQL 8 docker image.<\/p>\n\n\n\n<p>The command below will download latest MySQL 8 docker image, create a MySQL 8 Docker container called, <strong><code>guacamole_db<\/code><\/strong>, Guacamole database (<strong><code>guacdb<\/code><\/strong>), MySQL root user password;<\/p>\n\n\n\n<pre class=\"scroll-sz\"><code>docker run --name guacamole_db \\\n\t-e MYSQL_ROOT_PASSWORD=p@ssw0rd \\\n\t-e MYSQL_DATABASE=guacdb \\\n\t-d mysql\/mysql-server\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"initialize-guacamole-my-sql-database\">Initialize Guacamole MySQL Database<\/h4>\n\n\n\n<p>Next, you need to generate Apache Guacamole MySQL database initialization schema.<\/p>\n\n\n\n<p>Let&#8217;s create a directory to store the schema;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir -p \/opt\/guacamole\/mysql<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>docker run --rm guacamole\/guacamole \/opt\/guacamole\/bin\/initdb.sh --mysql &gt; \/opt\/guacamole\/mysql\/01-initdb.sql<\/code><\/pre>\n\n\n\n<p>Copy the Guacamole MySQL database initialization script to MySQL Docker container;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker cp \/opt\/guacamole\/mysql\/01-initdb.sql guacamole_db:\/docker-entrypoint-initdb.d<\/code><\/pre>\n\n\n\n<p>The script will be copied to <code>\/docker-entrypoint-initdb.d<\/code> directory of the MySQL docker container.<\/p>\n\n\n\n<p>Connect to MySQL database container;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker exec -it guacamole_db bash<\/code><\/pre>\n\n\n\n<p>This will drop you to the root directory of MySQL container.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bash-4.4#<\/code><\/pre>\n\n\n\n<p>Check that the initialization script is available;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ls \/docker-entrypoint-initdb.d\/<\/code><\/pre>\n\n\n\n<p>Initialize Guacamole MySQL Database;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/docker-entrypoint-initdb.d\/<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>mysql -u root -p<\/code><\/pre>\n\n\n\n<p>Use the password specified with <strong><code>MYSQL_ROOT_PASSWORD<\/code><\/strong> above. You should now drop into MySQL prompt;<\/p>\n\n\n\n<pre class=\"scroll-box\"><code>\nbash-4.4# mysql -u root -p\nEnter password: \nWelcome to the MySQL monitor.  Commands end with ; or \\g.\nYour MySQL connection id is 24\nServer version: 8.0.29 MySQL Community Server - GPL\n\nCopyright (c) 2000, 2022, Oracle and\/or its affiliates.\n\nOracle is a registered trademark of Oracle Corporation and\/or its\naffiliates. Other names may be trademarks of their respective\nowners.\n\nType 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.\n\nmysql>\n<\/code><\/pre>\n\n\n\n<p>Initialize the Guacamole database;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>use guacdb;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>source 01-initdb.sql;<\/code><\/pre>\n\n\n\n<p>When done initializing, check the tables available;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>show tables;<\/code><\/pre>\n\n\n\n<p>Sample output;<\/p>\n\n\n\n<pre class=\"scroll-box\"><code>\n+---------------------------------------+\n| Tables_in_guacdb                      |\n+---------------------------------------+\n| guacamole_connection                  |\n| guacamole_connection_attribute        |\n| guacamole_connection_group            |\n| guacamole_connection_group_attribute  |\n| guacamole_connection_group_permission |\n| guacamole_connection_history          |\n| guacamole_connection_parameter        |\n| guacamole_connection_permission       |\n| guacamole_entity                      |\n| guacamole_sharing_profile             |\n| guacamole_sharing_profile_attribute   |\n| guacamole_sharing_profile_parameter   |\n| guacamole_sharing_profile_permission  |\n| guacamole_system_permission           |\n| guacamole_user                        |\n| guacamole_user_attribute              |\n| guacamole_user_group                  |\n| guacamole_user_group_attribute        |\n| guacamole_user_group_member           |\n| guacamole_user_group_permission       |\n| guacamole_user_history                |\n| guacamole_user_password_history       |\n| guacamole_user_permission             |\n+---------------------------------------+\n23 rows in set (0.01 sec)\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"create-guacamole-database-and-database-user\">Create Guacamole Database and Database User<\/h4>\n\n\n\n<p>Next, create the Guacamole database user and grant the required permissions on the database;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>create user guacadmin@'%' identified by 'ChangeME';<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>grant SELECT,UPDATE,INSERT,DELETE on guacdb.* to guacadmin@'%';<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>flush privileges;\nquit<\/code><\/pre>\n\n\n\n<p>Exit the MySQL container;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>exit<\/code><\/pre>\n\n\n\n<p>If you check the running containers;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker ps<\/code><\/pre>\n\n\n\n<p>Sample output;<\/p>\n\n\n\n<pre class=\"scroll-box\"><code>\nCONTAINER ID   IMAGE                COMMAND                  CREATED          STATUS                    PORTS                       NAMES\nb78a10e6b107   mysql\/mysql-server   \"\/entrypoint.sh mysq\u2026\"   15 minutes ago   Up 15 minutes (healthy)   3306\/tcp, 33060-33061\/tcp   guacamole_db\n<\/code><\/pre>\n\n\n\n<p>As you can see, the health status is healthy, (started and running).<\/p>\n\n\n\n<p>You can check the status again and print specific fields;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker ps --format '{{.ID}}\\t{{.Image}}\\t{{.Status}}\\t{{.Names}}'<\/code><\/pre>\n\n\n\n<p>You can also check the logs for the container;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker logs guacamole_db<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"start-guacamole-server-container\">Start Guacamole Server Container<\/h3>\n\n\n\n<p>You can start the Guacamole Server container in the background as a service.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker run --name guacamole-server -d guacamole\/guacd<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>docker logs --tail 10 guacamole-server<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>guacd&#91;7]: INFO:\tGuacamole proxy daemon (guacd) version 1.4.0 started\nguacd&#91;7]: INFO:\tListening on host 0.0.0.0, port 4822<\/code><\/pre>\n\n\n\n<p>Again, list running containers after a few moments.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker ps<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\nCONTAINER ID   IMAGE                COMMAND                  CREATED             STATUS                       PORTS                       NAMES\n669ad905db27   guacamole\/guacd      \"\/bin\/sh -c '\/usr\/lo\u2026\"   23 minutes ago      Up 23 minutes (healthy)      4822\/tcp                    guacamole-server\nb78a10e6b107   mysql\/mysql-server   \"\/entrypoint.sh mysq\u2026\"   About an hour ago   Up About an hour (healthy)   3306\/tcp, 33060-33061\/tcp   guacamole_db\n<\/code><\/pre>\n\n\n\n<p>As you can see, Guacamole server is now up and running.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"start-guacamole-client-container\">Start Guacamole Client Container<\/h3>\n\n\n\n<p>You can now start the Guacamole client.<\/p>\n\n\n\n<p>In order for this to work, you need to link it to the Guacamole server and the Guacamole database.<\/p>\n\n\n\n<p>You also need to expose the Guacamole client port, <strong>8080<\/strong> on the host to allow external access to the Guacamole.<\/p>\n\n\n\n<p>All the containers will use the default Docker networks.<\/p>\n\n\n\n<p>Thus, launch the Guacamole client;<\/p>\n\n\n\n<pre class=\"scroll-sz\"><code>docker run --name guacamole-client \\\n\t--link guacamole-server:guacd \\\n\t--link guacamole_db:mysql \\\n\t-e MYSQL_DATABASE=guacdb \\\n\t-e MYSQL_USER=guacadmin \\\n\t-e MYSQL_PASSWORD=ChangeME \\\n\t-d -p 80:8080 guacamole\/guacamole\n<\/code><\/pre>\n\n\n\n<p>Check the Docker container processes;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker ps<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\nCONTAINER ID   IMAGE                 COMMAND                  CREATED             STATUS                       PORTS                                   NAMES\n07233565559c   guacamole\/guacamole   \"\/opt\/guacamole\/bin\/\u2026\"   23 seconds ago      Up 20 seconds                0.0.0.0:80->8080\/tcp, :::80->8080\/tcp   guacamole-client\n669ad905db27   guacamole\/guacd       \"\/bin\/sh -c '\/usr\/lo\u2026\"   29 minutes ago      Up 29 minutes (healthy)      4822\/tcp                                guacamole-server\nb78a10e6b107   mysql\/mysql-server    \"\/entrypoint.sh mysq\u2026\"   About an hour ago   Up About an hour (healthy)   3306\/tcp, 33060-33061\/tcp               guacamole_db\n<\/code><\/pre>\n\n\n\n<p>As you can see, the Guacamole client is listening on port 8080, exposed on the host as port 80;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ss -altnp | grep :80<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\nLISTEN 0      4096         0.0.0.0:80        0.0.0.0:*    users:((\"docker-proxy\",pid=6129,fd=4))   \nLISTEN 0      4096            [::]:80           [::]:*    users:((\"docker-proxy\",pid=6135,fd=4))\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"accessing-apache-guacamole-from-browser\">Accessing Apache Guacamole from Browser<\/h3>\n\n\n\n<p>Once Guacamole is setup, you can access it from web browser using the address&nbsp;<code><strong>http:\/\/server-IP\/guacamole<\/strong><\/code>.<\/p>\n\n\n\n<p>Default Credentials;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>User: <strong>guacadmin<\/strong><\/li>\n\n\n\n<li>Password: <strong>guacadmin<\/strong><\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1336\" height=\"761\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2022\/07\/apache-guacamole-docker-login.png\" alt=\"Install Apache Guacamole as Docker Container on Ubuntu\" class=\"wp-image-13439\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2022\/07\/apache-guacamole-docker-login.png?v=1657814087 1336w, https:\/\/kifarunix.com\/wp-content\/uploads\/2022\/07\/apache-guacamole-docker-login-768x437.png?v=1657814087 768w\" sizes=\"(max-width: 1336px) 100vw, 1336px\" \/><\/figure><\/div>\n\n\n<p>Upon successful login, you get to Apache Guacamole web dashboard.<\/p>\n\n\n\n<div><a href=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2022\/07\/apache-guacamole-docker-connections.png\" class=\"td-modal-image\"><figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1905\" height=\"541\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2022\/07\/apache-guacamole-docker-connections.png\" alt=\"Install Apache Guacamole as Docker Container on Ubuntu\" class=\"wp-image-13438\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2022\/07\/apache-guacamole-docker-connections.png?v=1657814072 1905w, https:\/\/kifarunix.com\/wp-content\/uploads\/2022\/07\/apache-guacamole-docker-connections-768x218.png?v=1657814072 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2022\/07\/apache-guacamole-docker-connections-1536x436.png?v=1657814072 1536w\" sizes=\"(max-width: 1905px) 100vw, 1905px\" \/><\/figure><\/a><\/div>\n\n\n\n<p>And there you go. As you can see, no connections have been added yet. You can now add connections to your Guacamole.<\/p>\n\n\n\n<p>You can also reset Guacamole user password on the settings page.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1893\" height=\"729\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2022\/07\/guacamole-settings.png\" alt=\"Install Apache Guacamole as Docker Container on Ubuntu\" class=\"wp-image-13440\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2022\/07\/guacamole-settings.png?v=1657814254 1893w, https:\/\/kifarunix.com\/wp-content\/uploads\/2022\/07\/guacamole-settings-768x296.png?v=1657814254 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2022\/07\/guacamole-settings-1536x592.png?v=1657814254 1536w\" sizes=\"(max-width: 1893px) 100vw, 1893px\" \/><\/figure>\n\n\n\n<p>That marks the end of our guide on install and run Apache Guacamole as a Docker container on Ubuntu 22.04.<\/p>\n\n\n\n<p>Read more on <a href=\"https:\/\/guacamole.apache.org\/doc\/0.9.6\/gug\/users-guide.html\" target=\"_blank\" rel=\"noreferrer noopener\">Guacamole User Guide<\/a>.<\/p>\n\n\n\n<p>Other Tutorials;<\/p>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/install-apache-guacamole-on-ubuntu\/\" target=\"_blank\" rel=\"noreferrer noopener\">Install Apache Guacamole on Ubuntu 22.04<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/guacamole-how-to-fix-rdp-server-closed-refused-connection-security-negotiation-failed-wrong-security-type\/\" target=\"_blank\" rel=\"noreferrer noopener\">Guacamole: How to fix RDP server closed\/refused connection: Security negotiation failed (wrong security type?)<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this guide, we are going to learn how to install Apache Guacamole as Docker container on Ubuntu. We are using Ubuntu 22.04. Apache Guacamole\u00a0is<\/p>\n","protected":false},"author":3,"featured_media":13439,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_lock_modified_date":false,"footnotes":""},"categories":[121,917,214],"tags":[1479,5511,5516,215,5514,5512,5513,978,5515],"class_list":["post-12130","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-howtos","category-guacamole","category-remote-desktop","tag-apache-guacamole","tag-apache-guacamole-docker-container","tag-container","tag-guacamole","tag-guacamole-docker","tag-guacamole-docker-container","tag-install-apache-guacamole-as-docker-container-on-ubuntu","tag-remote-desktop","tag-use-guacamole-docker-with-mysql-docker-container","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-50","resize-featured-image"],"_links":{"self":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/12130"}],"collection":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/comments?post=12130"}],"version-history":[{"count":25,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/12130\/revisions"}],"predecessor-version":[{"id":20593,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/12130\/revisions\/20593"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media\/13439"}],"wp:attachment":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media?parent=12130"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/categories?post=12130"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/tags?post=12130"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}