DBeaver로 Discourse DB에 접근하기

내장된 Data Explorer는 간단한 쿼리를 실행하는 데는 충분하지만, DBeaver나 TablePlus와 같은 실제 GUI 도구를 사용하려면 Discourse의 Postgres가 Docker 브리지 내부에 격리되어 있어 몇 가지 단계를 거쳐야 합니다.

인터넷에 데이터베이스가 노출되지 않도록, Tailscale과 같은 사설 네트워크를 통해 안전하게 노출하는 방법을 아래에 소개합니다.

1. 커스텀 포트 매핑

Discourse는 표준 포트를 대부분 사용하므로, 저는 5434 포트를 사용했습니다. containers/app.yml 파일을 편집하세요:

YAML

expose:
  - "80:80"
  - "443:443"
  - "5434:5432" # 호스트 5434 -> 컨테이너 5432

그 후 재빌드하세요: ./launcher rebuild app

2. 방화벽 설정

이 포트는 공개 네트워크에 열지 마세요. Tailscale 또는 기타 터널링 도구를 사용 중이라면, 해당 인터페이스에 대한 접근만 제한하도록 설정하세요:

Bash

sudo ufw allow in on tailscale0 to any port 5434 proto tcp

3. 인증 설정 (조금 번거로운 부분)

Discourse는 기본적으로 peer 인증을 사용하며, 이는 외부에서의 비밀번호 로그인을 차단합니다. 따라서 Postgres가 scram-sha-256 인증을 허용하도록 설정해야 합니다.

컨테이너 내부에서 (./launcher enter app):

Bash

echo "host all all 0.0.0.0/0 scram-sha-256" >> /shared/postgres_data/pg_hba.conf

sudo -u postgres psql -c "SELECT pg_reload_conf();"

4. 비밀번호 설정

discourse 사용자는 기본적으로 비밀번호가 설정되어 있지 않습니다. DBeaver와 같은 앱이 실제로 로그인할 수 있도록 비밀번호를 설정하세요.

Bash

sudo -u postgres psql -c "ALTER USER discourse WITH PASSWORD 'your_password_here';"

5. 연결 정보

  • 호스트: 사용자의 IP 주소

  • 포트: 5434

  • 데이터베이스: discourse

  • 사용자: discourse

3개의 좋아요