إدارة الإعدادات
يوفر Twenty وضعين للإعداد ليلائم احتياجات النشر المختلفة:
الوصول إلى لوحة الإدارة: يمكن للمستخدمين الذين لديهم صلاحيات المسؤول (canAccessFullAdminPanel: true) فقط الوصول إلى واجهة التكوين.
1. إعداد لوحة الإدارة (افتراضي)
IS_CONFIG_VARIABLES_IN_DB_ENABLED=true # افتراضي
يحدث أغلب التكوين عبر واجهة المستخدم بعد التثبيت:
- الوصول إلى نسخة Twenty الخاصة بك (عادة
http://localhost:3000)
- اذهب إلى الإعدادات / لوحة الإدارة / متغيرات التكوين
- اضبط التكاملات، والبريد الإلكتروني، والتخزين، والمزيد
- تسري التغييرات على الفور (خلال 15 ثانية لعمليات النشر متعددة الحاويات)
نشرات متعددة الحاويات: عند استخدام إعدادات قاعدة البيانات (IS_CONFIG_VARIABLES_IN_DB_ENABLED=true)، يقوم كل من حاويات الخادم والعامل بالقراءة من نفس قاعدة البيانات. التغييرات في لوحة الإدارة تؤثر عليهما تلقائيًا، مما يلغي الحاجة إلى تكرار متغيرات البيئة بين الحاويات (باستثناء متغيرات البنية التحتية).
ما يمكنك تكوينه عبر لوحة الإدارة:
- المصادقة - Google/Microsoft OAuth، إعدادات كلمة المرور
- البريد الإلكتروني - إعدادات SMTP، القوالب، التحقق
- التخزين - تكوين S3، مسارات التخزين المحلية
- التكاملات - Gmail، تقويم Google، خدمات Microsoft
- حدود التشغيل ومعدل التكنولوجيا - حدود التنفيذ، API الحد من السرعة
- والمزيد من الأمور…
كل متغير موثق بوصف في لوحة الإدارة الخاصة بك في الإعدادات → لوحة الإدارة → متغيرات التكوين.
بعض إعدادات البنية التحتية مثل اتصالات قاعدة البيانات (PG_DATABASE_URL)، عناوين الخوادم (SERVER_URL)، وأسرار التطبيقات (APP_SECRET) يمكن ضبطها فقط عبر ملف .env.مرجع تقني كامل →
2. إعداد بيئي فقط
IS_CONFIG_VARIABLES_IN_DB_ENABLED=false
جميع الإعدادات تتم إدارتها عبر ملفات .env:
- قم بتعيين
IS_CONFIG_VARIABLES_IN_DB_ENABLED=false في ملف .env الخاص بك
- أضف جميع متغيرات الإعداد إلى ملف
.env الخاص بك
- أعد تشغيل الحاويات لتصبح التغييرات نافذة
- ستظهر لوحة الإدارة القيم الحالية لكنها لن تتمكن من تعديلها
وضع تعدد مساحات العمل
افتراضيًا، تعمل Twenty في وضع مساحة عمل واحدة — وهو مثالي لمعظم عمليات النشر المستضافة ذاتيًا حيث تحتاج إلى مثيل واحد من نظام إدارة علاقات العملاء لمؤسستك.
وضع مساحة العمل الواحدة (الافتراضي)
IS_MULTIWORKSPACE_ENABLED=false # default
- مساحة عمل واحدة لكل مثيل من Twenty
- أول مستخدم يصبح تلقائيًا مشرفًا مع صلاحيات كاملة (
canImpersonate وcanAccessFullAdminPanel)
- يتم تعطيل عمليات التسجيل الجديدة بعد إنشاء مساحة العمل الأولى
- بنية URL بسيطة:
https://your-domain.com
تمكين وضع تعدد مساحات العمل
IS_MULTIWORKSPACE_ENABLED=true
DEFAULT_SUBDOMAIN=app # default value
قم بتمكين وضع تعدد مساحات العمل لعمليات النشر المشابهة لـ SaaS حيث تحتاج عدة فرق مستقلة إلى مساحات عمل خاصة بها على نفس مثيل Twenty.
الاختلافات الرئيسية مقارنة بوضع مساحة العمل الواحدة:
- يمكن إنشاء مساحات عمل متعددة على نفس المثيل
- تحصل كل مساحة عمل على نطاق فرعي خاص بها (مثل:
sales.your-domain.com، marketing.your-domain.com)
- يسجل المستخدمون ويقومون بتسجيل الدخول عبر
{DEFAULT_SUBDOMAIN}.your-domain.com (مثل: app.your-domain.com)
- لا توجد صلاحيات مشرف تلقائية — أول مستخدم في كل مساحة عمل يكون مستخدمًا عاديًا
- إعدادات خاصة بمساحة العمل مثل النطاق الفرعي والنطاق المخصص تصبح متاحة ضمن إعدادات مساحة العمل
إعداد خاص بالبيئة فقط: لا يمكن تكوين IS_MULTIWORKSPACE_ENABLED إلا عبر ملف .env ويتطلب إعادة تشغيل. لا يمكن تغييره عبر لوحة الإدارة.
تكوين DNS لوضع تعدد مساحات العمل
عند استخدام وضع تعدد مساحات العمل، قم بتكوين DNS لديك بسجل wildcard للسماح بإنشاء النطاقات الفرعية ديناميكيًا:
*.your-domain.com -> your-server-ip
يُمكّن هذا توجيه النطاقات الفرعية تلقائيًا لمساحات العمل الجديدة دون تكوين DNS يدوي.
تقييد إنشاء مساحات العمل
في وضع تعدد مساحات العمل، قد ترغب في تقييد من يمكنه إنشاء مساحات عمل جديدة:
IS_WORKSPACE_CREATION_LIMITED_TO_SERVER_ADMINS=true
عند التمكين، يمكن فقط للمستخدمين الذين لديهم canAccessFullAdminPanel إنشاء مساحات عمل إضافية. لا يزال بإمكان المستخدمين إنشاء مساحة العمل الأولى الخاصة بهم أثناء التسجيل الأولي.
تكامل Gmail و Google Calendar
إنشاء مشروع Google Cloud
- اذهب إلى وحدة تحكم السحابة من Google
- أنشئ مشروعًا جديدًا أو اختر أحد المشاريع الموجودة
- قم بتفعيل هذه الـ APIs:
تكوين OAuth
- اذهب إلى بيانات اعتماد
- قم بإنشاء معرف عميل OAuth 2.0
- أضف هذه الـ URIs لإعادة التوجيه:
https://{your-domain}/auth/google/redirect (لتسجيل الدخول الفردي)
https://{your-domain}/auth/google-apis/get-access-token (للتكاملات)
الإعداد في Twenty
- اذهب إلى الإعدادات → لوحة الإدارة → متغيرات التكوين
- ابحث بسهولة عن قسم Google Auth
- حدد هذه المتغيرات:
MESSAGING_PROVIDER_GMAIL_ENABLED=true
CALENDAR_PROVIDER_GOOGLE_ENABLED=true
AUTH_GOOGLE_CLIENT_ID={client-id}
AUTH_GOOGLE_CLIENT_SECRET={client-secret}
AUTH_GOOGLE_CALLBACK_URL=https://{your-domain}/auth/google/redirect
AUTH_GOOGLE_APIS_CALLBACK_URL=https://{your-domain}/auth/google-apis/get-access-token
وضع بيئي فقط: إذا كنت قد ضبطت IS_CONFIG_VARIABLES_IN_DB_ENABLED=false، فأضف هذه المتغيرات إلى ملف .env الخاص بك بدلاً من ذلك.
النطاقات المطلوبة (يتم تكوينها تلقائيًا):
انظر الشيفرة المصدرية ذات الصلة
https://www.googleapis.com/auth/calendar.events
https://www.googleapis.com/auth/gmail.readonly
https://www.googleapis.com/auth/profile.emails.read
إذا كان تطبيقك في وضع الاختبار
إذا كان تطبيقك في وضع الاختبار، ستحتاج إلى إضافة مستخدمين اختباريين إلى مشروعك.
تحت شاشة موافقة OAuth، أضف مستخدمي الاختبار إلى قسم “مستخدمو الاختبار”.
تكامل Microsoft 365
يجب على المستخدمين الحصول على ترخيص Microsoft 365 ليتمكنوا من استخدام تقويم API ورسائل. لن يتمكنوا من مزامنة حسابهم في Twenty دون واحد منها.
إنشاء مشروع في Microsoft Azure
ستحتاج إلى إنشاء مشروع في Microsoft Azure والحصول على بيانات الاعتماد.
تمكين APIs
على وحدة تحكم Microsoft Azure، قم بتمكين الواجهات التالية في “أذونات”:
- Microsoft Graph: Mail.ReadWrite
- Microsoft Graph: Mail.Send
- Microsoft Graph: Calendars.Read
- Microsoft Graph: User.Read
- Microsoft Graph: openid
- Microsoft Graph: email
- Microsoft Graph: profile
- Microsoft Graph: offline_access
ملحوظة: “Mail.ReadWrite” و “Mail.Send” إلزاميان فقط إذا كنت ترغب في إرسال رسائل بريد إلكتروني باستخدام إجراءات سير العمل الخاصة بنا. يمكنك استخدام “Mail.Read” بدلاً من ذلك إذا كنت ترغب فقط في تلقي الرسائل الإلكترونية.
URIs لإعادة التوجيه المصرح بها
ستحتاج إلى إضافة URIs التالية لإعادة التوجيه إلى مشروعك:
https://{your-domain}/auth/microsoft/redirect إذا كنت تريد استخدام تسجيل الدخول الفردي في Microsoft
https://{your-domain}/auth/microsoft-apis/get-access-token
الإعداد في Twenty
- اذهب إلى الإعدادات → لوحة الإدارة → متغيرات التكوين
- ابحث عن قسم Microsoft Auth
- حدد هذه المتغيرات:
MESSAGING_PROVIDER_MICROSOFT_ENABLED=true
CALENDAR_PROVIDER_MICROSOFT_ENABLED=true
AUTH_MICROSOFT_ENABLED=true
AUTH_MICROSOFT_CLIENT_ID={client-id}
AUTH_MICROSOFT_CLIENT_SECRET={client-secret}
AUTH_MICROSOFT_CALLBACK_URL=https://{your-domain}/auth/microsoft/redirect
AUTH_MICROSOFT_APIS_CALLBACK_URL=https://{your-domain}/auth/microsoft-apis/get-access-token
وضع بيئي فقط: إذا كنت قد ضبطت IS_CONFIG_VARIABLES_IN_DB_ENABLED=false، فأضف هذه المتغيرات إلى ملف .env الخاص بك بدلاً من ذلك.
تكوين النطاقات
انظر الشيفرة المصدرية ذات الصلة
- ‘openid’
- ‘البريد الإلكتروني’
- ‘profile’
- ‘offline_access’
- ‘Mail.ReadWrite’
- ‘Mail.Send’
- ‘Calendars.Read’
إذا كان تطبيقك في وضع الاختبار
إذا كان تطبيقك في وضع الاختبار، ستحتاج إلى إضافة مستخدمين اختباريين إلى مشروعك.
أضف مستخدمي الاختبار إلى قسم “المستخدمون والمجموعات”.
مهام الخلفية للتقويم والمراسلة
بعد إعداد تكامل Gmail، أو Google Calendar، أو Microsoft 365، تحتاج إلى بدء وظائف الخلفية التي تقوم بمزامنة البيانات.
سجل الوظائف المتكررة التالية في حاوية العمل الخاصة بك:
# from your worker container
yarn command:prod cron:messaging:messages-import
yarn command:prod cron:messaging:message-list-fetch
yarn command:prod cron:calendar:calendar-event-list-fetch
yarn command:prod cron:calendar:calendar-events-import
yarn command:prod cron:messaging:ongoing-stale
yarn command:prod cron:calendar:ongoing-stale
yarn command:prod cron:workflow:automated-cron-trigger
تكوين البريد الإلكتروني
- اذهب إلى الإعدادات → لوحة الإدارة → متغيرات التكوين
- ابحث عن قسم Email
- قم بضبط إعدادات SMTP الخاصة بك:
وضع بيئي فقط: إذا كنت قد ضبطت IS_CONFIG_VARIABLES_IN_DB_ENABLED=false، فأضف هذه المتغيرات إلى ملف .env الخاص بك بدلاً من ذلك.
تخزين S3
افتراضياً، تقوم Twenty بتخزين الملفات المرفوعة على نظام الملفات المحلي. بالنسبة لعمليات النشر في بيئة الإنتاج، استخدم S3 أو خدمة متوافقة مع S3 (MinIO، DigitalOcean Spaces، إلخ) لضمان بقاء الملفات عبر إعادة تشغيل الحاويات وإتاحة التوسّع عبر مثيلات خوادم متعددة.
عيّن STORAGE_TYPE=S_3 وقم بتهيئة متغيرات STORAGE_S3_* من خلال لوحة الإدارة أو .env. راجع مرجع config-variables.ts للاطلاع على القائمة الكاملة لمتغيرات S3.
عند استخدام S3 مع الميزات المعتمدة على CORS (مثل تنزيل الملفات داخل المتصفح)، تأكد من أن حاويتك تسمح بأصل واجهة Twenty الأمامية ضمن تهيئة CORS الخاصة بها.
الوظائف المنطقية ومفسر الشيفرة
تدعم Twenty الوظائف المنطقية لعمليات سير العمل ومفسر الشيفرة لتحليل بيانات الذكاء الاصطناعي. كلاهما يقوم بتشغيل الشيفرة المقدمة من المستخدم ويتطلب تهيئة صريحة لأغراض الأمان.
الإعدادات الافتراضية للأمان
في بيئة الإنتاج (NODE_ENV=production): يكون الإعداد الافتراضي لكل من الوظائف المنطقية ومفسر الشيفرة هو معطل. يجب تمكينهما صراحة باستخدام LOGIC_FUNCTION_TYPE وCODE_INTERPRETER_TYPE إذا كنت تحتاج إلى هذه الميزات.
في بيئة التطوير (NODE_ENV=development): يكون الإعداد الافتراضي لكليهما LOCAL لتسهيل التشغيل محلياً.
ملاحظة أمنية: يقوم برنامج التشغيل المحلي (LOGIC_FUNCTION_TYPE=LOCAL أو CODE_INTERPRETER_TYPE=LOCAL) بتشغيل الشيفرة مباشرة على المضيف ضمن عملية Node.js من دون عزل. يجب استخدامه فقط للشيفرة الموثوقة أثناء التطوير. لعمليات النشر الإنتاجية التي تتعامل مع شيفرة غير موثوقة، استخدم LOGIC_FUNCTION_TYPE=LAMBDA أو CODE_INTERPRETER_TYPE=E2B (مع وضع الحماية)، أو اتركهما مُعطَّلَيْن.
الوظائف المنطقية - برامج التشغيل المتاحة
| برنامج التشغيل | متغير البيئة | حالة الاستخدام | مستوى الأمان |
|---|
| معطل | LOGIC_FUNCTION_TYPE=DISABLED | تعطيل الوظائف المنطقية بالكامل | غير متاح |
| محلي | LOGIC_FUNCTION_TYPE=LOCAL | بيئات التطوير والبيئات الموثوقة | منخفض (من دون عزل) |
| Lambda | LOGIC_FUNCTION_TYPE=LAMBDA | الإنتاج مع شيفرة غير موثوق بها | مرتفع (عزل على مستوى الأجهزة) |
الوظائف المنطقية - الإعداد الموصى به
للتطوير:
LOGIC_FUNCTION_TYPE=LOCAL # default when NODE_ENV=development
للإنتاج (AWS):
LOGIC_FUNCTION_TYPE=LAMBDA
LOGIC_FUNCTION_LAMBDA_REGION=us-east-1
LOGIC_FUNCTION_LAMBDA_ROLE=arn:aws:iam::123456789:role/your-lambda-role
LOGIC_FUNCTION_LAMBDA_ACCESS_KEY_ID=your-access-key
LOGIC_FUNCTION_LAMBDA_SECRET_ACCESS_KEY=your-secret-key
لتعطيل الوظائف المنطقية:
LOGIC_FUNCTION_TYPE=DISABLED # default when NODE_ENV=production
مفسر الشيفرة - برامج التشغيل المتاحة
| برنامج التشغيل | متغير البيئة | حالة الاستخدام | مستوى الأمان |
|---|
| معطل | CODE_INTERPRETER_TYPE=DISABLED | تعطيل تنفيذ الشيفرة بالذكاء الاصطناعي | غير متاح |
| محلي | CODE_INTERPRETER_TYPE=LOCAL | للتطوير فقط | منخفض (من دون عزل) |
| E2B | CODE_INTERPRETER_TYPE=E_2_B | الإنتاج مع تنفيذ ضمن صندوق رمل معزول | مرتفعة (صندوق رمل معزول) |
عند استخدام LOGIC_FUNCTION_TYPE=DISABLED أو CODE_INTERPRETER_TYPE=DISABLED، سترجع أي محاولة للتنفيذ خطأً. يكون هذا مفيدًا إذا كنت ترغب في تشغيل Twenty من دون هذه الإمكانات.