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