메뉴 건너뛰기

SayClub.org

도커(Docker)

도커(Docker)로 Guacamole 설치하기

미르다테 2025.06.12 12:56 조회 수 : 157

<docker-compose.yml>

 

services:
  guacamole-db:
    image: mariadb:latest
    container_name: guac-db
    restart: always
    environment:
      MARIADB_ROOT_PASSWORD: root
      MARIADB_DATABASE: guacamole_db
      MARIADB_USER: guacamole_user
      MARIADB_PASSWORD: guacamole_password
    volumes:
      - ./initdb:/docker-entrypoint-initdb.d  # 초기 SQL 자동 실행
      - ./db:/var/lib/mysql

 

  guacd:
    image: guacamole/guacd
    container_name: guacd
    restart: always

 

  guacamole:
    image: guacamole/guacamole
    container_name: guacamole
    restart: always
    depends_on:
      - guacd
      - guacamole-db
    environment:
      GUACD_HOSTNAME: guacd
      MYSQL_HOSTNAME: guacamole-db
      MYSQL_DATABASE: guacamole_db
      MYSQL_USER: guacamole_user
      MYSQL_PASSWORD: guacamole_password
    ports:
      - "8080:8080"  # 웹 UI 접근 포트
    volumes:
      - ./custom-config/server.xml:/usr/local/tomcat/conf/server.xml

 

  nginx:
    image: nginx:latest
    container_name: guac-nginx
    restart: always
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - guacamole
 

$ mkdir -p initdb

 

initdb 디렉토리 내 첨부된 2개 파일(001-create-schema.sql, 002-create-admin.sql) 넣고 docker compose up -d 실행

 

접속 정보 : admin // admin1234

 

$ mkdir custom-config

$ touch server.xml

 

<server.xml>

 

<Server port="8005" shutdown="SHUTDOWN">
  <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="10000"
           maxKeepAliveRequests="100"
           keepAliveTimeout="5000"
           maxThreads="200"
           minSpareThreads="10"
           redirectPort="8443"
           URIEncoding="UTF-8" />
           #connectionTimeout="20000"
           #redirectPort="8443" />

    <Engine name="Catalina" defaultHost="localhost">
      <Valve className="org.apache.catalina.valves.RemoteIpValve"
             remoteIpHeader="x-forwarded-for"
             remoteIpProxiesHeader="x-forwarded-by"
             protocolHeader="x-forwarded-proto" />
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true" />
    </Engine>
  </Service>
</Server>
 

<nginx.conf>

 

server {
    listen 80;
    server_name localhost;

 

    keepalive_timeout 10;

 

    location /vdi/ {
        proxy_pass http://IP:8080/guacamole/;
        proxy_http_version 1.1;

 

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

 

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

 

        proxy_pass_header Authorization;
        proxy_pass_header Server;

 

        proxy_buffering off;
        proxy_redirect off;
        proxy_max_temp_file_size 0;
        client_max_body_size 0;

 

        proxy_read_timeout 1800;
        proxy_connect_timeout 1800;
        proxy_send_timeout 1800;
        proxy_request_buffering off;
    }

 

    location / {
        return 302 /vdi/;
    }
}
 

아래는 참고사항

 

# guacamole 컨테이너에서 SQL 스크립트 복사 및 DB 초기 스키마 생성
docker cp guacamole:/opt/guacamole/mysql/schema /home/guacamole/schema
docker exec -i guac-db mariadb -u root -proot guacamole_db < /home/mirdate/guacamole/001-create-schema.sql
 

# 접속URL http://IP:8080/guacamole/#/ 인것을 nginx로 재전달하여 http://IP:80 으로 접속하게 끔 하는 방법

# 접속 클라이언트 IP가 Log에 남지 않고 docker 컨테이터의 ip가 Log에 기록되기 때문에

    custom-config/server.xml로 guacamole 내 tomcat에 파일 교체 연결처리

번호 제목 글쓴이 날짜 조회 수
55 Docker - prune 도커 정리하기 미르다테 2025.11.28 26
54 도커(Docker)로 Tugtainer 설치하기(Watchtower 대체) 미르다테 2025.11.18 36
53 도커(Docker)로 Zoraxy 설치하기 미르다테 2025.07.16 140
52 도커(Docker)로 Syslog-ng 설치하기 미르다테 2025.07.07 160
» 도커(Docker)로 Guacamole 설치하기 file 미르다테 2025.06.12 157
50 도커(Docker)로 Drupal CMS 설치하기 미르다테 2025.05.23 167
49 도커(Docker)로 Arachni UI Web(웹스캐너) 설치하기 미르다테 2025.05.14 195
48 도커(Docker)로 diun(Docker Image Update Notifier) 구축하기 미르다테 2025.04.18 178
47 도커(Docker)로 Minio 설치하기 미르다테 2025.04.17 211
46 도커(Docker)로 Rocky Linux 9.5에 Squid Proxy 설치하기 미르다테 2025.04.15 156
45 도커(Docker)로 Zabbix 서버 구축하기 미르다테 2025.04.15 127
44 vaultwarden 버전 확인하기 미르다테 2025.02.10 127
43 Docker-compose up -d 시 실행 오류 해결 방법 미르다테 2024.12.30 151
42 Squid를 Docker 컨테이너로 실행하는 방법 미르다테 2024.12.30 124
41 도커(Docker)로 컨테이너 Log 확인툴(Dozzle) 설치하기 미르다테 2024.12.30 127
40 도커(Docker)로 It-Tools 설치하기 미르다테 2024.12.30 188
39 도커(Docker) YAML 문법 검사 사이트 미르다테 2024.12.30 107
38 도커(Docker)로 Stirling-PDF 서버 설치하기 미르다테 2024.12.30 340
37 도커(Docker)로 이윰빌더(Eyoom)+그누보드 설치하기(한국형 게시판 커뮤니티) file 미르다테 2024.12.30 298
36 도커 컨테이너 내의 파일 가져오기, 로컬 파일 도커 컨테이너로 파일 넣기 미르다테 2024.12.30 190
위로