Как установить Apache Guacamole в качестве контейнера Docker в Ubuntu
На этой странице
- Предпосылки
- Установить Docker Engine
- Установите Docker Compose
- Загрузить сервер и клиент Apache Guacamole
- Запуск контейнера Apache Guacamole MySQL
- Запуск контейнера сервера гуакамоле
- Запуск клиентского контейнера гуакамоле
- Доступ к панели управления Apache Guacamole
- Заключение
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. Теперь вы можете создать новое соединение и получить доступ к удаленному серверу через веб-браузер. Не стесняйтесь спрашивать меня, если у вас есть какие-либо вопросы.