반응형

최근에 Apache Guacamole라는 걸 알았다. Guacamole는 SSH, RDP, VNC 연결을 할 수 있는 HTML5 웹 애플리케이션이다.

원격 데스크톱을 브라우저에서 할 수 있다니... 신기해서 얼른 설치해봤다.

공식 메뉴얼을 보는데 도커로 설치해도 생각보다 설치법이 복잡하고 설치 중에 약간에 시행착오를 겪었기에 여기다가 정리해둔다. 사실 docker 명령어로 설치하면 쉬운데 gui가 있으면 gui를 쓰는 걸 선호하는지라... 그냥 ssh에서 명령어로만 끝내고 싶으면 이 글보다는 다른 글이나 공식 메뉴얼을 따라 하길 바란다.

일단 공식 메뉴얼 주소는 아래 링크이다.

https://guacamole.apache.org/doc/gug/guacamole-docker.html

 

Chapter 3. Installing Guacamole with Docker

Chapter 3. Installing Guacamole with Docker Guacamole can be deployed using Docker, removing the need to build guacamole-server from source or configure the web application manually. The Guacamole project provides officially-supported Docker images for bot

guacamole.apache.org

설치

먼저 도커로 설치하기 위해선 세 가지 이미지가 필요하다.

wiserain/guacd - 데몬 역할을 하는 이미지이다. 원래 이미지에는 한글 폰트가 없어서 SSH 접속할 때 한글이 죄다 깨지는데 이 이미지에는 D2Coding 포함되어 있어서 이걸 사용하고 설정에서 폰트를 D2Coding으로 설정하면 한글이 정상적으로 출력된다.

guacamole/guacamole - 요놈이 본체로 톰캣 위에 guacamole 웹 애플리케이션이 올라간다.

mysql or postgresql - 각종 설정을 저장할 데이터베이스이다. 근데 굳이 도커로 설치하지 않고 시놀로지에서 패키지로 제공하는 MariaDB를 사용하기로 했다.

1. 시놀로지 패키지 센터에서 Docker와 MariaDB 10을 설치한다.

2. Docker를 열고 guacamole/guacamole와 wiserain/guacd 이미지를 다운받는다.

3. 그리고 네트워크 메뉴에서 bridge 네트워크의 아이피 대역을 확인한다. 데이터베이스에 접근할 아이피를 설정하는 데 필요하다.

내 경우는 172.17.0.0/16 대역인데 아마 다른 사람들도 마찬가지일 듯...?

4. MariaDB 10을 열고 TCP/IP 연결 활성화에 체크한다.

기본 포트 그대로 외부에 열어두는 건 위험하니 외부에서 접속하지 못하게 막거나 포트 번호를 바꾸는 게 좋다.
나는 그냥 공유기에서 포트포워딩을 하지 않았다. (외부에서 접속 불가)

5. db를 생성해야 한다. ssh를 열고 ssh에 접속해서 아래 명령어를 친다.


/usr/local/mariadb10/bin/mysql -u root -p

MariaDB 10 설치 시 설정한 root 패스워드를 입력하면 이제 sql 쿼리를 날릴 수 있다. 데이터베이스와 유저를 생성해야 한다. 아래 명령어를 입력한다.


CREATE DATABASE guacamole_db;
CREATE USER 'guacamole_user'@'<아까 확인한 아이피 대역>' IDENTIFIED BY '<패스워드는 알아서>';
GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO 'guacamole_user'@'<아까 확인한 아이피 대역>';
FLUSH PRIVILEGES;
quit

아이피 대역은 172.17.0.0/16일 때 172.17.%.% 이런 식으로 입력하면 된다. 뭐 솔직히 그냥 %로 다 열어도 되는데 찝찝하니까... 아니면 나중에 컨테이너 만들 때 bridge가 아닌 host로 설정하면 localhost로 지정해도 될 것 같은데 굳이 테스트해보지는 않았다.

6. db 생성은 완료됐고 초기 세팅이 필요하다. guacamole에서 초기 세팅에 필요한 내용을 가지고 있다. 아래 명령어를 입력한다.


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

관리자 패스워드를 치고 나면 initdb.sql 파일이 생성되었을 것이다. 아래 명령어를 입력해서 생성된 sql문을 적용한다.


cat ./initdb.sql | /usr/local/mariadb10/bin/mysql -u root -p guacamole_db

이걸로 db 세팅도 완료되었다. initdb.sql 파일은 이제 필요 없으니 지우자

이제 guacd 컨테이너부터 생성을 하겠다.

7. 다시 도커로 돌아와서 다운받은 wiserain/guacd 이미지를 선택해서 컨테이너 생성을 시작한다.

8. 고급설정을 눌러서 자동 재시작에 체크를 해주고

9. 포트 설정은 비워둔다.

10. guacd는 생성할 때 뭐 신경 쓸 게 없다.

다음은 guacamole 컨테이너를 생성할 차례다.

11. 다운받은 guacamole/guacamole 이미지를 선택해서 컨테이너 생성을 시작한다.

12. 마찬가지로 고급설정을 눌러서 자동 재시작에 체크를 해주고

13. 포트 설정에서 8080 포트를 연결한다.

원한다면 다른 포트로 바꿔도 된다. 물론 접속할 때 바꾼 포트로 접속해야 함

14. 링크에서 앞서 만든 guacd 컨테이너를 연결해준다. 별칭은 반드시 guacd

15. 여기가 중요하다. 환경에서 환경 변수를 설정한다.

MYSQL_HOSTNAME - <nas 주소>
MYSQL_PORT - <MariaDB 포트>
MYSQL_DATABASE - guacamole_db
MYSQL_USER - guacamole_user
MYSQL_PASSWORD - <좀 전에 만든 DB유저 패스워드>

16. 이제 끝!

설치가 다 끝나고 http://<nas 주소>:8080/guacamole/로 접속하면 이런 화면을 볼 수 있다.

초기 아이디와 패스워드는 guacadmin이다. 로그인해서 새 관리자를 만든 다음 초기 아이디는 지워버리자

반응형
  1. sh 2021.06.17 10:21

    과카몰 접속하면 An error has occurred and this action cannot be completed. If the problem persists, please notify your system administrator or check your system logs.
    이게 뜨는데 어떻게 해야할까요?

  2. sh 2021.06.17 10:26

    아 댓글 수정이 안되는거같아서 새로 남깁니다.
    로그를 확인해보래서 도커 과카몰 로그 확인해보니 아래와 같이 나오는데
    ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
    db문제같은데

    CREATE USER 'guacamole_user'@'172.17.%.%' IDENTIFIED BY 'xxxxx';
    GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO 'guacamole_user'@'172.17.%.%';
    값 넣을때 <>이건 여기에 넣으라는건가 하고 빼고 ''여기에 넣었거든요 이거 때문에 문제인건지
    아니면 nas주소를 루프백 127.0.0.1로 해서 안되는건지 모르겠습니다

    • BlogIcon joyfuI 2021.06.17 20:21 신고

      <> 괄호는 빼고 넣는거 맞구요.
      도커에서 루프백 주소를 넣으면 nas에 접속하는게 아니라 도커에 접속하게 되니 nas 주소를 넣어주세요. (전 내부 아이피 넣어줬어요.)

+ Recent posts