Apache Guacamole 1.4 Docker: Difference between revisions

From WikiMLT
m (Стадий: 6 [Фаза:Утвърждаване, Статус:Утвърден]; Категория:Linux Server)
m (Text replacement - "mlw-continue" to "code-continue")
 
(3 intermediate revisions by the same user not shown)
Line 13: Line 13:
</syntaxhighlight>
</syntaxhighlight>
Creating Initial <code>docker-compose.yaml</code>.
Creating Initial <code>docker-compose.yaml</code>.
<syntaxhighlight lang="shell" class="mlw-continue">
<syntaxhighlight lang="shell" class="code-continue">
docker-compose.yaml
docker-compose.yaml
</syntaxhighlight>
</syntaxhighlight>
Line 39: Line 39:
docker cp guac_1.4_db.sql guacdb:/guac_1.4_db.sql
docker cp guac_1.4_db.sql guacdb:/guac_1.4_db.sql
</syntaxhighlight>Open a shell in the container an initialize the database.
</syntaxhighlight>Open a shell in the container an initialize the database.
<syntaxhighlight lang="shell" line="1" class="margin-top-gray mlw-continue">
<syntaxhighlight lang="shell" line="1" class="border-top-gray-next code-continue">
docker exec -it guacdb bash
docker exec -it guacdb bash
</syntaxhighlight><syntaxhighlight lang="shell" line="1" class="root-prompt mlw-continue-padding-top-07em">
</syntaxhighlight><syntaxhighlight lang="shell" line="1" class="root-prompt code-continue-padding-top-07em">
mysql guacamole_db < /guac_1.4_db.sql
mysql guacamole_db < /guac_1.4_db.sql
exit
exit
Line 48: Line 48:
</syntaxhighlight>
</syntaxhighlight>
== Setup Apache Guacamole ==
== Setup Apache Guacamole ==
Here we will modify <code>docker-compose.yaml</code> in the following way. Note in my case the host's port is <code>8082</code>.<syntaxhighlight lang="shell" class="mlw-continue">
Here we will modify <code>docker-compose.yaml</code> in the following way. Note in my case the host's port is <code>8082</code>.<syntaxhighlight lang="shell" class="code-continue">
docker-compose.yaml
docker-compose.yaml
</syntaxhighlight>
</syntaxhighlight>
Line 104: Line 104:
</syntaxhighlight>The next step that should be done is to create a new Administrator user and remove the default one! Also enable TOTP: the module is already integrated in the Docker container, so we just need to enable it by the docker's configuration - see line <code>36</code> of the above listing.
</syntaxhighlight>The next step that should be done is to create a new Administrator user and remove the default one! Also enable TOTP: the module is already integrated in the Docker container, so we just need to enable it by the docker's configuration - see line <code>36</code> of the above listing.
== References ==
== References ==
* [[Apache Guacamole VNC Client and PulseAudio for Desktop Users]]
* Systems.dance: [https://www.systems.dance/2021/01/apache-guacamole-and-docker-compose/ '''Apache Guacamole and docker-compose''']
* Systems.dance: [https://www.systems.dance/2021/01/apache-guacamole-and-docker-compose/ '''Apache Guacamole and docker-compose''']
*Mauro Frigerio blog: [https://frigi.ch/en/2021/07/install-guacamole-on-docker-with-traefik-and-2fa/ '''Install Guacamole on Docker with Traefik and 2FA''']
*Mauro Frigerio blog: [https://frigi.ch/en/2021/07/install-guacamole-on-docker-with-traefik-and-2fa/ '''Install Guacamole on Docker with Traefik and 2FA''']
Line 110: Line 111:
* DockerHub: [https://hub.docker.com/u/guacamole Guacamole]
* DockerHub: [https://hub.docker.com/u/guacamole Guacamole]
* Stack Overflow: [https://stackoverflow.com/a/67335047/6543935 '''Difference in docker restart policy between on-failure and unless-stopped?''']
* Stack Overflow: [https://stackoverflow.com/a/67335047/6543935 '''Difference in docker restart policy between on-failure and unless-stopped?''']
* Dev.to: [https://dev.to/suntong/autostart-docker-container-with-systemd-5aod Autostart docker container with systemd]
<noinclude>
<noinclude>
<div id='devStage'>
<div id='devStage'>

Latest revision as of 07:28, 26 September 2022

Pull the Dock­er im­ages

docker pull guacamole/guacamole
docker pull guacamole/guacd
docker pull mariadb/server

Set­up the Data­base

Gen­er­ate Data­base Ini­tial­iza­tion Script.

docker run -it guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > guac_1.4_db.sql

Cre­at­ing Ini­tial docker-compose.yaml.

docker-compose.yaml
version: '3'
services:

  guacdb:
    container_name: guacdb
    image: mariadb/server:latest
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 'MariaDBRootPSW'
      MYSQL_DATABASE: 'guacamole_db'
      MYSQL_USER: 'guacamole_user'
      MYSQL_PASSWORD: 'MariaDBUserPSW'
    volumes:
      - ./guacdb-data:/var/lib/mysql

volumes:
  guacdb-data:

Bring the database's con­tain­er up.

docker-compose up -d

Copy the data­base ini­tial­iza­tion script in­to the con­tain­er.

docker cp guac_1.4_db.sql guacdb:/guac_1.4_db.sql

Open a shell in the con­tain­er an ini­tial­ize the data­base.

docker exec -it guacdb bash
mysql guacamole_db < /guac_1.4_db.sql
exit

Bring the database's con­tain­er down.

docker-compose down

Set­up Apache Gua­camole

Here we will mod­i­fy docker-compose.yaml in the fol­low­ing way. Note in my case the host's port is 8082.

docker-compose.yaml
version: "3"
services:

  guacdb:
    container_name: guacdb
    image: mariadb/server:latest
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: "MariaDBRootPSW"
      MYSQL_DATABASE: "guacamole_db"
      MYSQL_USER: "guacamole_user"
      MYSQL_PASSWORD: "MariaDBUserPSW"
    volumes:
      - ./guacdb-data:/var/lib/mysql

  guacd:
    container_name: guacd
    image: guacamole/guacd
    restart: always
    volumes:
      - ./guacd-data/drive:/drive:rw
      - ./guacd-data/record:/record:rw

  guacamole:
    container_name: guacamole
    image: "guacamole/guacamole:latest"
    restart: always
    ports:
      - "8082:8080"
    environment:
      GUACD_HOSTNAME: "guacd"
      MYSQL_HOSTNAME: "guacdb"
      MYSQL_DATABASE: "guacamole_db"
      MYSQL_USER: "guacamole_user"
      MYSQL_PASSWORD: "MariaDBUserPSW"
      TOTP_ENABLED: "true"
    depends_on:
      - "guacdb"
      - "guacd"

volumes:
  guacdb-data:
  guacd-data:

Bring every­thing up.

docker-compose up -d

At this point you should be able to ac­cess http://host.ip.address:8082/gua­camole and lo­gin with gua­cad­min/gua­cad­min.

Apache2 Re­verse Proxy

Fur­ther with­in my dev en­vi­ron­ment I'm us­ing the script a2proxy to cre­ate Apache2 Re­verse Proxy yo the in­stance:

sudo a2proxy guac 8082

The next step that should be done is to cre­ate a new Ad­min­is­tra­tor user and re­move the de­fault one! Al­so en­able TOTP: the mod­ule is al­ready in­te­grat­ed in the Dock­er con­tain­er, so we just need to en­able it by the docker's con­fig­u­ra­tion – see line 36 of the above list­ing.

Ref­er­ences