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. 주요 설정 수정 및 보안 유의사항
- 비밀번호 수정: PostgreSQL 컨테이너를 처음 생성할 때 POSTGRES_PASSWORD가 적용됩니다. 이미 DB 볼륨이 생성된 상태에서 docker-compose.yml의 패스워드만 수정하면 인증 오류가 발생할 수 있습니다. 이 경우 ./data 디렉토리를 초기화하거나 DB 내부에서 직접 ALTER USER 명령으로 수정해야 합니다.
- 관리자 계정 변경: 접속 후 'Settings' -> 'Users' 메뉴에서 guacadmin의 기본 비밀번호를 즉시 변경하십시오.
- 네트워크 보안: 외부 인터넷에서 접속해야 하는 경우, Nginx Reverse Proxy를 앞단에 배치하고 Let's Encrypt를 통해 HTTPS(443) 암호화 통신을 적용하는 것을 권장합니다.
반응형
'서버 리뷰 > 홈 서버' 카테고리의 다른 글
| Windows RDP(MSTSC) 외부 접속 시 Google OTP(2FA) 적용 방법: multiOTP 활용 가이드 (0) | 2026.04.12 |
|---|---|
| [Troubleshooting] Apache Guacamole와 PostgreSQL Docker 연동 시 "password is an empty string" 에러 해결 (0) | 2026.04.11 |
| 윈도우 Telemetry 서비스의 역할과 폐쇄망 환경 운용 가이드 (0) | 2026.04.07 |
| Windows 서버 및 모니터링 시스템 로그 분석 트러블슈팅 보고서 (0) | 2026.04.05 |
| [Rocky Linux 9] vlmcsd를 이용한 고효율 KMS 서버 구축 가이드 (Native 방식) (0) | 2026.04.05 |