Der integrierte Data Explorer ist für schnelle Abfragen in Ordnung, aber wenn Sie eine echte GUI wie DBeaver oder TablePlus verwenden möchten, müssen Sie einige Hürden nehmen, da Discourses Postgres im Docker-Brückennetzwerk gesperrt ist.
So exponieren Sie ihn sicher über ein privates Netzwerk (wie Tailscale), damit Ihre Datenbank nicht dem Internet ausgesetzt ist.
1. Einen benutzerdefinierten Port zuweisen
Discourse belegt normalerweise die Standardports, daher habe ich 5434 verwendet. Bearbeiten Sie Ihre containers/app.yml:
YAML
expose:
- "80:80"
- "443:443"
- "5434:5432" # Host 5434 -> Container 5432
Dann neu aufbauen: ./launcher rebuild app
2. Firewall
Öffnen Sie diesen Port nicht für die Öffentlichkeit. Wenn Sie Tailscale oder andere Tunnel verwenden, beschränken Sie den Zugriff nur auf diese Schnittstelle:
Bash
sudo ufw allow in on tailscale0 to any port 5434 proto tcp
3. Die Authentifizierung reparieren (der lästige Teil)
Discourse verwendet standardmäßig die peer-Authentifizierung, was externe Passwort-Logins blockiert. Sie müssen Postgres also anweisen, scram-sha-256 zuzulassen.
Innerhalb des Containers (./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. Ein Passwort festlegen
Der Benutzer discourse hat standardmäßig kein Passwort. Legen Sie eines fest, damit Anwendungen wie DBeaver sich tatsächlich anmelden können.
Bash
sudo -u postgres psql -c "ALTER USER discourse WITH PASSWORD 'your_password_here';"
5. Verbindungsdetails
-
Host: Ihre IP
-
Port:
5434 -
Datenbank:
discourse -
Benutzer:
discourse