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