O Data Explorer integrado é adequado para consultas rápidas, mas se você quiser usar uma GUI real como DBeaver ou TablePlus, precisará contornar alguns obstáculos, já que o Postgres do Discourse está trancado dentro da ponte Docker.
Aqui está como expor isso com segurança em uma rede privada (como Tailscale) para que seu banco de dados não fique aberto à internet.
1. Mapeie uma porta personalizada
O Discourse geralmente ocupa as portas padrão, então usei a 5434. Edite seu containers/app.yml:
YAML
expose:
- "80:80"
- "443:443"
- "5434:5432" # Host 5434 -> Container 5432
Em seguida, reconstrua: ./launcher rebuild app
2. Firewall
Não abra esta porta para o público. Se você estiver usando Tailscale ou outros túneis, restrinja o acesso apenas a essa interface:
Bash
sudo ufw allow in on tailscale0 to any port 5434 proto tcp
3. Corrija a autenticação (a parte chata)
O Discourse usa autenticação peer por padrão, o que bloqueia logins externos com senha. Portanto, você precisa instruir o Postgres a permitir scram-sha-256.
Dentro do container (./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. Defina uma senha
O usuário discourse não tem senha por padrão. Defina uma para que aplicativos como o DBeaver possam realmente fazer login nele.
Bash
sudo -u postgres psql -c "ALTER USER discourse WITH PASSWORD 'sua_senha_aqui';"
5. Detalhes de conexão
-
Host: Seu IP
-
Porta:
5434 -
Banco de dados:
discourse -
Usuário:
discourse