Accesso al DB di Discourse con DBeaver

L’Explorer Dati integrato va bene per query rapide, ma se si desidera utilizzare una vera GUI come DBeaver o TablePlus, è necessario superare alcuni ostacoli, dato che il Postgres di Discourse è bloccato all’interno del bridge Docker.

Ecco come esporlo in sicurezza su una rete privata (come Tailscale) per evitare di lasciare il database aperto a Internet.

1. Mappa una porta personalizzata

Discourse occupa solitamente le porte standard, quindi ho usato 5434. Modifica il file containers/app.yml:

YAML

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

Quindi ricostruisci: ./launcher rebuild app

2. Firewall

Non aprire questa porta al pubblico. Se stai usando Tailscale o altri tunnel, limita l’accesso solo a quell’interfaccia:

Bash

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

3. Correggi l’autenticazione (la parte fastidiosa)

Discourse utilizza di default l’autenticazione peer, che blocca gli accessi con password da esterni. Devi quindi indicare a Postgres di permettere scram-sha-256.

All’interno del 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. Imposta una password

L’utente discourse non ha una password di default. Impostane una in modo che app come DBeaver possano effettivamente accedere.

Bash

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

5. Dettagli di connessione

  • Host: Il tuo IP

  • Porta: 5434

  • Database: discourse

  • Utente: discourse