Ubuntu에서 Apache Guacamole을 Docker 컨테이너로 설치하는 방법
이 페이지에서
- 전제 조건
- Docker 엔진 설치
- Docker Compose 설치
- Apache Guacamole 서버 및 클라이언트 다운로드
- Apache Guacamole MySQL 컨테이너 실행\n
- Guacamole 서버 컨테이너 실행\n
- Guacamole 클라이언트 컨테이너 실행\n
- Apache Guacamole 대시보드 액세스
- 결론
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 서버 및 클라이언트를 성공적으로 설치했습니다. 이제 새 연결을 만들고 웹 브라우저를 통해 원격 서버에 액세스할 수 있습니다. 궁금한 점이 있으면 언제든지 문의해 주세요.