البنية المعمارية
Client
↓
Port 27017 (MongoDB protocol)
↓
FerretDB container
↓
PostgreSQL container (internal Docker network)
↓
Persistent storage directory
يترجم FerretDB طلبات بروتوكول MongoDB الشبكي إلى استعلامات PostgreSQL داخلياً.
PostgreSQL غير مكشوف للعامة.
المنافذ
- 27017/tcp → نقطة نهاية عامة متوافقة مع MongoDB
- 5432/tcp → PostgreSQL داخلي (غير مكشوف خارجياً)
الوصول
مرجع بيانات الاعتماد: /root/ferretdb/.env
ثبّت العميل عند الحاجة:
apt install -y mongodb-mongosh
اتصل مع المصادقة:
mongosh "mongodb://<USERNAME>:<PASSWORD>@<SERVER_IP>:27017/<DATABASE>?authSource=postgres"
الملفات والمجلدات المهمة
- مجلد التثبيت:
/root/ferretdb - ملف Compose:
/root/ferretdb/docker-compose.yml - ملف البيئة:
/root/ferretdb/.env - دليل بيانات PostgreSQL:
/root/ferretdb/data
إدارة الخدمة
التحقق من الحالة:
docker ps
عرض السجلات:
docker compose -f /root/ferretdb/docker-compose.yml logs -f
إعادة تشغيل الخدمات:
docker compose -f /root/ferretdb/docker-compose.yml restart
أوامر MongoDB الشائعة
اعرض قائمة قواعد البيانات:
show dbs
بدّل قاعدة البيانات:
use postgres
اعرض قائمة المجموعات:
show collections
اعرض المستندات:
db.collection_name.find()
أدرج مستنداً:
db.collection_name.insertOne({ name: "example" })
اخرج من الصدفة:
exit
اربط FerretDB بـ Localhost للأمان
المصادقة مفعّلة، لكن خدمات قاعدة البيانات المكشوفة تبقى خطراً.
عدّل الملف: /root/ferretdb/.env
غيِّر HOST=0.0.0.0 to HOST=127.0.0.1
ثم طبّق التغييرات:
docker compose -f /root/ferretdb/docker-compose.yml up -d
الآن الخدمة غير قابلة للوصول خارجياً.
الوصول باستخدام إعادة توجيه منفذ SSH.
من جهازك المحلي:
ssh -L 27017:localhost:27017 root@<SERVER_IP>
ثم اتصل محلياً:
mongosh "mongodb://<USERNAME>:<PASSWORD>@localhost:27017/<DATABASE>?authSource=postgres