안녕하세요? 도정진입니다.
이전에 아래와 같이 guacamole 을 날로 설치해보고 호스트에 직접 설치해 보기도 했는데요. 이제는 그렇게 어렵게 시도하지 않아도 명령어 몇방이면 쉽게 설치가 가능하여 아래와 같이 글을 작성합니다.
기본적으로 아래의 구성으로 구동됩니다.
1. mysql 서버
2. guacd
3. 앱서버인 guacamole web
1. 필요 컨테이너 pull 하기
필요 컨테이너는 guacamole/guacd, guacamole/guacamole, mysql/mysql-server 입니다.
어쩌면 한방에 좀 되면 좋지 않았나 싶기는 한데 이렇게 분리하여 운영하는게 차후 마이크로 서비스와 연관이 있어 보입니다. 전에는 guacd 이거 하나 올리려고 컴파일 하고 난리가 났었습니다.
root@debian:~# docker pull guacamole/guacamole root@debian:~# docker pull guacamole/guacd root@debian:~# docker pull mysql/mysql-server |
2. mysql-server 설정하기
일단 초기 init db 를 넣어야합니다.
아래와 같이 guacamole 이미지에서 추출합니다.
root@debian:~# docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > initdb.sql root@debian:~# ls -li | grep initdb 2888581 -rw-r--r-- 1 root root 23050 Apr 13 01:30 initdb.sql |
아래의 명령으로 mysql-server 를 실행합니다.
root@debian:~# docker run -dit --name guacd_mysql --restart unless-stopped -e MYSQL_ROOT_PASSWORD='password' mysql/mysql-server |
정상적으로 실행중인지 확인합니다.
root@debian:~# docker logs guacd_mysql -f 2022-04-12T16:35:30.916642Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 2022-04-12T16:35:31.293873Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. 2022-04-12T16:35:31.576546Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. 2022-04-12T16:35:31.576603Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel. 2022-04-12T16:35:31.611006Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock 2022-04-12T16:35:31.611067Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.28' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Server - GPL. |
처음에 생성한 db를 컨테이너에 넣어줍니다.
root@debian:~# docker cp initdb.sql guacd_mysql:/opt |
다음으로 컨테이너에 접근하여 기본 계정을 추가하고 db를 넣습니다.
root@debian:~# docker exec -it guacd_mysql /bin/sh sh-4.4# sh-4.4# mysql -u root -p'password' mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 8.0.28 MySQL Community Server - GPL Copyright (c) 2000, 2022, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> |
mysql> create database guacamole_db; Query OK, 1 row affected (0.02 sec) mysql> create user 'guacamole' identified by 'password'; Query OK, 0 rows affected (0.03 sec) mysql> grant select,insert,update,delete on guacamole_db.* to 'guacamole'; Query OK, 0 rows affected (0.01 sec) mysql> flush privileges; Query OK, 0 rows affected (0.01 sec) mysql> exit Bye |
sh-4.4# cat /opt/initdb.sql | mysql -u root -p'password' guacamole_db mysql: [Warning] Using a password on the command line interface can be insecure. |
3. guacd 실행 및 웹앱 실행
root@debian:~# docker run -dit --name guacd --restart unless-stopped guacamole/guacd |
guacamole web 을 실행할 때에는 위에서 만든 컨테이너 2개를 링크하여 통신이 가능하도록 설정해야합니다.
root@debian:~# docker run -dit --name guacd_web --restart unless-stopped --link guacd --link guacd_mysql:mysql -e MYSQL_DATABASE=guacamole_db -e MYSQL_USER=guacamole -e MYSQL_PASSWORD=password -p 10800:8080 guacamole/guacamole |
로그를 한번 살펴보고 테스트 해봅니다.
16:52:20.924 [localhost-startStop-1] INFO o.a.g.extension.ExtensionModule - Extension "MySQL Authentication" (mysql) loaded. 16:52:21.225 [localhost-startStop-1] INFO o.a.g.t.w.WebSocketTunnelModule - Loading JSR-356 WebSocket support... 12-Apr-2022 16:52:23.181 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/home/guacamole/tomcat/webapps/guacamole.war] has finished in [8,723] ms 12-Apr-2022 16:52:23.185 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"] 12-Apr-2022 16:52:23.204 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 8857 ms |
4. 테스트
http://ip-addr:10800/guacamole 로 접근하면 아래와 같은 페이지가 열립니다.
초기 아이디 비밀번호는 guacadmin / guacadmin 입니다.
5. 기초 설정
기본적으로 생성된 계정을 지우고 새로 생성하여 관리자 계정을 하나 만듭니다.
새로 생성한 계정으로 로그인하여, 기본 계정 guacadmin 을 삭제합니다.
테스트 연결을 생성합니다.
한편, 컨테이너 내부에 있기 때문에 localhost 로 하면 연결이 안되는 경우가 생깁니다.
따라서 호스트쪽의 IP 전체를 입력하여 연결하시면 됩니다.
6. 터미널 폰트 문제 / 한글 문제 해결
일단 폰트를 Consolas 를 쓰고 싶으나, D2Coding 폰트가 유명하여 아래 사이트에서 받았습니다.
https://github.com/naver/d2codingfont/releases
guacd 컨테이너에 적용해보겠습니다.
# 먼저 컨테이너를 지웁니다. root@debian:~# docker rm -f guacd guacd # 폰트를 받고 풀어줍니다. root@debian:/opt/d2coding# wget https://github.com/naver/d2codingfont/releases/download/VER1.3.2/D2Coding-Ver1.3.2-20180524.zip root@debian:/opt/d2coding# unzip D2Coding-Ver1.3.2-20180524.zip Archive: D2Coding-Ver1.3.2-20180524.zip creating: D2Coding/ inflating: D2Coding/D2Coding-Ver1.3.2-20180524.ttc inflating: D2Coding/D2Coding-Ver1.3.2-20180524.ttf inflating: D2Coding/D2CodingBold-Ver1.3.2-20180524.ttf creating: D2CodingAll/ inflating: D2CodingAll/D2Coding-Ver1.3.2-20180524-all.ttc creating: D2CodingLigature/ inflating: D2CodingLigature/D2Coding-Ver1.3.2-20180524-ligature.ttc inflating: D2CodingLigature/D2Coding-Ver1.3.2-20180524-ligature.ttf inflating: D2CodingLigature/D2CodingBold-Ver1.3.2-20180524-ligature.ttf # 볼륨을 바인드하여 새로 컨테이너를 생성합니다. root@debian:/opt/d2coding# docker run -dit --name guacd --restart unless-stopped -v /opt/d2coding/D2Coding:/usr/share/fonts/truetype/d2coding guacamole/guacd |
연결 설정에서 아래와 같이 폰트에 입력합니다.
한글폰트도 잘 나옵니다.
7. Apache2 프록시와 연동
기존에 아래의 글을 참고하여 서버를 설정하시면 됩니다.
저는 오래전 부터 apache2 로 설정이 되어 있어서 nginx 로는 다음에 리눅스 서버를 새로 설치할 때 넘어갈 생각입니다.
https://blog.djjproject.com/233 https://blog.djjproject.com/182 https://blog.djjproject.com/123 |
간단히 마치겠습니다.
감사합니다.
---- 추가
RDP 를 하나 추가해 보았습니다.
이전보다 매우 부드럽게 작동하며, 동작도 안정적이네요. 다만, 동영상을 볼 정도는 아닙니다.
제일 마음에 드는 것은 한영키가 먹는다는 것이네요 !!
'서버 > 리눅스 서버' 카테고리의 다른 글
0bda:c811 RTL8821CU 데비안 인식 하기 (408) | 2022.05.21 |
---|---|
docker macvlan 네트워크를 호스트에서 접근하기 (403) | 2022.05.20 |
구글 드라이브 데이터 마이그레이션 (팀드라이브 이용) (408) | 2022.01.25 |
PLEX 하나의 라이브러리로 다수의 서버 운영하기 (rclone, rsync, dockerd, sqlite3) (418) | 2022.01.04 |
[작성중] Dockerfile 작성하기 (example : 18.04 systemd container) (398) | 2021.12.10 |
댓글