웹사이트 검색

Ubuntu에서 Apache Guacamole을 Docker 컨테이너로 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. Docker 엔진 설치
  3. Docker Compose 설치
  4. Apache Guacamole 서버 및 클라이언트 다운로드
  5. Apache Guacamole MySQL 컨테이너 실행\n
  6. Guacamole 서버 컨테이너 실행\n
  7. Guacamole 클라이언트 컨테이너 실행\n
  8. Apache Guacamole 대시보드 액세스
  9. 결론

Apache Guacamole은 웹 브라우저를 통해 원격 데스크톱 및 서버 시스템에 액세스할 수 있는 무료 오픈 소스 클라이언트리스 원격 데스크톱 애플리케이션입니다. VNC, RDP 및 SSH와 같은 표준 프로토콜을 지원하고 원격 연결에 HTML5를 사용합니다. 대부분의 Linux 배포판에서 실행할 수 있으며 클라이언트는 모든 최신 웹 브라우저에서 실행됩니다. 시스템에 소프트웨어를 설치할 필요가 없습니다. 서버에 정의된 원격 서버를 찾아서 연결하기만 하면 됩니다.

이 게시물에서는 Ubuntu 22.04에서 Docker를 사용하여 Apache Guacamole 서버 및 클라이언트를 설치하는 방법을 보여줍니다.

전제 조건

  • Ubuntu 22.04를 실행하는 서버.\n
  • 루트 암호는 서버에서 구성됩니다.\n

도커 엔진 설치

항상 최신 버전의 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 엔진 패키지를 설치합니다.

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 서버 및 클라이언트 다운로드

먼저 Docker 레지스트리에서 Apache Guacamole 서버 및 클라이언트 이미지를 다운로드해야 합니다.

먼저 다음 명령을 사용하여 서버 이미지를 다운로드합니다.

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로 전환하고 Guacamole 데이터베이스를 초기화합니다.

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.

Guacamole 서버 컨테이너 실행

이제 다음 명령을 실행하여 Guacamole 서버 컨테이너를 시작합니다.

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 클라이언트 컨테이너 실행

다음 명령을 사용하여 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 대시보드에 액세스

이제 URL http://your-server-ip/guacamole을 사용하여 Apache Guacamole 웹 인터페이스에 액세스할 수 있습니다. Guacamole 로그인 화면이 나타납니다.

기본 자격 증명을 제공합니다.

사용자: guacadmin

비밀번호: guacadmin

그런 다음 로그인 버튼을 클릭합니다. 다음 화면에 Guacamole 대시보드가 표시되어야 합니다.

결론

축하합니다! Ubuntu 22.04 서버에서 Docker를 사용하여 Apache Guacamole 서버 및 클라이언트를 성공적으로 설치했습니다. 이제 새 연결을 만들고 웹 브라우저를 통해 원격 서버에 액세스할 수 있습니다. 궁금한 점이 있으면 언제든지 문의해 주세요.