본문 바로가기

서버 리뷰/홈 서버

Docker 기반 Apache Guacamole 및 PostgreSQL 구축 가이드

728x90

Apache Guacamole는 클라이언트 설치 없이 웹 브라우저를 통해 RDP, VNC, SSH 원격 접속을 제공하는 클라이언트리스 원격 데스크톱 게이트웨이입니다. 본 가이드에서는 데이터 무결성이 뛰어난 PostgreSQL을 백엔드 DB로 사용하는 Docker Compose 구축 방법을 설명합니다.

1. 사전 준비

Guacamole 컨테이너는 실행 시 자동으로 DB 스키마를 생성하지 않습니다. 따라서 PostgreSQL 컨테이너가 초기화될 때 사용할 SQL 스크립트를 미리 추출해야 합니다.

Bash
 
# 작업 디렉토리 생성
mkdir -p ~/guacamole/init

# PostgreSQL 전용 초기화 스크립트 추출
docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --postgres > ~/guacamole/init/initdb.sql

2. Docker Compose 파일 작성

docker-compose.yml 파일에서 PostgreSQL의 인증 방식과 Guacamole 클라이언트의 환경 변수를 일치시키는 것이 중요합니다. 특히 POSTGRES_PASSWORD 정의가 유효하도록 설정해야 합니다.

YAML
 
services:
  guacd:
    image: guacamole/guacd:latest
    container_name: guacd
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime:ro

  postgres:
    image: postgres:15-alpine
    container_name: guac-db
    restart: always
    environment:
      # DB 컨테이너는 POSTGRES_ 사용
      - POSTGRES_DB=guacamole_db
      - POSTGRES_USER=guac_user
      - POSTGRES_PASSWORD=설정할_비밀번호
    volumes:
      - guac_db_volume:/var/lib/postgresql/data
      - /etc/localtime:/etc/localtime:ro

  guacamole:
    image: guacamole/guacamole:latest
    container_name: guac-web
    restart: always
    depends_on:
      - guacd
      - postgres
    ports:
      - "8080:8080"
    environment:
      - GUACD_HOSTNAME=guacd
      # 웹 컨테이너는 반드시 POSTGRESQL_ 사용
      - POSTGRESQL_HOSTNAME=guac-db
      - POSTGRESQL_DATABASE=guacamole_db
      - POSTGRESQL_USER=guac_user
      - POSTGRESQL_PASSWORD=설정할_비밀번호
    volumes:
      - /etc/localtime:/etc/localtime:ro

# Docker 자체 관리 볼륨 선언
volumes:
  guac_db_volume:

3. 실행 및 초기 접속

작성한 구성 파일을 바탕으로 서비스를 백그라운드에서 실행합니다.

Bash
 
docker compose up -d

접속 정보

  • URL: http://[서버_IP]:8080/guacamole/
  • 기본 계정: guacadmin
  • 기본 비밀번호: guacadmin

4. 주요 설정 수정 및 보안 유의사항

  1. 비밀번호 수정: PostgreSQL 컨테이너를 처음 생성할 때 POSTGRES_PASSWORD가 적용됩니다. 이미 DB 볼륨이 생성된 상태에서 docker-compose.yml의 패스워드만 수정하면 인증 오류가 발생할 수 있습니다. 이 경우 ./data 디렉토리를 초기화하거나 DB 내부에서 직접 ALTER USER 명령으로 수정해야 합니다.
  2. 관리자 계정 변경: 접속 후 'Settings' -> 'Users' 메뉴에서 guacadmin의 기본 비밀번호를 즉시 변경하십시오.
  3. 네트워크 보안: 외부 인터넷에서 접속해야 하는 경우, Nginx Reverse Proxy를 앞단에 배치하고 Let's Encrypt를 통해 HTTPS(443) 암호화 통신을 적용하는 것을 권장합니다.
반응형