반응형

최근에 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 주소, 보통 내부ip를 입력하는데 꿀팁으로 도커 bridge 네트워크의 게이트웨이 주소(172.17.0.1)를 입력하면 내부ip가 바뀌어도 바꿔줄 필요가 없어진다. 아니면 바뀔 일 없는 외부 주소를 입력하거나...>
MYSQL_PORT - <MariaDB 포트>
MYSQL_DATABASE - guacamole_db
MYSQL_USER - guacamole_user
MYSQL_PASSWORD - <좀 전에 만든 DB유저 패스워드>

16. 이제 끝!

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

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

반응형

+ Recent posts