L’Explorateur de données intégré convient pour des requêtes rapides, mais si vous souhaitez utiliser une véritable interface graphique comme DBeaver ou TablePlus, vous devrez franchir quelques obstacles, car le Postgres de Discourse est enfermé dans le pont Docker.
Voici comment l’exposer en toute sécurité sur un réseau privé (comme Tailscale) afin de ne pas laisser votre base de données ouverte sur Internet.
1. Mapper un port personnalisé
Discourse occupe généralement les ports standards, j’ai donc utilisé 5434. Modifiez votre fichier containers/app.yml :
YAML
expose:
- "80:80"
- "443:443"
- "5434:5432" # Hôte 5434 -> Conteneur 5432
Ensuite, reconstruisez : ./launcher rebuild app
2. Pare-feu
N’ouvrez pas ce port au public. Si vous utilisez Tailscale ou d’autres tunnels, restreignez l’accès à cette interface uniquement :
Bash
sudo ufw allow in on tailscale0 to any port 5434 proto tcp
3. Corriger l’authentification (la partie ennuyeuse)
Discourse utilise l’authentification peer par défaut, ce qui bloque les connexions par mot de passe externes. Vous devez donc indiquer à Postgres d’autoriser scram-sha-256.
Dans le conteneur (./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. Définir un mot de passe
L’utilisateur discourse n’a pas de mot de passe par défaut. Définissez-en un pour que des applications comme DBeaver puissent réellement s’y connecter.
Bash
sudo -u postgres psql -c "ALTER USER discourse WITH PASSWORD 'votre_mot_de_passe_ici';"
5. Détails de connexion
-
Hôte : Votre adresse IP
-
Port :
5434 -
Base de données :
discourse -
Utilisateur :
discourse