الانتقال إلى المحتوى الرئيسي

نظرة عامة

حاويات Docker مخصصة للاستضافة في بيئة الإنتاج أو للاستضافة الذاتية. للمساهمة، يُرجى الاطلاع على الإعداد المحلي.
يوفر هذا الدليل تعليمات خطوة بخطوة لتثبيت وتكوين تطبيق “Twenty” باستخدام Docker Compose. الهدف هو جعل العملية مباشرة ومنع المشاكل الشائعة التي يمكن أن تؤدي إلى تعطيل إعدادك. مهم: عدّل الإعدادات المذكورة صراحة في هذا الدليل فقط. قد يؤدي تعديل التكوينات الأخرى إلى مشاكل. راجع إعداد متغيرات البيئة لإعداد متقدم. يجب إعلان جميع متغيرات البيئة في ملف docker-compose.yml على مستوى الخادم و/أو العامل، اعتمادًا على المتغير.

متطلبات النظام

  • رام: تأكد من أن بيئتك تحتوي على ما لا يقل عن 2GB من ذاكرة الرام. قد يؤدي عدم كفاية الذاكرة إلى تعطل العمليات.
  • دوكر ودوكر كومبوز: تأكد من تثبيت كلاهما وتحديثهما.

الخيار 1: نص سطر واحد

قم بتثبيت أحدث إصدار مستقر من Twenty باستخدام أمر واحد:
لتثبيت إصدار محدد:
  • يجب أن يكون VERSION وسم إصدار كاملًا منشورًا على Docker Hub، مثل v2.38.1. لا تُقبل الأسماء المستعارة مثل v2 أو latest.
  • يتم جلب docker-compose.yml المطابق من وسم git twenty/<version>، لذا لا يمكن تثبيت الإصدارات الأقدم من هذه الوسوم (v2.9.0 والإصدارات الأقدم) باستخدام البرنامج النصي.
لجلب ملفات الإعدادات من فرع بدلًا من ذلك، على سبيل المثال لاختبار التغييرات غير المنشورة:
  • استبدل branch-name بالفرع الذي سيتم جلب docker-compose.yml و.env.example منه. تظل الصورة افتراضيًا تستخدم أحدث إصدار ما لم يتم أيضًا تعيين VERSION.

الخيار 2: خطوات يدوية

اتبع هذه الخطوات لإعداد يدوي.

الخطوة 1: إعداد ملف البيئة

  1. إنشاء ملف .env انسخ ملف البيئة النموذجي إلى ملف .env جديد في دليل العمل لديك:
  2. إنشاء مفتاح تشفير قم بتشغيل الأمر التالي لإنشاء سلسلة عشوائية فريدة:
    مهم: احتفظ بهذه القيمة سرية ولا تشاركها. فقدان ENCRYPTION_KEY يعني فقدان الوصول إلى كل سر مخزَّن في قاعدة البيانات (رموز OAuth، متغيرات التطبيق، أسرار TOTP، إلخ).
  3. تحديث الـ .env استبدل قيمة النائب في ملف .env بالقيمة الرمزية المولدة:
    راجع دليل تدوير المفاتيح للحصول على إرشادات حول تدويره بدون توقّف عن العمل.
  4. تعيين كلمة مرور PostgreSQL قم بتحديث قيمة PG_DATABASE_PASSWORD في ملف .env باستخدام كلمة مرور قوية بدون أحرف خاصة. تُدرج كلمة المرور دون ترميز في عنوان URL لاتصال Postgres، لذا فإن أحرفًا مثل @ و/ و# أو % تُعطّل سلسلة الاتصال. أنشئ واحدًا باستخدام:
تصل المتغيرات التي يمرّرها docker-compose.yml دون قيمة افتراضية :-، مثل SERVER_URL ومتغيرات STORAGE_S3_*، إلى الخادم كسلسلة فارغة عندما تكون فارغة أو مفقودة في .env، ويتعامل الخادم مع السلسلة الفارغة باعتبارها قيمة مُعدّة بدلًا من اعتبارها غير معيّنة. أبقِ SERVER_URL معيّنًا، وعند استخدام STORAGE_TYPE=S_3، عيّن كل متغير STORAGE_S3_* مطلوب: إذ إن STORAGE_S3_NAME الفارغ يُعطّل كل عملية رفع. تعود المتغيرات ذات القيمة الافتراضية في docker-compose.yml، مثل أجزاء PG_DATABASE_* وREDIS_URL، إلى تلك القيمة الافتراضية عندما تكون فارغة أو مفقودة.

الخطوة 2: الحصول على ملف Docker Compose

قم بتنزيل ملف docker-compose.yml إلى دليل العمل الخاص بك:

الخطوة 3: إطلاق التطبيق

بدء حاويات Docker:

الخطوة 4: الوصول إلى التطبيق

إذا كنت تستضيف twentyCRM على جهازك، فافتح المتصفح وانتقل إلى http://localhost:3000. إذا كنت تستضيفه على خادم، فتحقق من أن الخادم يعمل وأن كل شيء على ما يرام باستخدام

التكوين

جعل Twenty متاحاً للوصول الخارجي

افتراضياً، يعمل Twenty على localhost على المنفذ 3000. تقوم واجهة المستخدم بحل واجهة برمجة التطبيقات (API) من مصدر المتصفح نفسه، لذلك يتم تحميلها من أي اسم مضيف يصل إلى الحاوية — لكن يجب مع ذلك تعيين SERVER_URL إلى عنوان URL العام الخاص بك: يستخدمه الخادم للروابط المُنشأة (رسائل البريد الإلكتروني، استدعاءات OAuth) ولاكتشاف HTTPS لملفات تعريف الارتباط الآمنة.

فهم SERVER_URL

  • البروتوكول: استخدم http أو https حسب الإعداد الخاص بك.
    • استخدم http إذا لم تقم بإعداد SSL.
    • استخدم https إذا كان لديك SSL تم تكوينه.
  • النطاق/الآي بي: هذا هو النطاق أو عنوان IP حيث يكون تطبيقك متاحاً.
  • المنفذ: اشمل رقم المنفذ إذا لم تكن تستخدم المنافذ الافتراضية (80 لـ http, 443 لـ https).

متطلبات SSL

SSL (HTTPS) مطلوب لعمل ميزات معينة في المتصفح بشكل صحيح. بينما قد تعمل هذه الميزات أثناء التطوير المحلي (بما أن المتصفحات تعامل localhost بشكل مختلف)، هناك حاجة إلى إعداد SSL صحيح عند استضافة Twenty على نطاق عادي. على سبيل المثال، قد يطلب API للحافظة السياق الآمن - بعض الميزات مثل أزرار النسخ في جميع أنحاء التطبيق قد لا تعمل بدون تمكين HTTPS. نوصي بشدة بإعداد Twenty خلف وكيل عكسي مع إنهاء SSL للأمان والوظيفية المثلى.
قبل إتاحة Twenty على الإنترنت، اقرأ تأمين مثيلك. يمكن لمعظم الفرق إبقاء التطبيق خاصًا وفتح بضعة مسارات فقط.

تكوين SERVER_URL

  1. حدد عنوان وصولك
    • بدون وكيل عكسي (الوصول المباشر): إذا كنت تصل إلى التطبيق مباشرة بدون وكيل عكسي:
    • مع وكيل عكسي (المنافذ القياسية): إذا كنت تستخدم وكيل عكسي مثل Nginx أو Traefik وكان لديك SSL تم تكوينه:
    • مع وكيل عكسي (منافذ مخصصة): إذا كنت تستخدم منافذ غير قياسية:
  2. تحديث ملف .env افتح ملف .env وقم بتحديث SERVER_URL:
    أمثلة:
    • الوصول المباشر بدون SSL:
    • الوصول عبر النطاق باستخدام SSL:
  3. إعادة تشغيل التطبيق لتطبيق التغييرات، أعد تشغيل حاويات Docker:

اعتبارات

  • تكوين الوكيل العكسي: تأكد من أن الوكيل العكسي يوجه الطلبات إلى المنفذ الداخلي الصحيح (افتراضيًا 3000). قم بتكوين انتهاء SSL وأي ترويسات مطلوبة.
  • إعدادات الجدار الناري: افتح المنافذ اللازمة في جدار الحماية للسماح بالوصول الخارجي.
  • التناسق: يجب أن يتطابق SERVER_URL مع طريقة وصول المستخدمين إلى تطبيقك في متصفحاتهم.

استمرارية البيانات

  • أحجام البيانات: يستخدم تكوين Docker Compose وحدات التخزين للاحتفاظ بالبيانات لقاعدة البيانات وتخزين الخادم.
  • البيئات غير المرتبطة بالحالة: إذا كنت تقوم بالنشر إلى بيئة غير مرتبطة بالحالة (مثل بعض خدمات السحابة)، فقم بتكوين التخزين الخارجي لحفظ البيانات.

النسخ الاحتياطي والاستعادة

تحمي النسخ الاحتياطية المنتظمة بيانات نظام إدارة علاقات العملاء لديك من الفقدان.

إنشاء نسخة احتياطية لقاعدة البيانات

أتمتة النسخ الاحتياطية اليومية

أضف إلى crontab لديك (crontab -e):

الاستعادة من نسخة احتياطية

  1. إيقاف التطبيق:
  1. استعادة قاعدة البيانات:
  1. إعادة تشغيل الخدمات:

أفضل ممارسات النسخ الاحتياطي

  • اختبر عمليات الاستعادة بانتظام — تحقق من أن النسخ الاحتياطية تعمل فعلاً
  • خزّن النسخ الاحتياطية خارج الموقع — استخدم التخزين السحابي (S3، GCS، إلخ.)
  • شفّر البيانات الحساسة — قم بحماية النسخ الاحتياطية بالتشفير
  • احتفِظ بنسخ متعددة — احتفِظ بنسخ احتياطية يومية وأسبوعية وشهرية

استكشاف الأخطاء وإصلاحها

إذا واجهت أي مشكلة، فارجع إلى استكشاف الأخطاء وإصلاحها للحصول على الحلول.

الاستضافة المُدارة

تُفضّل عدم تشغيل وصيانة Twenty بنفسك؟ اعثر على شريك استضافة Twenty معتمد لنشر واستضافة وإدارة مثيلك من البداية إلى النهاية. (أو تواصل مع فريقنا: contact@twenty.com.)