Поиск по сайту:

Как установить Apache Guacamole в качестве контейнера Docker в Ubuntu


На этой странице

  1. Предпосылки
  2. Установить Docker Engine
  3. Установите Docker Compose
  4. Загрузить сервер и клиент Apache Guacamole
  5. Запуск контейнера Apache Guacamole MySQL
  6. Запуск контейнера сервера гуакамоле
  7. Запуск клиентского контейнера гуакамоле
  8. Доступ к панели управления Apache Guacamole
  9. Заключение

Apache Guacamole — это бесплатное бесклиентское приложение для удаленного рабочего стола с открытым исходным кодом, которое позволяет вам получать доступ к удаленным рабочим столам и серверам через веб-браузер. Он поддерживает стандартные протоколы, такие как VNC, RDP и SSH, и использует HTML5 для удаленного подключения. Он может работать в большинстве дистрибутивов Linux, а клиент работает в любом современном веб-браузере. Вам не нужно устанавливать какое-либо программное обеспечение в вашей системе. Просто просмотрите и подключитесь к любому удаленному серверу, определенному на вашем сервере.

В этом посте мы покажем вам, как установить сервер и клиент Apache Guacamole с Docker на Ubuntu 22.04.

Предпосылки

  • Сервер под управлением Ubuntu 22.04.
  • На сервере настроен пароль root.

Установите движок Docker

Всегда рекомендуется устанавливать на сервер последнюю версию Docker.

Сначала установите необходимые зависимости с помощью следующей команды:

apt install ca-certificates curl gnupg lsb-release -y

После установки всех зависимостей добавьте ключ и репозиторий Docker GPG с помощью следующей команды:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor > /etc/apt/trusted.gpg.d/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list

Затем обновите репозиторий и установите пакет Docker Engine с помощью следующей команды:

apt update -y
apt install docker-ce docker-ce-cli containerd.io -y

После завершения установки проверьте версию Docker с помощью следующей команды:

docker --version

Вы должны получить следующий результат:

Docker version 20.10.18, build b40c2f6

Установите Docker Compose

Вам также потребуется установить Docker Compose на свой сервер. Вы можете установить его с помощью следующей команды:

curl -sL "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

Затем проверьте версию Docker Compose с помощью следующей команды:

docker-compose --version

Вы получите следующий вывод:

docker-compose version 1.29.2, build 5becea4c

Загрузите сервер и клиент Apache Guacamole

Во-первых, вам нужно будет загрузить образ сервера и клиента Apache Guacamole из реестра Docker.

Сначала загрузите образ сервера с помощью следующей команды:

docker pull guacamole/guacd

Вы должны увидеть следующий вывод:

Using default tag: latest
latest: Pulling from guacamole/guacd
4b7b4a8876e2: Pull complete 
4e542e9cf89d: Pull complete 
9741340fbbb2: Pull complete 
96fa725029d6: Pull complete 
0f0a6df13f2a: Pull complete 
a4fa6e99a790: Pull complete 
07365dfaa371: Pull complete 
Digest: sha256:efdc09beba21e2c5d7c8c77e8c6b95ffd173d75645c9c41b6024f5b835d2a034
Status: Downloaded newer image for guacamole/guacd:latest
docker.io/guacamole/guacd:latest

Сначала загрузите образ клиента с помощью следующей команды:

docker pull guacamole/guacamole

Вы должны увидеть следующий вывод:

Using default tag: latest
latest: Pulling from guacamole/guacamole
2b55860d4c66: Pull complete 
2ca45fc4c4ca: Pull complete 
0cd32add6672: Pull complete 
ac52cbbb8ca2: Pull complete 
7f7dc3a9f4cc: Pull complete 
5d7996a24402: Pull complete 
4819d3e4118d: Pull complete 
055afbac1f72: Pull complete 
23ee772344b7: Pull complete 
e44569de6126: Pull complete 
f7d7e8014b18: Pull complete 
Digest: sha256:8a8db8cf9f5359aa20547382213a42a720ea1c5fe86460ded727061e1995d9f2
Status: Downloaded newer image for guacamole/guacamole:latest
docker.io/guacamole/guacamole:latest

Затем проверьте загруженные изображения с помощью следующей команды:

docker images

Вы получите следующий вывод:

REPOSITORY            TAG       IMAGE ID       CREATED        SIZE
guacamole/guacd       latest    4086ac9e35a7   9 hours ago    271MB
guacamole/guacamole   latest    959856a45436   10 hours ago   432MB

Запустите контейнер Apache Guacamole MySQL

Во-первых, вам понадобится как минимум один контейнер базы данных для аутентификации Apache Guacamole. Вы можете загрузить и запустить контейнер MySQL с помощью следующей команды:

docker run --name guacamoledb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=guacdb -d mysql/mysql-server

Вы получите следующий вывод:

latest: Pulling from mysql/mysql-server
cdd8b07c6082: Pull complete 
c2f1720beca1: Pull complete 
39f143a8d6de: Pull complete 
118a8285b641: Pull complete 
b45cbcaf75c7: Pull complete 
d4574372e600: Pull complete 
1f565a3cbc52: Pull complete 
Digest: sha256:e30a0320f2e3c7b7ee18ab903986ada6eb1ce8e5ef29941b36ec331fae5f10b2
Status: Downloaded newer image for mysql/mysql-server:latest
c7a9309eac20a7d0bb6f0a16460bf2b678aae741c201efae8974ea64a3736595

Затем создайте каталог для хранения базы данных:

mkdir -p /opt/guacamole/mysql

Затем сгенерируйте сценарий инициализации MySQL с помощью следующей команды:

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

Затем скопируйте сценарий инициализации базы данных Guacamole MySQL в контейнер MySQL Docker:

docker cp /opt/guacamole/mysql/01-initdb.sql guacamoledb:/docker-entrypoint-initdb.d

Затем подключитесь к контейнеру базы данных MySQL с помощью следующей команды:

docker exec -it guacamoledb bash

После подключения вы получите следующую оболочку:

bash-4.4# 

Затем перечислите сценарий инициализации MySQL с помощью следующей команды:

cd /docker-entrypoint-initdb.d/
ls

Вывод:

01-initdb.sql

Затем подключитесь к оболочке MySQL с помощью следующей команды:

mysql -u root -p

Затем переключите базу данных на guacd и инициализируйте базу данных гуакамоле:

use guacdb;
source 01-initdb.sql;

Затем проверьте все таблицы с помощью следующей команды:

show tables;

Вы получите следующий вывод:

+---------------------------------------+
| Tables_in_guacdb                      |
+---------------------------------------+
| guacamole_connection                  |
| guacamole_connection_attribute        |
| guacamole_connection_group            |
| guacamole_connection_group_attribute  |
| guacamole_connection_group_permission |
| guacamole_connection_history          |
| guacamole_connection_parameter        |
| guacamole_connection_permission       |
| guacamole_entity                      |
| guacamole_sharing_profile             |
| guacamole_sharing_profile_attribute   |
| guacamole_sharing_profile_parameter   |
| guacamole_sharing_profile_permission  |
| guacamole_system_permission           |
| guacamole_user                        |
| guacamole_user_attribute              |
| guacamole_user_group                  |
| guacamole_user_group_attribute        |
| guacamole_user_group_member           |
| guacamole_user_group_permission       |
| guacamole_user_history                |
| guacamole_user_password_history       |
| guacamole_user_permission             |
+---------------------------------------+

Затем создайте пользователя с правами администратора и установите пароль с помощью следующей команды:

create user '%';

Затем сбросьте привилегии и выйдите из оболочки MySQL с помощью следующей команды:

flush privileges;
exit;

Затем выйдите из контейнера MySQL, используя следующую команду:

exit

Теперь вы можете проверить работающий контейнер с помощью следующей команды:

docker ps

Вы должны увидеть контейнер MySQL в следующем выводе:

CONTAINER ID   IMAGE                COMMAND                  CREATED         STATUS                   PORTS                       NAMES
c7a9309eac20   mysql/mysql-server   "/entrypoint.sh mysq…"   2 minutes ago   Up 2 minutes (healthy)   3306/tcp, 33060-33061/tcp   guacamoledb

Вы также можете проверить журналы контейнера с помощью следующей команды:

docker logs guacamoledb

Вы получите следующий вывод:

[Entrypoint] Starting MySQL 8.0.30-1.2.9-server
2022-10-02T11:31:52.589985Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead.
2022-10-02T11:31:52.592352Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.30) starting as process 1
2022-10-02T11:31:52.602604Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2022-10-02T11:31:52.875859Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2022-10-02T11:31:53.131572Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2022-10-02T11:31:53.131639Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2022-10-02T11:31:53.163561Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock
2022-10-02T11:31:53.163648Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.30'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MySQL Community Server - GPL.

Запуск контейнера сервера гуакамоле

Теперь выполните следующую команду, чтобы запустить контейнер сервера гуакамоле:

docker run --name guacamole-server -d guacamole/guacd

Вы можете проверить журналы контейнера с помощью следующей команды:

docker logs --tail 10 guacamole-server

Вы получите следующий вывод:

guacd[7]: INFO:	Guacamole proxy daemon (guacd) version 1.4.0 started
guacd[7]: INFO:	Listening on host 0.0.0.0, port 4822

Чтобы проверить работающий контейнер, используйте следующую команду:

docker ps

Вы получите следующий вывод:

CONTAINER ID   IMAGE                COMMAND                  CREATED          STATUS                             PORTS                       NAMES
51b2efdab0db   guacamole/guacd      "/bin/sh -c '/usr/lo…"   26 seconds ago   Up 25 seconds (health: starting)   4822/tcp                    guacamole-server
c7a9309eac20   mysql/mysql-server   "/entrypoint.sh mysq…"   3 minutes ago    Up 3 minutes (healthy)             3306/tcp, 33060-33061/tcp   guacamoledb

Запустить клиентский контейнер гуакамоле

Вы также можете запустить клиентский контейнер Guacamole с помощью следующей команды:

docker run --name guacamole-client --link guacamole-server:guacd --link guacamoledb:mysql -e MYSQL_DATABASE=guacdb -e MYSQL_USER=guacadmin -e MYSQL_PASSWORD=password -d -p 80:8080 guacamole/guacamole

Затем проверьте работающий контейнер с помощью следующей команды:

docker ps

Вы должны увидеть следующий вывод:

CONTAINER ID   IMAGE                 COMMAND                  CREATED              STATUS                                 PORTS                                   NAMES
d4034a72bb69   guacamole/guacamole   "/opt/guacamole/bin/…"   58 seconds ago       Up 57 seconds                          0.0.0.0:80->8080/tcp, :::80->8080/tcp   guacamole-client
51b2efdab0db   guacamole/guacd       "/bin/sh -c '/usr/lo…"   About a minute ago   Up About a minute (health: starting)   4822/tcp                                guacamole-server
c7a9309eac20   mysql/mysql-server    "/entrypoint.sh mysq…"   5 minutes ago        Up 5 minutes (healthy)                 3306/tcp, 33060-33061/tcp               guacamoledb

На этом этапе контейнер Guacamole запускается и прослушивает порт 80. Вы можете проверить это с помощью следующей команды:

ss -altnp | grep :80

Вы получите следующий вывод:

LISTEN 0      4096         0.0.0.0:80        0.0.0.0:*    users:(("docker-proxy",pid=4006,fd=4))   
LISTEN 0      4096            [::]:80           [::]:*    users:(("docker-proxy",pid=4013,fd=4))   

Доступ к панели управления Apache Guacamole

Теперь вы можете получить доступ к веб-интерфейсу Apache Guacamole, используя URL-адрес http://your-server-ip/guacamole. Вы должны увидеть экран входа в систему Guacamole:

Укажите учетные данные по умолчанию:

Пользователь: гуаадмин

Пароль: гуаадмин

Затем нажмите на кнопку Войти. Вы должны увидеть панель управления гуакамоле на следующем экране:

Заключение

Поздравляем! вы успешно установили сервер и клиент Apache Guacamole с помощью Docker на сервере Ubuntu 22.04. Теперь вы можете создать новое соединение и получить доступ к удаленному серверу через веб-браузер. Не стесняйтесь спрашивать меня, если у вас есть какие-либо вопросы.