انتقل إلى المحتوى
نسخة تجريبية

الاتصال

حالما تصل النسخة إلى حالة تعمل، تجد في لوحة الاتصال كل ما تحتاجه: المضيف والمنفذ واسم قاعدة البيانات والمستخدم وكلمة المرور، إضافة إلى رابط اتصال جاهز للنسخ. وحين يعمل فريق الدعم لدينا في حسابك في جلسة دعم، تعرض اللوحة كل شيء ما عدا كلمة المرور.

نسخ عامة ونسخ خاصة

تختار نوع الوصول عند إنشاء النسخة، ويمكنك تغييره لاحقًا من تبويب الشبكة الخاص بها:

  • عامة — يمكن الوصول إلى النسخة عبر الإنترنت على عنوان IP المشترك لمساحة عملك، على منفذ خاص بها. أما العناوين المخصّصة على منفذ المحرّك الأصلي فغير متاحة بعد. وتُنهي البوابة الاتصال الوارد وتفتح اتصالاً جديداً داخل شبكتك الخاصة، فلا يُكشف معها أي شيء آخر على المنصّة.
  • خاصة — لا عنوان عام ولا منفذ عام. لا يصل إليها إلا ما يعمل على شبكة مساحة العمل نفسها.

الأمثلة أدناه تكتب المضيف باسم توضيحي لسهولة القراءة. أما العنوان والمنفذ اللذان تستجيب عليهما نسختك فعليًا فهما الظاهران في لوحة الاتصال الخاصة بها — انسخهما من هناك.

النسخة العامة يمكن الوصول إليها من حاسوبك ومن CI ومن تطبيقك دون إعداد VPN أو نفق.

TLS

تعمل معظم المحرّكات مع تفعيل TLS وتثبيت شهادة: يحمل PostgreSQL وMySQL sslmode=require وssl-mode=REQUIRED، ويستخدم Valkey مخطّط rediss://، ويستخدم RabbitMQ مخطّط amqps://، ويوفّر FerretDB وQdrant نقاط وصول عبر TLS فقط.

الشهادة حالياً موقّعة ذاتياً — وإصدار شهادة من المنصّة لكل اسم مضيف مدرج في خارطة الطريق. وإلى ذلك الحين لا تُعطّل التحقّق من الشهادة لتجاوزها (tlsAllowInvalidCertificates أو curl -k أو --insecure): فالاتصال غير المتحقَّق منه مشفّر ضد من يتنصّت فقط، لا ضد من يستطيع الوقوف بينك وبين الخادم وتقديم شهادته الخاصة. ثبّت شهادة الخادم بدلاً من ذلك. اجلبها مرة واحدة من شبكة تثق بها، واحتفظ بالملف مع إعدادات تطبيقك:

bash
openssl s_client -connect docs-c3d4.db.sahabti.app:40018 -servername docs-c3d4.db.sahabti.app </dev/null 2>/dev/null | openssl x509 -out docs-c3d4.pem
openssl x509 -in docs-c3d4.pem -noout -fingerprint -sha256   # دوّن البصمة؛ لا ينبغي أن تتغيّر دون سابق إنذار

الشهادة الموقّعة ذاتياً المثبَّتة يُتحقَّق منها تماماً كما يُتحقَّق من شهادة صادرة عن سلطة شهادات — فالعميل لا يقبل سوى تلك الشهادة بعينها. ومثالا FerretDB وQdrant أدناه يمرّران الملف المثبَّت.

أما MariaDB وMemcached فهما الاستثناء: يعمل كلاهما دون TLS. وكلاهما يطلب مستخدماً وكلمة مرور (Memcached عبر SASL)، لكن الاتصال نفسه غير مشفّر: تعبره بياناتك نصاً صريحاً، وكذلك كلمة مرور Memcached. أنشئهما كخوادم خاصة وصِل إليهما من أحمال على شبكة مساحة العمل نفسها — فعزل الشبكة هو ما يُبقي هذه الحركة خاصة، لا شيء في المحرّك ذاته. ويبدأ نموذج الإنشاء كليهما على خاص، وتنبّهك لوحة التحكم قبل أن تجعل أيًّا منهما عامًا. فخادم MariaDB أو Memcached عام يرسل هذه الحركة عبر الإنترنت.

لكل محرّك

انسخ القيم الدقيقة من لوحة الاتصال؛ والأوامر أدناه تبيّن الشكل العام فقط.

PostgreSQL

bash
psql "host=orders-c3d4.db.sahabti.app port=40012 dbname=orders user=orders sslmode=require"

MySQL

bash
mysql -h orders-c3d4.db.sahabti.app -P 40013 -u orders -p --ssl-mode=REQUIRED orders

MariaDB — دون TLS؛ خوادم خاصة فقط. اتصل بها من داخل شبكة مساحة العمل على العنوان الخاص الظاهر في لوحة الاتصال الخاصة بها؛ ويمكن لتطبيق ويب أيضًا أن يستخدم اسمها الداخلي، مثل orders.acme.internal لنسخة اسمها orders في مساحة العمل acme.

bash
mariadb -h 10.81.0.12 -P 3306 -u orders -p orders

FerretDB — متوافق مع بروتوكول MongoDB، مع تفعيل TLS. يثبّت tlsCAFile الشهادة التي جلبتها أعلاه.

bash
mongosh "mongodb://app:[email protected]:40018/?tls=true&tlsCAFile=docs-c3d4.pem"

Qdrant — REST/gRPC عبر TLS. يثبّت --cacert الشهادة، ويبقى التحقّق مفعّلاً.

bash
curl --cacert search-c3d4.pem https://search-c3d4.db.sahabti.app:40019/collections

Valkey

bash
valkey-cli -h cache-c3d4.db.sahabti.app -p 40015 -a "$PASSWORD" --tls

Memcached — المستخدم app وكلمة المرور الظاهرة في لوحة الاتصال، عبر SASL؛ ودون TLS. خوادم خاصة فقط، يُوصَل إليها كما يُوصَل إلى MariaDB: على عنوانها الخاص، أو باسمها الداخلي من تطبيق ويب. ويعمل SASL عبر البروتوكول الثنائي في Memcached، ففعّله في عميلك مع المستخدم وكلمة المرور؛ وتحملهما سلسلة الاتصال في اللوحة ضمن رابط memcached://. ويتحقّق memcstat، من أدوات libmemcached، من تسجيل الدخول:

bash
memcstat --servers=10.81.0.13:11211 --binary --username=app --password="$PASSWORD"

RabbitMQ — مع تفعيل TLS؛ وبروتوكول AMQP غير المشفّر معطّل.

text
amqps://app:[email protected]:40017

بيانات الاعتماد

في محرّكات SQL يمكنك تحديد اسم قاعدة البيانات والمستخدم وكلمة المرور عند الإنشاء، وفي Valkey وMemcached كلمة المرور؛ واترك كلمة المرور فارغة ليولّدها النظام. وتظهر كلمات المرور في لوحة الاتصال للمالكين والمشرفين والمطوّرين؛ أما المشاهد فيرى العنوان والمنفذ والمستخدم، مع ******** مكان كلمة المرور — ولهذا توجد الأدوار. وتسري القاعدة نفسها على كلمة مرور RCON لخادم الألعاب.

أما تدوير بيانات الاعتماد الأساسية من لوحة التحكّم فغير متاح بعد. غيّرها داخل المحرّك نفسه (ALTER USER، SET PASSWORD) واحتفظ بنسختك؛ فاللوحة تظل تعرض القيمة التي جُهّزت بها النسخة.

ومع PostgreSQL وMySQL وMariaDB يمكنك تجنّب المشكلة أصلاً: امنح كل تطبيق وكل زميل حساباً خاصاً به من تبويب مستخدمو قاعدة البيانات في صفحة النسخة، واحذفه عند الانتهاء بدل تدوير كلمة مرور واحدة مشتركة. انظر أدوات قواعد البيانات.

النسخ الاحتياطي

يمكن أخذ نسخ احتياطية من نسخ PostgreSQL وMySQL وMariaDB وخوادم الألعاب واستعادتها من لوحة التحكّم، ويمكن لمحرّكات SQL الثلاثة تصدير تفريغ تنزّله — راجع النسخ الاحتياطي. وتعمل أدوات المحرّكات نفسها أيضًا على نقطة وصول النسخة:

bash
pg_dump "host=orders-c3d4.db.sahabti.app port=40012 dbname=orders user=orders sslmode=require" > orders.sql

وحذف النسخة نهائي، والاستعادة تقرأ النسخة المصدر، فخذ نسخة احتياطية قبل ذلك.

الخطوات التالية