mirror of
https://github.com/twentyhq/twenty
synced 2026-04-21 21:47:38 +00:00
Created by Github action <!-- mintlify-editor-comments:start --> Mintlify --- 0 threads from 0 users in Mintlify - No unresolved comments <!-- mintlify-editor-comments:end --> <!-- mintlify-comment--> <a href="https://dashboard.mintlify.com/twenty/twenty/editor/i18n-docs?source=pr_comment" target="_blank" rel="noopener noreferrer"><picture><source media="(prefers-color-scheme: dark)" srcset="https://d3gk2c5xim1je2.cloudfront.net/assets/open-mintlify-editor-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://d3gk2c5xim1je2.cloudfront.net/assets/open-mintlify-editor-light.svg"><img src="https://d3gk2c5xim1je2.cloudfront.net/assets/open-mintlify-editor-light.svg" alt="Open in Mintlify Editor"></picture></a> <!-- /mintlify-comment --> Co-authored-by: github-actions <github-actions@twenty.com>
252 lines
9.6 KiB
Text
252 lines
9.6 KiB
Text
---
|
|
title: بنقرة واحدة مع Docker Compose
|
|
---
|
|
|
|
<Warning>
|
|
الحاويات الخاصة بدوكر مخصصة للاستضافة الإنتاجية أو الاستضافة الذاتية، للتحقيق يرجى التحقق من [الإعداد المحلي](/l/ar/developers/contribute/capabilities/local-setup).
|
|
</Warning>
|
|
|
|
## نظرة عامة
|
|
|
|
يوفر هذا الدليل تعليمات خطوة بخطوة لتثبيت وتكوين تطبيق "Twenty" باستخدام Docker Compose. الهدف هو جعل العملية مباشرة ومنع المشاكل الشائعة التي يمكن أن تؤدي إلى تعطيل إعدادك.
|
|
|
|
**مهم:** عدّل الإعدادات المذكورة صراحة في هذا الدليل فقط. قد يؤدي تعديل التكوينات الأخرى إلى مشاكل.
|
|
|
|
راجع المستندات الخاصة بـ [إعداد متغيرات البيئة](/l/ar/developers/self-host/capabilities/setup) لإعداد متقدم. يجب إعلان جميع متغيرات البيئة في الملف docker-compose.yml على مستوى الخادم و/أو العامل بناءً على المتغير.
|
|
|
|
## متطلبات النظام
|
|
|
|
* رام: تأكد من أن بيئتك تحتوي على ما لا يقل عن 2GB من ذاكرة الرام. قد يؤدي عدم كفاية الذاكرة إلى تعطل العمليات.
|
|
* دوكر ودوكر كومبوز: تأكد من تثبيت كلاهما وتحديثهما.
|
|
|
|
## الخيار 1: نص سطر واحد
|
|
|
|
قم بتثبيت أحدث إصدار مستقر من Twenty باستخدام أمر واحد:
|
|
|
|
```bash
|
|
bash <(curl -sL https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/scripts/install.sh)
|
|
```
|
|
|
|
لتثبيت إصدار محدد أو فرع:
|
|
|
|
```bash
|
|
VERSION=vx.y.z BRANCH=branch-name bash <(curl -sL https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/scripts/install.sh)
|
|
```
|
|
|
|
* استبدل x.y.z برقم الإصدار المطلوب.
|
|
* استبدل branch-name بالاسم الفرعي المطلوب تثبيته.
|
|
|
|
## الخيار 2: خطوات يدوية
|
|
|
|
اتبع هذه الخطوات لإعداد يدوي.
|
|
|
|
### الخطوة 1: إعداد ملف البيئة
|
|
|
|
1. **إنشاء ملف .env**
|
|
|
|
انسخ ملف البيئة النموذجي إلى ملف .env جديد في دليل العمل لديك:
|
|
|
|
```bash
|
|
curl -o .env https://raw.githubusercontent.com/twentyhq/twenty/refs/heads/main/packages/twenty-docker/.env.example
|
|
```
|
|
|
|
2. **إنشاء رموز سرية**
|
|
|
|
قم بتشغيل الأمر التالي لإنشاء سلسلة عشوائية فريدة:
|
|
|
|
```bash
|
|
openssl rand -base64 32
|
|
```
|
|
|
|
**مهم:** احتفظ بهذه القيمة سرية ولا تشاركها.
|
|
|
|
3. **تحديث الـ `.env`**
|
|
|
|
استبدل قيمة النائب في ملف .env بالقيمة الرمزية المولدة:
|
|
|
|
```ini
|
|
APP_SECRET=first_random_string
|
|
```
|
|
|
|
4. **تعيين كلمة مرور PostgreSQL**
|
|
|
|
قم بتحديث قيمة `PG_DATABASE_PASSWORD` في ملف .env باستخدام كلمة مرور قوية بدون أحرف خاصة.
|
|
|
|
```ini
|
|
PG_DATABASE_PASSWORD=my_strong_password
|
|
```
|
|
|
|
### الخطوة 2: الحصول على ملف Docker Compose
|
|
|
|
قم بتنزيل ملف `docker-compose.yml` إلى دليل العمل الخاص بك:
|
|
|
|
```bash
|
|
curl -o docker-compose.yml https://raw.githubusercontent.com/twentyhq/twenty/refs/heads/main/packages/twenty-docker/docker-compose.yml
|
|
```
|
|
|
|
### الخطوة 3: إطلاق التطبيق
|
|
|
|
بدء حاويات Docker:
|
|
|
|
```bash
|
|
docker compose up -d
|
|
```
|
|
|
|
### الخطوة 4: الوصول إلى التطبيق
|
|
|
|
إذا كنت تستضيف twentyCRM على جهازك، فافتح المتصفح وانتقل إلى [http://localhost:3000](http://localhost:3000).
|
|
|
|
إذا كنت تستضيفه على خادم، فتحقق من أن الخادم يعمل وأن كل شيء على ما يرام باستخدام
|
|
|
|
```bash
|
|
curl http://localhost:3000
|
|
```
|
|
|
|
## التكوين
|
|
|
|
### جعل Twenty متاحاً للوصول الخارجي
|
|
|
|
افتراضياً، يعمل Twenty على `localhost` على المنفذ `3000`. للوصول إليه عبر نطاق خارجي أو عنوان IP، تحتاج إلى تكوين `SERVER_URL` في ملف `.env`.
|
|
|
|
#### فهم `SERVER_URL`
|
|
|
|
* **البروتوكول:** استخدم `http` أو `https` حسب الإعداد الخاص بك.
|
|
* استخدم `http` إذا لم تقم بإعداد SSL.
|
|
* استخدم `https` إذا كان لديك SSL تم تكوينه.
|
|
* **النطاق/الآي بي:** هذا هو النطاق أو عنوان IP حيث يكون تطبيقك متاحاً.
|
|
* **المنفذ:** اشمل رقم المنفذ إذا لم تكن تستخدم المنافذ الافتراضية (`80` لـ `http`, `443` لـ `https`).
|
|
|
|
### متطلبات SSL
|
|
|
|
SSL (HTTPS) مطلوب لعمل ميزات معينة في المتصفح بشكل صحيح. بينما قد تعمل هذه الميزات أثناء التطوير المحلي (بما أن المتصفحات تعامل localhost بشكل مختلف)، هناك حاجة إلى إعداد SSL صحيح عند استضافة Twenty على نطاق عادي.
|
|
|
|
على سبيل المثال، قد يطلب API للحافظة السياق الآمن - بعض الميزات مثل أزرار النسخ في جميع أنحاء التطبيق قد لا تعمل بدون تمكين HTTPS.
|
|
|
|
نوصي بشدة بإعداد Twenty خلف وكيل عكسي مع إنهاء SSL للأمان والوظيفية المثلى.
|
|
|
|
#### تكوين `SERVER_URL`
|
|
|
|
1. **حدد عنوان وصولك**
|
|
* **بدون وكيل عكسي (الوصول المباشر):**
|
|
|
|
إذا كنت تصل إلى التطبيق مباشرة بدون وكيل عكسي:
|
|
|
|
```ini
|
|
SERVER_URL=http://your-domain-or-ip:3000
|
|
```
|
|
|
|
* **مع وكيل عكسي (المنافذ القياسية):**
|
|
|
|
إذا كنت تستخدم وكيل عكسي مثل Nginx أو Traefik وكان لديك SSL تم تكوينه:
|
|
|
|
```ini
|
|
SERVER_URL=https://your-domain-or-ip
|
|
```
|
|
|
|
* **مع وكيل عكسي (منافذ مخصصة):**
|
|
|
|
إذا كنت تستخدم منافذ غير قياسية:
|
|
|
|
```ini
|
|
SERVER_URL=https://your-domain-or-ip:custom-port
|
|
```
|
|
|
|
2. **تحديث ملف `.env`**
|
|
|
|
افتح ملف `.env` وقم بتحديث `SERVER_URL`:
|
|
|
|
```ini
|
|
SERVER_URL=http(s)://your-domain-or-ip:your-port
|
|
```
|
|
|
|
**أمثلة:**
|
|
|
|
* الوصول المباشر بدون SSL:
|
|
```ini
|
|
SERVER_URL=http://123.45.67.89:3000
|
|
```
|
|
* الوصول عبر النطاق باستخدام SSL:
|
|
```ini
|
|
SERVER_URL=https://mytwentyapp.com
|
|
```
|
|
|
|
3. **إعادة تشغيل التطبيق**
|
|
|
|
لتطبيق التغييرات، أعد تشغيل حاويات Docker:
|
|
|
|
```bash
|
|
docker compose down\ndocker compose up -d
|
|
```
|
|
|
|
#### اعتبارات
|
|
|
|
* **تكوين الوكيل العكسي:**
|
|
|
|
تأكد من أن الوكيل العكسي يوجه الطلبات إلى المنفذ الداخلي الصحيح (افتراضيًا `3000`). قم بتكوين انتهاء SSL وأي ترويسات مطلوبة.
|
|
|
|
* **إعدادات الجدار الناري:**
|
|
|
|
افتح المنافذ اللازمة في جدار الحماية للسماح بالوصول الخارجي.
|
|
|
|
* **التناسق:**
|
|
|
|
يجب أن يتطابق `SERVER_URL` مع طريقة وصول المستخدمين إلى تطبيقك في متصفحاتهم.
|
|
|
|
#### استمرارية البيانات
|
|
|
|
* **أحجام البيانات:**
|
|
|
|
يستخدم تكوين Docker Compose وحدات التخزين للاحتفاظ بالبيانات لقاعدة البيانات وتخزين الخادم.
|
|
|
|
* **البيئات غير المرتبطة بالحالة:**
|
|
|
|
إذا كنت تقوم بالنشر إلى بيئة غير مرتبطة بالحالة (مثل بعض خدمات السحابة)، فقم بتكوين التخزين الخارجي لحفظ البيانات.
|
|
|
|
## النسخ الاحتياطي والاستعادة
|
|
|
|
تحمي النسخ الاحتياطية المنتظمة بيانات نظام إدارة علاقات العملاء لديك من الفقدان.
|
|
|
|
### إنشاء نسخة احتياطية لقاعدة البيانات
|
|
|
|
```bash
|
|
docker exec twenty-postgres pg_dump -U postgres twenty > backup_$(date +%Y%m%d).sql
|
|
```
|
|
|
|
### أتمتة النسخ الاحتياطية اليومية
|
|
|
|
أضف إلى crontab لديك (`crontab -e`):
|
|
|
|
```bash
|
|
0 2 * * * docker exec twenty-postgres pg_dump -U postgres twenty > /backups/twenty_$(date +\%Y\%m\%d).sql
|
|
```
|
|
|
|
### الاستعادة من نسخة احتياطية
|
|
|
|
1. إيقاف التطبيق:
|
|
|
|
```bash
|
|
docker compose stop twenty-server twenty-front
|
|
```
|
|
|
|
2. استعادة قاعدة البيانات:
|
|
|
|
```bash
|
|
docker exec -i twenty-postgres psql -U postgres twenty < backup_20240115.sql
|
|
```
|
|
|
|
3. إعادة تشغيل الخدمات:
|
|
|
|
```bash
|
|
docker compose up -d
|
|
```
|
|
|
|
### أفضل ممارسات النسخ الاحتياطي
|
|
|
|
* **اختبر عمليات الاستعادة بانتظام** — تحقق من أن النسخ الاحتياطية تعمل فعلاً
|
|
* **خزّن النسخ الاحتياطية خارج الموقع** — استخدم التخزين السحابي (S3، GCS، إلخ.)
|
|
* **شفّر البيانات الحساسة** — قم بحماية النسخ الاحتياطية بالتشفير
|
|
* **احتفِظ بنسخ متعددة** — احتفِظ بنسخ احتياطية يومية وأسبوعية وشهرية
|
|
|
|
## استكشاف الأخطاء وإصلاحها
|
|
|
|
إذا واجهت أي مشكلة، فارجع إلى [استكشاف الأخطاء وإصلاحها](/l/ar/developers/self-host/capabilities/troubleshooting) للحصول على الحلول.
|