Accediendo a la base de datos de Discourse con DBeaver

El Data Explorer integrado está bien para consultas rápidas, pero si quieres usar una GUI real como DBeaver o TablePlus, tendrás que sortear algunos obstáculos, ya que el Postgres de Discourse está bloqueado dentro del puente de Docker.

Aquí te explicamos cómo exponerlo de forma segura a través de una red privada (como Tailscale) para que no dejes tu base de datos abierta a Internet.

1. Asigna un puerto personalizado

Discourse suele ocupar los puertos estándar, así que usé 5434. Edita tu containers/app.yml:

YAML

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

Luego reconstruye: ./launcher rebuild app

2. Firewall

No abras este puerto al público. Si estás usando Tailscale u otros túneles, restringe el acceso solo a esa interfaz:

Bash

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

3. Corrige la autenticación (la parte molesta)

Discourse usa autenticación peer por defecto, lo que bloquea los inicios de sesión externos con contraseña. Por lo tanto, necesitas indicar a Postgres que permita scram-sha-256

Dentro del contenedor (./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. Establece una contraseña

El usuario discourse no tiene contraseña por defecto. Establece una para que aplicaciones como DBeaver puedan iniciar sesión en él

Bash

sudo -u postgres psql -c "ALTER USER discourse WITH PASSWORD 'tu_contraseña_aquí';"

5. Detalles de conexión

  • Host: Tu IP

  • Puerto: 5434

  • Base de datos: discourse

  • Usuario: discourse