Zugriff auf Discourse DB mit DBeaver

Der integrierte Data Explorer ist für schnelle Abfragen in Ordnung, aber wenn Sie eine echte GUI wie DBeaver oder TablePlus verwenden möchten, müssen Sie einige Hürden nehmen, da Discourses Postgres im Docker-Brückennetzwerk gesperrt ist.

So exponieren Sie ihn sicher über ein privates Netzwerk (wie Tailscale), damit Ihre Datenbank nicht dem Internet ausgesetzt ist.

1. Einen benutzerdefinierten Port zuweisen

Discourse belegt normalerweise die Standardports, daher habe ich 5434 verwendet. Bearbeiten Sie Ihre containers/app.yml:

YAML

expose:
  - "80:80"
  - "443:443"
  - "5434:5432" # Host 5434 -> Container 5432

Dann neu aufbauen: ./launcher rebuild app

2. Firewall

Öffnen Sie diesen Port nicht für die Öffentlichkeit. Wenn Sie Tailscale oder andere Tunnel verwenden, beschränken Sie den Zugriff nur auf diese Schnittstelle:

Bash

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

3. Die Authentifizierung reparieren (der lästige Teil)

Discourse verwendet standardmäßig die peer-Authentifizierung, was externe Passwort-Logins blockiert. Sie müssen Postgres also anweisen, scram-sha-256 zuzulassen.

Innerhalb des Containers (./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. Ein Passwort festlegen

Der Benutzer discourse hat standardmäßig kein Passwort. Legen Sie eines fest, damit Anwendungen wie DBeaver sich tatsächlich anmelden können.

Bash

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

5. Verbindungsdetails

  • Host: Ihre IP

  • Port: 5434

  • Datenbank: discourse

  • Benutzer: discourse