مستكشف البيانات المدمج جيد للاستعلامات السريعة، ولكن إذا كنت تريد استخدام واجهة رسومية حقيقية مثل DBeaver أو TablePlus، فستحتاج إلى تخطي بعض العقبات لأن PostgreSQL الخاص بـ Discourse محبوس داخل جسر Docker.
إليك كيفية تعريضه بشكل آمن عبر شبكة خاصة (مثل Tailscale) حتى لا تترك قاعدة بياناتك مفتوحة أمام الإنترنت.
1. تعيين منفذ مخصص
عادةً ما يحتل Discourse المنافذ القياسية، لذا استخدمت 5434. قم بتعديل ملف containers/app.yml:
YAML
expose:
- "80:80"
- "443:443"
- "5434:5432" # المضيف 5434 -> الحاوية 5432
ثم أعد البناء: ./launcher rebuild app
2. جدار الحماية
لا تفتح هذا المنفذ للجمهور. إذا كنت تستخدم Tailscale أو أنفاقًا أخرى، فقم بتقييد الوصول إلى تلك الواجهة فقط:
Bash
sudo ufw allow in on tailscale0 to any port 5434 proto tcp
3. إصلاح المصادقة (الجزء المزعج)
يستخدم Discourse مصادقة peer افتراضيًا، مما يمنع تسجيل الدخول بكلمة مرور من خارج. لذا تحتاج إلى إخبار PostgreSQL بالسماح بـ scram-sha-256
داخل الحاوية (./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. تعيين كلمة مرور
لا يملك مستخدم discourse كلمة مرور افتراضيًا. قم بتعيين واحدة حتى تتمكن التطبيقات مثل DBeaver من تسجيل الدخول فعليًا
Bash
sudo -u postgres psql -c "ALTER USER discourse WITH PASSWORD 'your_password_here';"
5. تفاصيل الاتصال
-
المضيف: عنوان IP الخاص بك
-
المنفذ:
5434 -
قاعدة البيانات:
discourse -
المستخدم:
discourse