# إعدادات متغيرات البيئة

بجانب [إعدادات النظام](https://docs.ngsurvey.com/ar/installation-setup/system-settings) يمكنك أيضًا تكوين جوهر ngSurvey باستخدام متغيرات البيئة التالية. يمكن أيضًا تعيين هذه المتغيرات إما في ملف web.config إذا كنت تستخدم IIS أو داخل ملف ngsurvey.settings.json.

{% hint style="info" %}
في خدمة تطبيق Azure Linux الافتراضية أو حاوية Linux مخصصة أي `:` في اسم المتغير يجب استبدالها بـ `__` (شرطة سفلية مزدوجة).
{% endhint %}

## 🔅 متغيرات البيئة

* **`NGSurvey:Secret`**&#x645;فتاح التشفير المستخدم لتوقيع JWT ورموز عناصر الأمان. يجب أن يكون طوله 64 محرفًا على الأقل.&#x20;
* **`NGSurvey:AutoDBSetup`** افتراضيًا سيقوم ngSurvey بتكوين قاعدة البيانات الهدف تلقائيًا أو ترقيةها. إذا كنت تريد تعطيل عملية التثبيت/الترقية التلقائية يمكنك ضبط هذا المتغير على false. في هذه الحالة ستحتاج إلى تثبيت قاعدة البيانات يدويًا باستخدام [dacpac](https://docs.ngsurvey.com/ar/installation-setup/installation/alwajhh-alkhlfyh-lqaadh-albyanat/microsoft-sql-server) الملف الخاص بـ Microsoft SQL Server. ستُثبت MariaDB أو MySQL فقط مباشرةً بواسطة ngSurvey، ولا نقدم أي سكريبتات أو كود لتثبيت وإعداد قاعدة البيانات يدويًا بنفسك.
* **`NGSurvey:MailingBatchPoolingDelay`**&#x647;و التأخير بالدقائق بعده ستُشغّل دفعات البريد المتعلقة مثل إرسال البريد الإلكتروني للحملات. الافتراضي هو دقيقة واحدة.
* **`NGSurvey:MaxMailingThread`** يتيح لك تحديد عدد سلاسل العمل التي ستُستخدم أثناء عملية إرسال البريد الإلكتروني. توخَّ الحذر عند ضبط عدد السلاسل حيث سيفتح كل سلسلة اتصالًا بخادم البريد لديك. الافتراضي هو 2.
* **`NGSurvey:EnableTenants`** إذا كنت تملك رخصة Tenant عليك تمكين المستأجرين في تثبيتك بتعيين هذا المتغير على true.&#x20;
* **`NGSurvey:DisableEmailBlacklisting`** يعطل إمكانية وضع عناوين البريد الإلكتروني في القائمة السوداء للحملات إذا تم تعيينه على true.
* **`NGSurvey:DisableMobilePhoneNumberBlacklisting`** يعطل إمكانية وضع أرقام الهواتف المحمولة في القائمة السوداء للحملات إذا تم تعيينه على true.
* **`NGSurvey:EnableSwagger`** إذا تم تعيينه على false سيعطل الوصول إلى توثيق API على <https://yourngsurveysite/api.&#x20>;
* **`NGSurvey:DistributedCache`**&#x64A;فعِّل التخزين المؤقت الموزع إذا تم تعيينه على true. يجب تفعيل التخزين المؤقت الموزع إذا كنت تستخدم ngSurvey على [cluster](https://docs.ngsurvey.com/ar/installation-setup/installation/cluster-scale-out-configuration) مثل التكوين
* **`NGSurvey:CacheTimeout`** يستخدم ngSurvey ذاكرات تخزين داخلية لتحسين الأداء. افتراضيًا لا تنتهي صلاحية هذه الذاكر. يمكنك تحديد مهلة بالدقائق إذا رغبت في تعيين وقت انتهاء لهذه الذاكر ليتم تفريغها على فترات منتظمة.&#x20;
* **`NGSurvey:PanelSyncronizerThreadsNumber`** يحدد عدد السلاسل التي ستُستخدم لمزامنة اللوحات مقابل مصادر بياناتها. الافتراضي هو 6. توخَّ الحذر لأن كل سلسلة يمكن أن تفتح اتصالًا جديدًا إلى مصدر البيانات الذي تتصل به لوحتك.&#x20;
* **`NGSurvey:Languages`** مصفوفة من رموز اللغات التي ستكون قابلة للاختيار لقسم الإدارة.  :&#x20;
* **`NGSurvey:ClusterNode`** يحدد إذا تم تعيينه على true ما إذا كانت النسخة تعمل على عقدة عنقودية. النسخ التي تم تعيين ClusterNode لديها إلى true لن تشغل أي نوع من الوظائف الخلفية. يجب أن تحتفظ بالمهام الخلفية إما على نسخ منفصلة لا تخدم أي استبيانات أو على نسخة واحدة فقط.&#x20;
* **`NGSurvey:EncryptionKey`** سيُستخدم مفتاح التشفير هذا لتشفير جميع البيانات على مستوى قاعدة البيانات مثل سلاسل الاتصال وكلمات المرور والإعدادات الحساسة. يجب أن يكون طوله 64 محرفًا على الأقل. تأكد من الاحتفاظ بنسخة احتياطية من المفتاح لأنه بدون المفتاح قد لا تتمكن من استرداد أي من بيانات ngSurvey الخاصة بك.
* **`NGSurvey:AccountLockoutThreshold`** عدد المرات التي يمكن فيها لمحاولة تسجيل الدخول محاولة المصادقة قبل أن يتم قفله.
* **`NGSurvey:AccountLockoutDuration`** عدد الدقائق التي تظل فيها حسابات الدخول مقفلة قبل السماح بالمصادقة مرة أخرى. &#x20;
* **`NGSurvey:EnableHSTS`**&#x64A;فعِّل HSTS إذا كنت تستخدم SSL فستُضبط جميع ملفات تعريف الارتباط كآمنة.&#x20;
* **`NGSurvey:WebSetupDisabled`** تعطيل واجهة التثبيت عبر الويب لـ ngSurvey بتعيينها على true.
* **`NGSurvey:CaptchaDisabled`** تعطيل ميزات التحقق البشري (captcha) إذا تم تعيينه على true.
* **`NGSurvey:TwoFactorDisabled`** يعطل المصادقة الثنائية عند تسجيل الدخول إذا تم تعيينه على true. يمكن استخدامه لتجاوز المصادقة الثنائية إذا نشأت أي مشكلة.
* **`NGSurvey:ClearActivityLogsOlderThanDays`** عدد الأيام للاحتفاظ ببيانات سجل النشاط.
* **`NGSurvey:ClearActivityLogTresholdDays`** عدد الأيام قبل أن تُحذف بيانات سجل النشاط نهائيًا.
* **`NGSurvey:EncryptActivityLog`** إذا تم تعيينه على true فسيُشفَّر بيانات سجل النشاط على مستوى قاعدة البيانات.
* **`NGSurvey:PersitentMailStorageLocation`** مسار إلى مجلد يمكن استخدامه لنسخ الرسائل احتياطيًا والتي تُحفظ في مجلد الاستلام الخاص بـ Exchange في حال كنت تستخدم مجلد الاستلام لإرسال رسائل البريد الإلكتروني. &#x20;
* **`NGSurvey:MaxAllowedTextSize`** أقصى حجم نص مسموح به بالبايت يمكن تخزينه في النظام. يمكن استخدامه لمنع هجمات فيضان النظام. الافتراضي هو 10485760.
* **`NGSurvey:MailServerTest`** إذا تم تعيينه على true فلن يرسل البريد الإلكتروني مباشرةً عبر خادم البريد المُكوَّن.
* **`NGSurvey:LoadTest`** إذا تم تعيينه على true سيسمح بإرسال إجابات المستجيب نفسه عدة مرات.&#x20;
* **`NGSurvey:AdminDisabled`** إذا تم تعيينه على true فسيعطل جميع ميزات الإدارة المتعلقة بالـ API. إذا تم تعطيله ستكون متاحة فقط واجهات الـ API المتعلقة باسترجاع الاستبيانات وتقديم إجابات المستجيبين.&#x20;
* **`NGSurvey:CPSPolicy`**&#x625;ذا تم تعيينه إلى "Self" فسيُطبق سياسة أمان المحتوى (CSP) على المتصفح. لاحظ أن عناصر الإجابة المعتمدة على الودجات وأي ميزات JavaScript مخصصة ستُعطل إذا تم تعيينها إلى Self.&#x20;
* **KeyVault:Name** اسم Key Vault في Azure إذا كنت تخطط لتخزين متغيرات البيئة في Key Vault الخاص بـ Azure.&#x20;
* **AzureAd:ClientId** معرف العميل (Client Id) لـ Key Vault في Azure.&#x20;
* **AzureAd:ClientSecret** السر الخاص بالعميل للوصول إلى Key Vault في Azure.
* **`NGSurvey:RedisConnectionString`** سلسلة الاتصال بخادم التخزين المؤقت Redis.
* **`NGSurvey:RedisInstanceName`** اسم مثيل Redis اختياري
* **`NGSurvey:ActivityLogAzureWorkspaceId`** معرف مساحة عمل Azure Log Analytics لتسجيل الأنشطة
* **`NGSurvey:ActivityLogAzureAuthenticationId`** معرف مصادقة وكيل Azure Log Analytics
* **`NGSurvey:ActivityLogAwsAccessKeyId`** معرف مفتاح الوصول لـ AWS CloudWatch لتسجيل الأنشطة
* **`NGSurvey:ActivityLogAwsSecretAccessKey`** المفتاح السري لـ AWS CloudWatch
* **`NGSurvey:ActivityLogAwsRegion`** منطقة AWS CloudWatch&#x20;
* **`NGSurvey:ActivityLogAwsLogGroup`** مجموعة سجلات AWS CloudWatch
* **`NGSurvey:ActivityLogApplicationInsightsKey`** مفتاح Azure Application Insights لتسجيل الأنشطة&#x20;
* **`NGSurvey:ActivityLogUseEventLog`** إذا تم تعيينه على true فسيسجل الأنشطة في سجل أحداث Windows.
* **`NGSurvey:AccountJWTAccessTokenExpiration`** مدة انتهاء صلاحية رمز JWT للمطور على مستوى الحساب بالدقائق. الافتراضي 90 يومًا، الحد الأقصى 6 أشهر.&#x20;
* **`NGSurvey:FormJWTAccessTokenExpiration`** مدة انتهاء صلاحية رمز JWT للمطور على مستوى الاستبيان/النموذج بالدقائق. الافتراضي 2 يومًا، الحد الأقصى 7 أيام.
* **`NGSurvey:FormJWTAccessTokenExpiration`** مدة انتهاء صلاحية رمز JWT للمطور على مستوى الاستبيان/النموذج بالدقائق. الافتراضي 2 يومًا، الحد الأقصى 7 أيام.
* **`NGSurvey:PostgresAzureScope`** نطاق Azure الذي يدير رموز وصول Entra لاستخدام Postgres جنبًا إلى جنب مع حساب مدار من Entra.
