mirror of
https://github.com/nocobase/nocobase.git
synced 2026-09-19 02:23:00 +08:00
Merge branch 'main' into next
This commit is contained in:
@@ -1,17 +1,28 @@
|
||||
[
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "نظرة عامة",
|
||||
"link": "/multi-app/"
|
||||
"label": "تعدد التطبيقات",
|
||||
"items": [
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "نظرة عامة",
|
||||
"link": "/multi-app/multi-app"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "وضع الذاكرة المشتركة",
|
||||
"link": "/multi-app/multi-app/local"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "وضع البيئات المتعددة",
|
||||
"link": "/multi-app/multi-app/remote"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "تطبيقات متعددة",
|
||||
"link": "/multi-app/multi-app"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "مساحات متعددة",
|
||||
"label": "المساحات المتعددة",
|
||||
"link": "/multi-app/multi-space"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-app"
|
||||
---
|
||||
:::tip إشعار الترجمة بالذكاء الاصطناعي
|
||||
تمت ترجمة هذه الوثائق تلقائيًا بواسطة الذكاء الاصطناعي.
|
||||
:::
|
||||
|
||||
|
||||
# تطبيقات متعددة
|
||||
|
||||
## مقدمة
|
||||
@@ -1,122 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-app-manager"
|
||||
---
|
||||
:::tip إشعار الترجمة بالذكاء الاصطناعي
|
||||
تمت ترجمة هذه الوثائق تلقائيًا بواسطة الذكاء الاصطناعي.
|
||||
:::
|
||||
|
||||
|
||||
# التطبيقات المتعددة
|
||||
|
||||
## مقدمة
|
||||
|
||||
تتيح لك **إضافة التطبيقات المتعددة (Multi-app)** إنشاء وإدارة تطبيقات مستقلة متعددة ديناميكيًا دون الحاجة إلى عمليات نشر منفصلة. كل تطبيق فرعي هو مثيل مستقل تمامًا يمتلك قاعدة بيانات خاصة به، وإضافات، وتكوينات.
|
||||
|
||||
#### حالات الاستخدام
|
||||
- **تعدد المستأجرين**: توفير مثيلات تطبيقات مستقلة، حيث يمتلك كل عميل بياناته الخاصة، وتكوينات الإضافات، ونظام الصلاحيات.
|
||||
- **الأنظمة الرئيسية والفرعية لمجالات الأعمال المختلفة**: نظام كبير يتكون من تطبيقات أصغر يتم نشرها بشكل مستقل.
|
||||
|
||||
:::warning
|
||||
إضافة التطبيقات المتعددة نفسها لا توفر إمكانات مشاركة المستخدمين.
|
||||
إذا كنت بحاجة إلى مشاركة المستخدمين بين تطبيقات متعددة، يمكنك استخدامها بالاقتران مع **[إضافة المصادقة](/auth-verification)**.
|
||||
:::
|
||||
|
||||
## التثبيت
|
||||
|
||||
في إدارة الإضافات، ابحث عن إضافة **التطبيقات المتعددة (Multi-app)** وقم بتمكينها.
|
||||
|
||||

|
||||
|
||||
## دليل الاستخدام
|
||||
|
||||
### إنشاء تطبيق فرعي
|
||||
|
||||
في قائمة إعدادات النظام، انقر على "التطبيقات المتعددة" للدخول إلى صفحة إدارة التطبيقات المتعددة.
|
||||
|
||||

|
||||
|
||||
انقر على زر "إضافة جديد" لإنشاء تطبيق فرعي جديد.
|
||||
|
||||

|
||||
|
||||
#### وصف حقول النموذج
|
||||
|
||||
* **الاسم**: معرّف التطبيق الفرعي، فريد عالميًا.
|
||||
* **اسم العرض**: الاسم الذي يظهر به التطبيق الفرعي في الواجهة.
|
||||
* **وضع التشغيل**:
|
||||
* **التشغيل عند الزيارة الأولى**: يبدأ تشغيل التطبيق الفرعي فقط عندما يصل إليه المستخدم لأول مرة عبر عنوان URL.
|
||||
* **التشغيل مع التطبيق الرئيسي**: يبدأ تشغيل التطبيق الفرعي في نفس وقت تشغيل التطبيق الرئيسي (سيؤدي ذلك إلى زيادة وقت بدء تشغيل التطبيق الرئيسي).
|
||||
* **المنفذ**: رقم المنفذ الذي يستخدمه التطبيق الفرعي أثناء التشغيل.
|
||||
* **نطاق مخصص**: تكوين نطاق فرعي مستقل للتطبيق الفرعي.
|
||||
* **تثبيت في القائمة**: تثبيت مدخل التطبيق الفرعي ليظهر في الجانب الأيسر من شريط التنقل العلوي.
|
||||
* **اتصال قاعدة البيانات**: يُستخدم لتكوين مصدر البيانات للتطبيق الفرعي، ويدعم الطرق الثلاث التالية:
|
||||
* **قاعدة بيانات جديدة**: إعادة استخدام خدمة البيانات الحالية لإنشاء قاعدة بيانات مستقلة.
|
||||
* **اتصال بيانات جديد**: تكوين خدمة قاعدة بيانات جديدة تمامًا.
|
||||
* **وضع المخطط (Schema)**: إنشاء مخطط (Schema) مستقل للتطبيق الفرعي في PostgreSQL.
|
||||
* **الترقية**: إذا كانت قاعدة البيانات المتصلة تحتوي على إصدار أقدم من بنية بيانات NocoBase، فسيتم ترقيتها تلقائيًا إلى الإصدار الحالي.
|
||||
|
||||
### تشغيل وإيقاف تطبيق فرعي
|
||||
|
||||
انقر على زر **تشغيل** لتشغيل التطبيق الفرعي؛
|
||||
> إذا تم تحديد خيار *“التشغيل عند الزيارة الأولى”* أثناء الإنشاء، فسيبدأ التشغيل تلقائيًا عند الزيارة الأولى.
|
||||
|
||||
انقر على زر **عرض** لفتح التطبيق الفرعي في علامة تبويب جديدة.
|
||||
|
||||

|
||||
|
||||
### حالة وسجلات التطبيق الفرعي
|
||||
|
||||
في القائمة، يمكنك عرض استخدام الذاكرة ووحدة المعالجة المركزية لكل تطبيق.
|
||||
|
||||

|
||||
|
||||
انقر على زر **السجلات** لعرض سجلات تشغيل التطبيق الفرعي.
|
||||
> إذا تعذر الوصول إلى التطبيق الفرعي بعد تشغيله (مثل تلف قاعدة البيانات)، يمكنك استخدام السجلات لاستكشاف الأخطاء وإصلاحها.
|
||||
|
||||

|
||||
|
||||
### حذف تطبيق فرعي
|
||||
|
||||
انقر على زر **حذف** لإزالة التطبيق الفرعي.
|
||||
> عند الحذف، يمكنك اختيار ما إذا كنت تريد حذف قاعدة البيانات أيضًا. يرجى المتابعة بحذر، فهذا الإجراء لا يمكن التراجع عنه.
|
||||
|
||||
### الوصول إلى تطبيق فرعي
|
||||
بشكل افتراضي، يتم الوصول إلى التطبيقات الفرعية باستخدام `/_app/:appName/admin/`، على سبيل المثال:
|
||||
```
|
||||
http://localhost:13000/_app/a_7zkxoarusnx/admin/
|
||||
```
|
||||
يمكنك أيضًا تكوين نطاق فرعي مستقل للتطبيق الفرعي. ستحتاج إلى حل النطاق إلى عنوان IP الحالي، وإذا كنت تستخدم Nginx، فستحتاج أيضًا إلى إضافة النطاق إلى تكوين Nginx.
|
||||
|
||||
### إدارة التطبيقات الفرعية عبر سطر الأوامر
|
||||
|
||||
في الدليل الجذر للمشروع، يمكنك استخدام سطر الأوامر لإدارة مثيلات التطبيقات الفرعية عبر **PM2**:
|
||||
|
||||
```bash
|
||||
yarn nocobase pm2 list # عرض قائمة المثيلات قيد التشغيل حاليًا
|
||||
yarn nocobase pm2 stop [appname] # إيقاف عملية تطبيق فرعي محدد
|
||||
yarn nocobase pm2 delete [appname] # حذف عملية تطبيق فرعي محدد
|
||||
yarn nocobase pm2 kill # إنهاء جميع العمليات التي تم تشغيلها بالقوة (قد يشمل ذلك مثيل التطبيق الرئيسي)
|
||||
```
|
||||
|
||||
### ترحيل البيانات من التطبيقات المتعددة القديمة
|
||||
|
||||
انتقل إلى صفحة إدارة التطبيقات المتعددة القديمة، وانقر على زر **ترحيل البيانات إلى التطبيقات المتعددة الجديدة** لترحيل البيانات.
|
||||
|
||||

|
||||
|
||||
## الأسئلة الشائعة
|
||||
|
||||
#### 1. إدارة الإضافات
|
||||
يمكن للتطبيقات الفرعية استخدام نفس الإضافات مثل التطبيق الرئيسي (بما في ذلك الإصدارات)، ولكن يمكن تكوينها واستخدامها بشكل مستقل.
|
||||
|
||||
#### 2. عزل قاعدة البيانات
|
||||
يمكن تكوين التطبيقات الفرعية بقواعد بيانات مستقلة. إذا كنت ترغب في مشاركة البيانات بين التطبيقات، يمكنك القيام بذلك عبر مصادر بيانات خارجية.
|
||||
|
||||
#### 3. النسخ الاحتياطي للبيانات والترحيل
|
||||
حاليًا، لا تتضمن النسخ الاحتياطية للبيانات في التطبيق الرئيسي بيانات التطبيقات الفرعية (فقط المعلومات الأساسية للتطبيقات الفرعية). تحتاج إلى إجراء نسخ احتياطي وترحيل للبيانات يدويًا داخل كل تطبيق فرعي.
|
||||
|
||||
#### 4. النشر والتحديثات
|
||||
سيتم ترقية إصدار التطبيق الفرعي تلقائيًا مع التطبيق الرئيسي، مما يضمن اتساق الإصدار بين التطبيق الرئيسي والتطبيقات الفرعية.
|
||||
|
||||
#### 5. إدارة الموارد
|
||||
استهلاك الموارد لكل تطبيق فرعي هو نفسه تقريبًا للتطبيق الرئيسي. حاليًا، يستهلك التطبيق الواحد حوالي 500-600 ميجابايت من الذاكرة.
|
||||
@@ -0,0 +1,22 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# إدارة التطبيقات المتعددة
|
||||
|
||||
## نظرة عامة
|
||||
|
||||
تتيح إدارة التطبيقات المتعددة في NocoBase إنشاء وتشغيل عدة تطبيقات معزولة عبر نقطة دخول واحدة بواسطة AppSupervisor.
|
||||
|
||||
|
||||
في البداية يكفي تطبيق واحد لسهولة النشر والإدارة، لكن مع نمو الأعمال تزداد كلفة الصيانة ويصعب عزل المجالات.
|
||||
|
||||
|
||||
في هذا الوضع تعمل عدة تطبيقات داخل نفس عملية NocoBase مع استقلال قواعد البيانات ودورة الحياة لكل تطبيق، مع مشاركة الذاكرة والمعالج.
|
||||
|
||||

|
||||
|
||||
|
||||
عند التوسع الكبير يُنصح بالنشر الهجين متعدد البيئات: تطبيق دخول Supervisor وعدة بيئات Worker لتوزيع الحمل وتحسين العزل.
|
||||
|
||||

|
||||
@@ -0,0 +1,65 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# وضع الذاكرة المشتركة
|
||||
|
||||
## مقدمة
|
||||
|
||||
هذا الوضع مناسب عندما تريد تقسيم الأعمال على مستوى التطبيقات بدون تعقيد تشغيلي كبير.
|
||||
|
||||
## دليل الاستخدام
|
||||
|
||||
### متغيرات البيئة
|
||||
|
||||
```bash
|
||||
APP_DISCOVERY_ADAPTER=local
|
||||
APP_PROCESS_ADAPTER=local
|
||||
```
|
||||
|
||||
### إنشاء تطبيق
|
||||
|
||||
In **System Settings**, open **App supervisor**.
|
||||
|
||||

|
||||
|
||||
Click **Add** to create a new application.
|
||||
|
||||

|
||||
|
||||
### بدء التطبيق
|
||||
|
||||
Click **Start**.
|
||||
|
||||

|
||||
|
||||
### الوصول إلى التطبيق
|
||||
|
||||
Default path:
|
||||
|
||||
```bash
|
||||
http://localhost:13000/apps/a_7zkxoarusnx/admin/
|
||||
```
|
||||
|
||||
### إيقاف التطبيق
|
||||
|
||||
Click **Stop**.
|
||||
|
||||

|
||||
|
||||
### حالة التطبيق
|
||||
|
||||

|
||||
|
||||
### حذف التطبيق
|
||||
|
||||
Click **Delete**.
|
||||
|
||||

|
||||
|
||||
## FAQ
|
||||
|
||||
- Plugin config is isolated per app.
|
||||
- Database can be isolated per app.
|
||||
- Main app backup does not include data from other apps.
|
||||
- App version follows main app version in shared-memory mode.
|
||||
@@ -0,0 +1,70 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# وضع البيئات المتعددة
|
||||
|
||||
## مقدمة
|
||||
|
||||
هذا الوضع مناسب للتوسع الأفقي وزيادة الاستقرار بين التطبيقات.
|
||||
|
||||
## النشر
|
||||
|
||||
- Supervisor: central control plane
|
||||
- Worker: runtime environment
|
||||
- Redis: config cache and command channel
|
||||
|
||||
### متطلبات البنية
|
||||
|
||||
- Redis
|
||||
- Database service for Supervisor and Workers
|
||||
|
||||
### تطبيق الدخول (Supervisor)
|
||||
|
||||
```bash
|
||||
APP_MODE=supervisor
|
||||
APP_DISCOVERY_ADAPTER=remote
|
||||
APP_PROCESS_ADAPTER=remote
|
||||
APP_SUPERVISOR_REDIS_URL=
|
||||
APP_COMMAND_ADPATER=redis
|
||||
APP_COMMAND_REDIS_URL=
|
||||
```
|
||||
|
||||
### تطبيق العامل (Worker)
|
||||
|
||||
```bash
|
||||
APP_MODE=worker
|
||||
APP_DISCOVERY_ADAPTER=remote
|
||||
APP_PROCESS_ADAPTER=local
|
||||
APP_SUPERVISOR_REDIS_URL=
|
||||
APP_COMMAND_ADPATER=redis
|
||||
APP_COMMAND_REDIS_URL=
|
||||
ENVIRONMENT_NAME=
|
||||
ENVIRONMENT_URL=
|
||||
ENVIRONMENT_PROXY_URL=
|
||||
```
|
||||
|
||||
## دليل الاستخدام
|
||||
|
||||
### قائمة البيئات
|
||||
|
||||

|
||||
|
||||
### إنشاء تطبيق
|
||||
|
||||

|
||||
|
||||
### قائمة التطبيقات
|
||||
|
||||

|
||||
|
||||
### بدء التطبيق
|
||||
|
||||

|
||||
|
||||
### وصول الوكيل
|
||||
|
||||
Use `/apps/:appName/admin` via Supervisor.
|
||||
|
||||

|
||||

|
||||
@@ -1,112 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
---
|
||||
:::tip إشعار الترجمة بالذكاء الاصطناعي
|
||||
تمت ترجمة هذه الوثائق تلقائيًا بواسطة الذكاء الاصطناعي.
|
||||
:::
|
||||
|
||||
|
||||
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
---
|
||||
|
||||
# مساحات متعددة
|
||||
|
||||
## مقدمة
|
||||
|
||||
تسمح **إضافة المساحات المتعددة** بإنشاء مساحات بيانات مستقلة متعددة من خلال العزل المنطقي ضمن مثيل تطبيق واحد.
|
||||
|
||||
#### حالات الاستخدام
|
||||
- **المتاجر أو المصانع المتعددة**: تكون العمليات التجارية وتكوينات النظام متسقة للغاية، مثل إدارة المخزون الموحدة، وتخطيط الإنتاج، واستراتيجيات المبيعات، وقوالب التقارير، ولكن من الضروري ضمان عدم تداخل بيانات كل وحدة عمل مع الأخرى.
|
||||
- **إدارة المنظمات أو الشركات التابعة المتعددة**: تشارك منظمات أو شركات تابعة متعددة ضمن مجموعة شركات نفس المنصة، ولكن لكل علامة تجارية بيانات عملاء ومنتجات وطلبات مستقلة.
|
||||
|
||||
## التثبيت
|
||||
|
||||
في مدير الإضافات، ابحث عن إضافة **المساحات المتعددة (Multi-Space)** وقم بتمكينها.
|
||||
|
||||

|
||||
|
||||
## دليل المستخدم
|
||||
|
||||
### إدارة المساحات المتعددة
|
||||
|
||||
بعد تمكين الإضافة، انتقل إلى صفحة إعدادات **"المستخدمون والأذونات"**، ثم انتقل إلى لوحة **المساحات** لإدارة المساحات.
|
||||
|
||||
> في البداية، توجد **مساحة غير مخصصة (Unassigned Space)** مدمجة، تُستخدم بشكل أساسي لعرض البيانات القديمة غير المرتبطة بأي مساحة.
|
||||
|
||||

|
||||
|
||||
#### إنشاء مساحة
|
||||
|
||||
انقر على زر "إضافة مساحة" لإنشاء مساحة جديدة:
|
||||
|
||||
.png)
|
||||
|
||||
#### تعيين المستخدمين
|
||||
|
||||
بعد تحديد مساحة تم إنشاؤها، يمكنك تعيين المستخدمين التابعين لتلك المساحة على الجانب الأيمن:
|
||||
|
||||
> **تلميح:** بعد تعيين المستخدمين لمساحة، تحتاج إلى **تحديث الصفحة يدويًا** حتى يتم تحديث قائمة تبديل المساحات في الزاوية العلوية اليمنى وعرض أحدث مساحة.
|
||||
|
||||

|
||||
|
||||
### التبديل بين المساحات المتعددة وعرضها
|
||||
|
||||
يمكنك التبديل بين المساحات الحالية في الزاوية العلوية اليمنى.
|
||||
عند النقر على **أيقونة العين** على اليمين (عندما تكون مميزة)، يمكنك عرض البيانات من مساحات متعددة في وقت واحد.
|
||||
|
||||

|
||||
|
||||
### إدارة بيانات المساحات المتعددة
|
||||
|
||||
بعد تمكين الإضافة، سيضيف النظام تلقائيًا **حقل مساحة** عند إنشاء مجموعة بيانات (Collection).
|
||||
**فقط المجموعات التي تحتوي على هذا الحقل ستُدرج ضمن منطق إدارة المساحات.**
|
||||
|
||||

|
||||
|
||||
بالنسبة لمجموعات البيانات الموجودة، يمكنك إضافة حقل مساحة يدويًا لتمكين إدارة المساحات:
|
||||
|
||||

|
||||
|
||||
#### المنطق الافتراضي
|
||||
|
||||
في مجموعات البيانات التي تحتوي على حقل المساحة، سيطبق النظام تلقائيًا المنطق التالي:
|
||||
|
||||
1. عند إنشاء البيانات، ترتبط تلقائيًا بالمساحة المحددة حاليًا؛
|
||||
2. عند تصفية البيانات، تقتصر تلقائيًا على بيانات المساحة المحددة حاليًا.
|
||||
|
||||
### تصنيف البيانات القديمة ضمن المساحات المتعددة
|
||||
|
||||
بالنسبة للبيانات التي كانت موجودة قبل تمكين إضافة المساحات المتعددة، يمكنك تصنيفها ضمن المساحات باتباع الخطوات التالية:
|
||||
|
||||
#### 1. إضافة حقل المساحة
|
||||
|
||||
أضف حقل المساحة يدويًا إلى مجموعة البيانات القديمة:
|
||||
|
||||

|
||||
|
||||
#### 2. تعيين المستخدمين للمساحة غير المخصصة
|
||||
|
||||
اربط المستخدم الذي يدير البيانات القديمة بجميع المساحات، بما في ذلك **المساحة غير المخصصة (Unassigned Space)**، لعرض البيانات التي لم يتم تعيينها بعد إلى مساحة:
|
||||
|
||||

|
||||
|
||||
#### 3. التبديل لعرض بيانات جميع المساحات
|
||||
|
||||
في الأعلى، حدد لعرض البيانات من جميع المساحات:
|
||||
|
||||

|
||||
|
||||
#### 4. تهيئة صفحة تخصيص البيانات القديمة
|
||||
|
||||
أنشئ صفحة جديدة لتخصيص البيانات القديمة. اعرض "حقل المساحة" في **صفحة القائمة** و**صفحة التحرير** لضبط تخصيص المساحة يدويًا.
|
||||
|
||||

|
||||
|
||||
اجعل حقل المساحة قابلاً للتحرير
|
||||
|
||||

|
||||
|
||||
#### 5. تخصيص البيانات للمساحات يدويًا
|
||||
|
||||
من خلال الصفحة التي تم إنشاؤها أعلاه، قم بتحرير البيانات يدويًا لتخصيص المساحة الصحيحة للبيانات القديمة تدريجيًا (يمكنك أيضًا تهيئة التحرير المجمع بنفسك).
|
||||
@@ -0,0 +1,50 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
---
|
||||
|
||||
# المساحات المتعددة
|
||||
|
||||
<PluginInfo name="multi-space" licenseBundled="professional"></PluginInfo>
|
||||
|
||||
## مقدمة
|
||||
|
||||
يوفر Multi-space عزلاً منطقياً للبيانات داخل نفس التطبيق عبر مساحات مستقلة.
|
||||
|
||||
## التثبيت
|
||||
|
||||
Enable **Multi-Space** in plugin manager.
|
||||
|
||||

|
||||
|
||||
## دليل الاستخدام
|
||||
|
||||
### إدارة المساحات المتعددة
|
||||
|
||||
Open **Users & Permissions** and switch to **Spaces**.
|
||||
|
||||

|
||||
|
||||
#### إنشاء مساحة
|
||||
|
||||
.png)
|
||||
|
||||
#### تعيين المستخدمين
|
||||
|
||||

|
||||
|
||||
### التبديل وعرض المساحات المتعددة
|
||||
|
||||

|
||||
|
||||
### إدارة بيانات المساحات المتعددة
|
||||
|
||||

|
||||

|
||||
|
||||
### تصنيف البيانات القديمة ضمن المساحات المتعددة
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
@@ -4,9 +4,6 @@ pkg: '@nocobase/plugin-app-supervisor'
|
||||
|
||||
# 多应用管理
|
||||
|
||||
:::info🚀 即将发布
|
||||
:::
|
||||
|
||||
## 功能概述
|
||||
|
||||
多应用管理是 NocoBase 提供的统一应用管理方案,用于在一个或多个运行环境中创建和管理多个物理隔离的 NocoBase 应用实例。通过应用监管器 (AppSupervisor),用户可以在统一入口中创建和维护多个应用,满足不同业务、不同规模阶段的需求。
|
||||
|
||||
@@ -4,9 +4,6 @@ pkg: '@nocobase/plugin-app-supervisor'
|
||||
|
||||
# 共享内存模式
|
||||
|
||||
:::info🚀 即将发布
|
||||
:::
|
||||
|
||||
## 介绍
|
||||
|
||||
当用户希望对业务进行应用级别的拆分,但又不希望引入复杂的部署和运维架构时,可以使用共享内存的多应用模式。
|
||||
|
||||
@@ -4,9 +4,6 @@ pkg: '@nocobase/plugin-app-supervisor'
|
||||
|
||||
# 多环境模式
|
||||
|
||||
:::info🚀 即将发布
|
||||
:::
|
||||
|
||||
## 介绍
|
||||
|
||||
共享内存模式的多应用在部署和运维上具有明显优势,但随着应用数量和业务复杂度的提升,单一实例可能逐渐面临资源争用、稳定性下降等问题。针对这类场景,用户可以采用多环境混合部署方案,以支撑更复杂的业务需求。
|
||||
|
||||
@@ -1,13 +1,24 @@
|
||||
[
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Přehled",
|
||||
"link": "/multi-app/"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Více aplikací",
|
||||
"link": "/multi-app/multi-app"
|
||||
"items": [
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Přehled",
|
||||
"link": "/multi-app/multi-app"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Režim sdílené paměti",
|
||||
"link": "/multi-app/multi-app/local"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Režim více prostředí",
|
||||
"link": "/multi-app/multi-app/remote"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-app"
|
||||
---
|
||||
:::tip
|
||||
Tento dokument byl přeložen umělou inteligencí. V případě nepřesností se prosím obraťte na [anglickou verzi](/en)
|
||||
:::
|
||||
|
||||
|
||||
|
||||
# Více aplikací
|
||||
|
||||
## Úvod
|
||||
@@ -1,132 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-app-manager"
|
||||
---
|
||||
:::tip
|
||||
Tento dokument byl přeložen umělou inteligencí. V případě nepřesností se prosím obraťte na [anglickou verzi](/en)
|
||||
:::
|
||||
|
||||
# Více aplikací
|
||||
|
||||
|
||||
## Úvod
|
||||
|
||||
**Plugin Více aplikací (Multi-App)** Vám umožňuje dynamicky vytvářet a spravovat více nezávislých aplikací bez nutnosti samostatného nasazení. Každá podaplikace je zcela nezávislá instance s vlastní databází, pluginy a konfigurací.
|
||||
|
||||
#### Případy použití
|
||||
- **Multi-tenancy (více nájemců)**: Poskytněte nezávislé instance aplikací, kde každý zákazník má svá vlastní data, konfigurace pluginů a systém oprávnění.
|
||||
- **Hlavní a podřízené systémy pro různé obchodní oblasti**: Velký systém složený z více nezávisle nasazených menších aplikací.
|
||||
|
||||
|
||||
:::warning
|
||||
Plugin Více aplikací sám o sobě neposkytuje možnost sdílení uživatelů.
|
||||
Pokud potřebujete sdílet uživatele mezi více aplikacemi, můžete jej použít ve spojení s **[pluginem Ověřování](/auth-verification)**.
|
||||
:::
|
||||
|
||||
|
||||
## Instalace
|
||||
|
||||
V administraci pluginů najděte plugin **Více aplikací (Multi-app)** a aktivujte jej.
|
||||
|
||||

|
||||
|
||||
|
||||
## Návod k použití
|
||||
|
||||
|
||||
### Vytvoření podaplikace
|
||||
|
||||
V nabídce systémových nastavení klikněte na „Více aplikací“ pro vstup na stránku správy více aplikací:
|
||||
|
||||

|
||||
|
||||
Klikněte na tlačítko „Přidat nové“ pro vytvoření nové podaplikace:
|
||||
|
||||

|
||||
|
||||
#### Popis polí formuláře
|
||||
|
||||
* **Název**: Identifikátor podaplikace, globálně unikátní.
|
||||
* **Zobrazovaný název**: Název podaplikace zobrazený v uživatelském rozhraní.
|
||||
* **Režim spuštění**:
|
||||
* **Spustit při první návštěvě**: Podaplikace se spustí pouze tehdy, když k ní uživatel poprvé přistoupí prostřednictvím URL.
|
||||
* **Spustit s hlavní aplikací**: Podaplikace se spustí současně s hlavní aplikací (to prodlouží dobu spouštění hlavní aplikace).
|
||||
* **Port**: Číslo portu používané podaplikací za běhu.
|
||||
* **Vlastní doména**: Nakonfigurujte nezávislou subdoménu pro podaplikaci.
|
||||
* **Připnout do menu**: Připněte vstup podaplikace na levou stranu horního navigačního panelu.
|
||||
* **Připojení k databázi**: Slouží ke konfiguraci zdroje dat pro podaplikaci, podporuje následující tři metody:
|
||||
* **Nová databáze**: Znovu použijte aktuální datovou službu k vytvoření nezávislé databáze.
|
||||
* **Nové datové připojení**: Nakonfigurujte zcela novou databázovou službu.
|
||||
* **Režim schématu (Schema mode)**: Vytvořte nezávislé schéma pro podaplikaci v PostgreSQL.
|
||||
* **Upgrade (aktualizace)**: Pokud připojená databáze obsahuje starší verzi datové struktury NocoBase, bude automaticky aktualizována na aktuální verzi.
|
||||
|
||||
|
||||
### Spuštění a zastavení podaplikace
|
||||
|
||||
Kliknutím na tlačítko **Spustit** můžete podaplikaci spustit;
|
||||
> Pokud byla při vytváření zaškrtnuta možnost *„Spustit při první návštěvě“*, spustí se automaticky při prvním přístupu.
|
||||
|
||||
Kliknutím na tlačítko **Zobrazit** otevřete podaplikaci v nové záložce.
|
||||
|
||||

|
||||
|
||||
|
||||
### Stav a protokoly podaplikace
|
||||
|
||||
V seznamu můžete zobrazit využití paměti a CPU každou aplikací.
|
||||
|
||||

|
||||
|
||||
Kliknutím na tlačítko **Protokoly** zobrazíte protokoly běhu podaplikace.
|
||||
> Pokud je podaplikace po spuštění nedostupná (např. kvůli poškozené databázi), můžete k řešení problémů použít protokoly.
|
||||
|
||||

|
||||
|
||||
|
||||
### Smazání podaplikace
|
||||
|
||||
Kliknutím na tlačítko **Smazat** můžete podaplikaci odstranit.
|
||||
> Při mazání si můžete zvolit, zda se má smazat i databáze. Postupujte prosím opatrně, tato akce je nevratná.
|
||||
|
||||
|
||||
### Přístup k podaplikaci
|
||||
Standardně se k podaplikacím přistupuje pomocí `/_app/:appName/admin/`, například:
|
||||
```
|
||||
http://localhost:13000/_app/a_7zkxoarusnx/admin/
|
||||
```
|
||||
Pro podaplikaci můžete také nakonfigurovat nezávislou subdoménu. Bude potřeba nasměrovat doménu na aktuální IP adresu, a pokud používáte Nginx, musíte doménu přidat i do konfigurace Nginx.
|
||||
|
||||
|
||||
### Správa podaplikací pomocí příkazového řádku
|
||||
|
||||
V kořenovém adresáři projektu můžete pomocí příkazového řádku spravovat instance podaplikací prostřednictvím **PM2**:
|
||||
|
||||
```bash
|
||||
yarn nocobase pm2 list # Zobrazit seznam aktuálně spuštěných instancí
|
||||
yarn nocobase pm2 stop [appname] # Zastavit proces konkrétní podaplikace
|
||||
yarn nocobase pm2 delete [appname] # Smazat proces konkrétní podaplikace
|
||||
yarn nocobase pm2 kill # Násilně ukončit všechny spuštěné procesy (může zahrnovat i instanci hlavní aplikace)
|
||||
```
|
||||
|
||||
### Migrace dat ze staré verze Multi-aplikací
|
||||
|
||||
Přejděte na starou stránku správy více aplikací a klikněte na tlačítko **Migrovat data do nových multi-aplikací** pro provedení migrace dat.
|
||||
|
||||

|
||||
|
||||
|
||||
## Často kladené otázky
|
||||
|
||||
#### 1. Správa pluginů
|
||||
Podaplikace mohou používat stejné pluginy jako hlavní aplikace (včetně verzí), ale lze je nezávisle konfigurovat a používat.
|
||||
|
||||
#### 2. Izolace databáze
|
||||
Podaplikace mohou být nakonfigurovány s nezávislými databázemi. Pokud chcete sdílet data mezi aplikacemi, můžete to provést prostřednictvím externích zdrojů dat.
|
||||
|
||||
#### 3. Zálohování a migrace dat
|
||||
V současné době zálohy dat v hlavní aplikaci nezahrnují data podaplikací (pouze základní informace o podaplikacích). Data je nutné ručně zálohovat a migrovat v rámci každé podaplikace.
|
||||
|
||||
#### 4. Nasazení a aktualizace
|
||||
Verze podaplikace se automaticky aktualizuje společně s hlavní aplikací, čímž je zajištěna konzistence verzí mezi hlavní a podaplikací.
|
||||
|
||||
#### 5. Správa zdrojů
|
||||
Spotřeba zdrojů každé podaplikace je v zásadě stejná jako u hlavní aplikace. V současné době spotřebuje jedna aplikace přibližně 500-600 MB paměti.
|
||||
@@ -0,0 +1,22 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# Správa více aplikací
|
||||
|
||||
## Přehled
|
||||
|
||||
NocoBase umožňuje spravovat více fyzicky oddělených aplikací přes jednu vstupní správu pomocí AppSupervisor.
|
||||
|
||||
|
||||
Na začátku stačí jedna aplikace. S růstem ale roste složitost, náklady a potřeba izolace.
|
||||
|
||||
|
||||
V režimu sdílené paměti běží více aplikací v jedné instanci. Každá může mít vlastní databázi, ale sdílí proces a paměť.
|
||||
|
||||

|
||||
|
||||
|
||||
Pro větší škálu použijte hybridní režim: Supervisor + více Worker prostředí pro lepší izolaci a škálování.
|
||||
|
||||

|
||||
@@ -0,0 +1,65 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# Režim sdílené paměti
|
||||
|
||||
## Úvod
|
||||
|
||||
Použijte tento režim, když chcete oddělit domény bez složité infrastruktury.
|
||||
|
||||
## Uživatelská příručka
|
||||
|
||||
### Proměnné prostředí
|
||||
|
||||
```bash
|
||||
APP_DISCOVERY_ADAPTER=local
|
||||
APP_PROCESS_ADAPTER=local
|
||||
```
|
||||
|
||||
### Vytvoření aplikace
|
||||
|
||||
In **System Settings**, open **App supervisor**.
|
||||
|
||||

|
||||
|
||||
Click **Add** to create a new application.
|
||||
|
||||

|
||||
|
||||
### Spuštění aplikace
|
||||
|
||||
Click **Start**.
|
||||
|
||||

|
||||
|
||||
### Přístup k aplikaci
|
||||
|
||||
Default path:
|
||||
|
||||
```bash
|
||||
http://localhost:13000/apps/a_7zkxoarusnx/admin/
|
||||
```
|
||||
|
||||
### Zastavení aplikace
|
||||
|
||||
Click **Stop**.
|
||||
|
||||

|
||||
|
||||
### Stav aplikace
|
||||
|
||||

|
||||
|
||||
### Odstranění aplikace
|
||||
|
||||
Click **Delete**.
|
||||
|
||||

|
||||
|
||||
## FAQ
|
||||
|
||||
- Plugin config is isolated per app.
|
||||
- Database can be isolated per app.
|
||||
- Main app backup does not include data from other apps.
|
||||
- App version follows main app version in shared-memory mode.
|
||||
@@ -0,0 +1,70 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# Režim více prostředí
|
||||
|
||||
## Úvod
|
||||
|
||||
Použijte tento režim při vyšších nárocích na stabilitu, izolaci a škálování.
|
||||
|
||||
## Nasazení
|
||||
|
||||
- Supervisor: central control plane
|
||||
- Worker: runtime environment
|
||||
- Redis: config cache and command channel
|
||||
|
||||
### Architektonické závislosti
|
||||
|
||||
- Redis
|
||||
- Database service for Supervisor and Workers
|
||||
|
||||
### Vstupní aplikace (Supervisor)
|
||||
|
||||
```bash
|
||||
APP_MODE=supervisor
|
||||
APP_DISCOVERY_ADAPTER=remote
|
||||
APP_PROCESS_ADAPTER=remote
|
||||
APP_SUPERVISOR_REDIS_URL=
|
||||
APP_COMMAND_ADPATER=redis
|
||||
APP_COMMAND_REDIS_URL=
|
||||
```
|
||||
|
||||
### Worker aplikace (Worker)
|
||||
|
||||
```bash
|
||||
APP_MODE=worker
|
||||
APP_DISCOVERY_ADAPTER=remote
|
||||
APP_PROCESS_ADAPTER=local
|
||||
APP_SUPERVISOR_REDIS_URL=
|
||||
APP_COMMAND_ADPATER=redis
|
||||
APP_COMMAND_REDIS_URL=
|
||||
ENVIRONMENT_NAME=
|
||||
ENVIRONMENT_URL=
|
||||
ENVIRONMENT_PROXY_URL=
|
||||
```
|
||||
|
||||
## Uživatelská příručka
|
||||
|
||||
### Seznam prostředí
|
||||
|
||||

|
||||
|
||||
### Vytvoření aplikace
|
||||
|
||||

|
||||
|
||||
### Seznam aplikací
|
||||
|
||||

|
||||
|
||||
### Spuštění aplikace
|
||||
|
||||

|
||||
|
||||
### Proxy přístup
|
||||
|
||||
Use `/apps/:appName/admin` via Supervisor.
|
||||
|
||||

|
||||

|
||||
@@ -1,109 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
---
|
||||
:::tip
|
||||
Tento dokument byl přeložen umělou inteligencí. V případě nepřesností se prosím obraťte na [anglickou verzi](/en)
|
||||
:::
|
||||
|
||||
|
||||
|
||||
# Více prostorů
|
||||
|
||||
## Úvod
|
||||
|
||||
**Plugin Více prostorů** umožňuje v rámci jedné instance aplikace vytvářet několik nezávislých datových prostorů prostřednictvím logické izolace.
|
||||
|
||||
#### Případy použití
|
||||
- **Více obchodů nebo továren**: Obchodní procesy a konfigurace systému jsou vysoce konzistentní, například jednotná správa zásob, plánování výroby, prodejní strategie a šablony reportů, ale je nutné zajistit, aby se data jednotlivých obchodních jednotek navzájem nerušila.
|
||||
- **Správa více organizací nebo dceřiných společností**: Více organizací nebo dceřiných společností v rámci holdingové společnosti sdílí stejnou platformu, ale každá značka má nezávislá data o zákaznících, produktech a objednávkách.
|
||||
|
||||
## Instalace
|
||||
|
||||
Ve správci **pluginů** najděte **plugin Více prostorů (Multi-Space)** a povolte jej.
|
||||
|
||||

|
||||
|
||||
## Uživatelská příručka
|
||||
|
||||
### Správa více prostorů
|
||||
|
||||
Po povolení **pluginu** přejděte na stránku nastavení **„Uživatelé a oprávnění“** a přepněte se na panel **Prostory**, kde můžete spravovat prostory.
|
||||
|
||||
> Zpočátku existuje vestavěný **Nepřiřazený prostor (Unassigned Space)**, který slouží především k prohlížení starých dat, jež nejsou spojena s žádným prostorem.
|
||||
|
||||

|
||||
|
||||
#### Vytvoření prostoru
|
||||
|
||||
Klikněte na tlačítko „Přidat prostor“ pro vytvoření nového prostoru:
|
||||
|
||||
.png)
|
||||
|
||||
#### Přiřazení uživatelů
|
||||
|
||||
Po výběru vytvořeného prostoru můžete na pravé straně nastavit uživatele, kteří k tomuto prostoru patří:
|
||||
|
||||
> **Tip:** Po přiřazení uživatelů k prostoru je nutné **ručně obnovit stránku**, aby se seznam pro přepínání prostorů v pravém horním rohu aktualizoval a zobrazil nejnovější prostor.
|
||||
|
||||

|
||||
|
||||
### Přepínání a prohlížení více prostorů
|
||||
|
||||
V pravém horním rohu můžete přepínat aktuální prostor.
|
||||
Když kliknete na **ikonu oka** vpravo (v zvýrazněném stavu), můžete současně prohlížet data z více prostorů.
|
||||
|
||||

|
||||
|
||||
### Správa dat ve více prostorech
|
||||
|
||||
Po povolení **pluginu** systém automaticky přednastaví **pole Prostor** při vytváření **kolekce**.
|
||||
**Pouze kolekce, které obsahují toto pole, budou zahrnuty do logiky správy prostorů.**
|
||||
|
||||

|
||||
|
||||
U existujících **kolekcí** můžete ručně přidat pole Prostor pro povolení správy prostorů:
|
||||
|
||||

|
||||
|
||||
#### Výchozí logika
|
||||
|
||||
V **kolekcích**, které obsahují pole Prostor, systém automaticky aplikuje následující logiku:
|
||||
|
||||
1. Při vytváření dat jsou automaticky přiřazena k aktuálně vybranému prostoru;
|
||||
2. Při filtrování dat jsou automaticky omezena na data aktuálně vybraného prostoru.
|
||||
|
||||
### Klasifikace starých dat do více prostorů
|
||||
|
||||
Data, která existovala před povolením **pluginu Více prostorů**, můžete klasifikovat do prostorů pomocí následujících kroků:
|
||||
|
||||
#### 1. Přidání pole Prostor
|
||||
|
||||
Ručně přidejte pole Prostor do staré **kolekce**:
|
||||
|
||||

|
||||
|
||||
#### 2. Přiřazení uživatelů k Nepřiřazenému prostoru
|
||||
|
||||
Přiřaďte uživatele, který spravuje stará data, ke všem prostorům, včetně **Nepřiřazeného prostoru (Unassigned Space)**, abyste mohli prohlížet data, která dosud nebyla přiřazena k žádnému prostoru:
|
||||
|
||||

|
||||
|
||||
#### 3. Přepnutí na zobrazení dat ze všech prostorů
|
||||
|
||||
V horní části vyberte zobrazení dat ze všech prostorů:
|
||||
|
||||

|
||||
|
||||
#### 4. Konfigurace stránky pro přiřazení starých dat
|
||||
|
||||
Vytvořte novou stránku pro přiřazení starých dat. Zobrazte „pole Prostor“ na **stránce seznamu** a **stránce úprav**, abyste mohli ručně upravit přiřazení prostoru.
|
||||
|
||||

|
||||
|
||||
Nastavte pole Prostor jako editovatelné
|
||||
|
||||

|
||||
|
||||
#### 5. Ruční přiřazení dat k prostorům
|
||||
|
||||
Prostřednictvím výše uvedené stránky ručně upravte data a postupně přiřaďte správný prostor starým datům (můžete si také sami nakonfigurovat hromadné úpravy).
|
||||
@@ -0,0 +1,50 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
---
|
||||
|
||||
# Více prostorů
|
||||
|
||||
<PluginInfo name="multi-space" licenseBundled="professional"></PluginInfo>
|
||||
|
||||
## Úvod
|
||||
|
||||
Multi-space přidává logickou izolaci dat pomocí samostatných prostorů v jedné instanci.
|
||||
|
||||
## Instalace
|
||||
|
||||
Enable **Multi-Space** in plugin manager.
|
||||
|
||||

|
||||
|
||||
## Uživatelská příručka
|
||||
|
||||
### Správa více prostorů
|
||||
|
||||
Open **Users & Permissions** and switch to **Spaces**.
|
||||
|
||||

|
||||
|
||||
#### Vytvoření prostoru
|
||||
|
||||
.png)
|
||||
|
||||
#### Přiřazení uživatelů
|
||||
|
||||

|
||||
|
||||
### Přepínání a zobrazení více prostorů
|
||||
|
||||

|
||||
|
||||
### Správa dat ve více prostorech
|
||||
|
||||

|
||||

|
||||
|
||||
### Zařazení starých dat do více prostorů
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
@@ -1,17 +1,28 @@
|
||||
[
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Überblick",
|
||||
"link": "/multi-app/"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Multi-App",
|
||||
"link": "/multi-app/multi-app"
|
||||
"items": [
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Übersicht",
|
||||
"link": "/multi-app/multi-app"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Shared-Memory-Modus",
|
||||
"link": "/multi-app/multi-app/local"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Multi-Umgebungsmodus",
|
||||
"link": "/multi-app/multi-app/remote"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Multi-Workspace",
|
||||
"label": "Multi-Space",
|
||||
"link": "/multi-app/multi-space"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-app-manager"
|
||||
---
|
||||
:::tip KI-Übersetzungshinweis
|
||||
Diese Dokumentation wurde automatisch von KI übersetzt.
|
||||
:::
|
||||
|
||||
|
||||
|
||||
# Multi-App
|
||||
|
||||
## Einführung
|
||||
@@ -1,133 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-app-manager"
|
||||
---
|
||||
:::tip KI-Übersetzungshinweis
|
||||
Diese Dokumentation wurde automatisch von KI übersetzt.
|
||||
:::
|
||||
|
||||
|
||||
# Multi-App
|
||||
|
||||
|
||||
## Einführung
|
||||
|
||||
Das **Multi-App Plugin** ermöglicht Ihnen, mehrere unabhängige Anwendungen dynamisch zu erstellen und zu verwalten, ohne separate Bereitstellungen. Jede Unter-App ist eine vollständig unabhängige Instanz mit eigener Datenbank, Plugins und Konfiguration.
|
||||
|
||||
#### Anwendungsfälle
|
||||
- **Multi-Tenancy**: Bieten Sie unabhängige Anwendungsinstanzen an, bei denen jeder Kunde seine eigenen Daten, Plugin-Konfigurationen und sein eigenes Berechtigungssystem besitzt.
|
||||
- **Haupt- und Subsysteme für verschiedene Geschäftsbereiche**: Ein großes System, das aus mehreren unabhängig bereitgestellten kleineren Anwendungen besteht.
|
||||
|
||||
|
||||
:::warning
|
||||
Das Multi-App Plugin selbst bietet keine Funktionen zur Benutzerfreigabe.
|
||||
Wenn Sie Benutzer zwischen mehreren Apps teilen möchten, können Sie es in Verbindung mit dem **[Authentifizierungs-Plugin](/auth-verification)** verwenden.
|
||||
:::
|
||||
|
||||
|
||||
## Installation
|
||||
|
||||
Im Plugin-Manager suchen Sie das **Multi-App** Plugin und aktivieren Sie es.
|
||||
|
||||

|
||||
|
||||
|
||||
## Benutzerhandbuch
|
||||
|
||||
|
||||
### Unter-App erstellen
|
||||
|
||||
Klicken Sie im Menü der Systemeinstellungen auf „Multi-App“, um die Multi-App Verwaltungsseite aufzurufen:
|
||||
|
||||

|
||||
|
||||
Klicken Sie auf die Schaltfläche „Hinzufügen“, um eine neue Unter-App zu erstellen:
|
||||
|
||||

|
||||
|
||||
#### Beschreibung der Formularfelder
|
||||
|
||||
* **Name**: Bezeichner der Unter-App, global eindeutig.
|
||||
* **Anzeigename**: Der Name der Unter-App, der in der Benutzeroberfläche angezeigt wird.
|
||||
* **Startmodus**:
|
||||
* **Beim ersten Zugriff starten**: Die Unter-App startet nur, wenn ein Benutzer zum ersten Mal über eine URL darauf zugreift;
|
||||
* **Mit der Haupt-App starten**: Die Unter-App startet gleichzeitig mit der Haupt-App (dies erhöht die Startzeit der Haupt-App).
|
||||
* **Port**: Die Portnummer, die von der Unter-App zur Laufzeit verwendet wird.
|
||||
* **Benutzerdefinierte Domain**: Konfigurieren Sie eine unabhängige Subdomain für die Unter-App.
|
||||
* **An Menü anheften**: Heftet den Eintrag der Unter-App an die linke Seite der oberen Navigationsleiste an.
|
||||
* **Datenbankverbindung**: Wird zur Konfiguration der Datenquelle für die Unter-App verwendet, wobei die folgenden drei Methoden unterstützt werden:
|
||||
* **Neue Datenbank**: Verwendet den aktuellen Datendienst wieder, um eine unabhängige Datenbank zu erstellen;
|
||||
* **Neue Datenverbindung**: Konfiguriert einen komplett neuen Datenbankdienst;
|
||||
* **Schema-Modus**: Erstellt ein unabhängiges Schema für die Unter-App in PostgreSQL.
|
||||
* **Upgrade**: Wenn die verbundene Datenbank eine ältere Version der NocoBase Datenstruktur enthält, wird sie automatisch auf die aktuelle Version aktualisiert.
|
||||
|
||||
|
||||
### Unter-App starten und stoppen
|
||||
|
||||
Klicken Sie auf die Schaltfläche **Starten**, um die Unter-App zu starten;
|
||||
> Wenn Sie bei der Erstellung *„Beim ersten Zugriff starten“* ausgewählt haben, wird sie beim ersten Zugriff automatisch gestartet.
|
||||
|
||||
Klicken Sie auf die Schaltfläche **Anzeigen**, um die Unter-App in einem neuen Tab zu öffnen.
|
||||
|
||||

|
||||
|
||||
|
||||
### Unter-App Status und Protokolle
|
||||
|
||||
In der Liste können Sie die Speicher- und CPU-Auslastung jeder Anwendung einsehen.
|
||||
|
||||

|
||||
|
||||
Klicken Sie auf die Schaltfläche **Protokolle**, um die Laufzeitprotokolle der Unter-App anzuzeigen.
|
||||
> Sollte die Unter-App nach dem Start nicht zugänglich sein (z. B. aufgrund einer beschädigten Datenbank), können Sie die Protokolle zur Fehlerbehebung verwenden.
|
||||
|
||||

|
||||
|
||||
|
||||
### Unter-App löschen
|
||||
|
||||
Klicken Sie auf die Schaltfläche **Löschen**, um die Unter-App zu entfernen.
|
||||
> Beim Löschen können Sie wählen, ob die Datenbank ebenfalls gelöscht werden soll. Bitte gehen Sie vorsichtig vor, da diese Aktion nicht rückgängig gemacht werden kann.
|
||||
|
||||
|
||||
### Auf eine Unter-App zugreifen
|
||||
Standardmäßig greifen Sie auf Unter-Apps über `/_app/:appName/admin/` zu, zum Beispiel:
|
||||
```
|
||||
http://localhost:13000/_app/a_7zkxoarusnx/admin/
|
||||
```
|
||||
Sie können auch eine unabhängige Subdomain für die Unter-App konfigurieren. Dazu müssen Sie die Domain auf die aktuelle IP-Adresse auflösen, und wenn Sie Nginx verwenden, müssen Sie die Domain auch in der Nginx-Konfiguration hinzufügen.
|
||||
|
||||
|
||||
### Unter-Apps über die Kommandozeile verwalten
|
||||
|
||||
Im Stammverzeichnis des Projekts können Sie Unter-App-Instanzen über die Kommandozeile mit **PM2** verwalten:
|
||||
|
||||
```bash
|
||||
yarn nocobase pm2 list # Zeigt die Liste der aktuell laufenden Instanzen an
|
||||
yarn nocobase pm2 stop [appname] # Stoppt einen bestimmten Unter-App-Prozess
|
||||
yarn nocobase pm2 delete [appname] # Löscht einen bestimmten Unter-App-Prozess
|
||||
yarn nocobase pm2 kill # Beendet alle gestarteten Prozesse zwangsweise (kann auch Instanzen der Haupt-App enthalten)
|
||||
```
|
||||
|
||||
### Datenmigration von alten Multi-Apps
|
||||
|
||||
Gehen Sie zur alten Multi-App Verwaltungsseite und klicken Sie auf die Schaltfläche **Daten zu neuer Multi-App migrieren**, um Daten zu migrieren.
|
||||
|
||||

|
||||
|
||||
|
||||
## Häufig gestellte Fragen (FAQ)
|
||||
|
||||
#### 1. Plugin-Verwaltung
|
||||
Unter-Apps können dieselben Plugins wie die Haupt-App verwenden (einschließlich Versionen), aber sie können Plugins unabhängig konfigurieren und nutzen.
|
||||
|
||||
#### 2. Datenbankisolation
|
||||
Unter-Apps können mit unabhängigen Datenbanken konfiguriert werden. Wenn Sie Daten zwischen Apps teilen möchten, können Sie dies über externe Datenquellen tun.
|
||||
|
||||
#### 3. Datensicherung und Migration
|
||||
Derzeit unterstützen Datensicherungen in der Haupt-App keine Daten von Unter-Apps (nur grundlegende Informationen zu den Unter-Apps). Sie müssen Daten manuell innerhalb jeder Unter-App sichern und migrieren.
|
||||
|
||||
#### 4. Bereitstellung und Updates
|
||||
Die Version einer Unter-App wird automatisch zusammen mit der Haupt-App aktualisiert, wodurch die Versionskonsistenz zwischen Haupt- und Unter-Apps gewährleistet ist.
|
||||
|
||||
#### 5. Ressourcenverwaltung
|
||||
Der Ressourcenverbrauch jeder Unter-App ist im Wesentlichen derselbe wie der der Haupt-App. Derzeit benötigt eine einzelne Anwendung etwa 500-600 MB Arbeitsspeicher.
|
||||
@@ -0,0 +1,66 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# Multi-App-Verwaltung
|
||||
|
||||
## Überblick
|
||||
|
||||
Die Multi-App-Verwaltung ist eine einheitliche Verwaltungslösung von NocoBase. Damit können Sie mehrere **physisch isolierte** NocoBase-App-Instanzen in einer oder mehreren Laufzeitumgebungen erstellen und verwalten. Mit dem **AppSupervisor** lassen sich mehrere Apps über einen zentralen Einstiegspunkt anlegen und pflegen.
|
||||
|
||||
## Einzelne App
|
||||
|
||||
Zu Beginn eines Projekts starten die meisten Teams mit einer einzelnen App.
|
||||
|
||||
In diesem Modus wird nur eine NocoBase-Instanz bereitgestellt. Alle Geschäftslogik, Daten und Benutzer laufen in derselben App. Deployment und Konfiguration sind einfach und kostengünstig.
|
||||
|
||||
Mit wachsender Komplexität entstehen jedoch typische Grenzen:
|
||||
|
||||
- Funktionen häufen sich und das System wird aufgebläht
|
||||
- Fachbereiche lassen sich schwer voneinander trennen
|
||||
- Skalierungs- und Wartungskosten steigen kontinuierlich
|
||||
|
||||
Dann ist es sinnvoll, Geschäftsbereiche auf mehrere Apps aufzuteilen.
|
||||
|
||||
## Shared-Memory-Multi-App
|
||||
|
||||
Wenn Sie Geschäftsbereiche trennen möchten, aber keine komplexe Betriebs- und Deployment-Architektur einführen wollen, ist der Shared-Memory-Multi-App-Modus geeignet.
|
||||
|
||||
Dabei laufen mehrere Apps in einer NocoBase-Instanz. Jede App ist unabhängig, kann eine eigene Datenbank verwenden und einzeln erstellt, gestartet oder gestoppt werden. Gleichzeitig teilen sich alle Apps denselben Prozess- und Speicherraum.
|
||||
|
||||

|
||||
|
||||
Vorteile dieses Ansatzes:
|
||||
|
||||
- Trennung nach App-Ebene
|
||||
- Klarere Abgrenzung von Funktionen und Konfigurationen
|
||||
- Geringerer Ressourcenverbrauch als Multi-Prozess- oder Multi-Container-Ansätze
|
||||
|
||||
Da alle Apps im selben Prozess laufen, teilen sie CPU und Speicher. Hohe Last oder Fehler einer App können andere Apps beeinträchtigen.
|
||||
|
||||
Bei steigender App-Anzahl oder höheren Anforderungen an Isolation und Stabilität sollte die Architektur weiterentwickelt werden.
|
||||
|
||||
## Hybrides Multi-Umgebungs-Deployment
|
||||
|
||||
Wenn Anzahl und Komplexität der Apps weiter wachsen, stößt das Shared-Memory-Modell auf Grenzen bei Ressourcen, Stabilität und Sicherheit. Dann empfiehlt sich ein **hybrides Multi-Umgebungs-Deployment**.
|
||||
|
||||
Kernidee: Eine **Einstiegsanwendung** dient als zentrale Steuerungsebene, während mehrere NocoBase-Instanzen als Laufzeitumgebungen die Business-Apps tatsächlich ausführen.
|
||||
|
||||
Verantwortung der Einstiegsanwendung:
|
||||
|
||||
- Erstellen, Konfigurieren und Lifecycle-Management von Apps
|
||||
- Verteilung von Verwaltungsbefehlen und Aggregation von Statusinformationen
|
||||
|
||||
Verantwortung der Laufzeitumgebungen:
|
||||
|
||||
- Tatsächliches Hosting und Ausführen von Business-Apps im Shared-Memory-Modell
|
||||
|
||||
Aus Benutzersicht bleibt die Verwaltung zentral. Intern gilt:
|
||||
|
||||
- Unterschiedliche Apps können auf verschiedenen Nodes oder Clustern laufen
|
||||
- Jede App kann eigene Datenbanken und Middleware nutzen
|
||||
- Lastintensive Apps können isoliert oder unabhängig skaliert werden
|
||||
|
||||

|
||||
|
||||
Dieses Modell ist gut geeignet für SaaS-Plattformen, große Demo-Landschaften und Multi-Tenant-Szenarien.
|
||||
@@ -0,0 +1,106 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# Shared-Memory-Modus
|
||||
|
||||
## Einführung
|
||||
|
||||
Wenn Sie Geschäftsbereiche auf App-Ebene aufteilen möchten, ohne eine komplexe Deployment- und Betriebsarchitektur einzuführen, verwenden Sie den Shared-Memory-Multi-App-Modus.
|
||||
|
||||
In diesem Modus laufen mehrere Apps in einer NocoBase-Instanz. Jede App ist unabhängig, kann eine eigene Datenbank verwenden und einzeln erstellt, gestartet oder gestoppt werden. Gleichzeitig teilen sich alle Apps denselben Prozess- und Speicherraum.
|
||||
|
||||
## Benutzerhandbuch
|
||||
|
||||
### Umgebungsvariablen
|
||||
|
||||
Vor der Nutzung der Multi-App-Funktionen stellen Sie sicher, dass beim Start von NocoBase folgende Umgebungsvariablen gesetzt sind:
|
||||
|
||||
```bash
|
||||
APP_DISCOVERY_ADAPTER=local
|
||||
APP_PROCESS_ADAPTER=local
|
||||
```
|
||||
|
||||
### App erstellen
|
||||
|
||||
Öffnen Sie in den **System Settings** den Eintrag **App supervisor**, um zur App-Verwaltung zu gelangen.
|
||||
|
||||

|
||||
|
||||
Klicken Sie auf **Add**, um eine neue App zu erstellen.
|
||||
|
||||

|
||||
|
||||
#### Konfigurationsoptionen
|
||||
|
||||
| Option | Beschreibung |
|
||||
| --- | --- |
|
||||
| **Anzeigename** | Name der App in der Oberfläche |
|
||||
| **App-ID** | Eindeutiger, globaler App-Identifier |
|
||||
| **Startmodus** | - Beim ersten Aufruf starten: Start beim ersten URL-Zugriff<br>- Mit Hauptanwendung starten: Start zusammen mit der Hauptanwendung (verlängert die Startzeit) |
|
||||
| **Umgebung** | Im Shared-Memory-Modus ist nur `local` verfügbar |
|
||||
| **Datenbank** | Konfiguration der Hauptdatenquelle:<br>- Neue Datenbank: bestehenden DB-Service wiederverwenden und eigene DB anlegen<br>- Neue Verbindung: mit anderem DB-Service verbinden<br>- Neues Schema: bei PostgreSQL ein eigenes Schema erstellen |
|
||||
| **Upgrade** | Ob vorhandene Daten älterer NocoBase-Versionen automatisch auf die aktuelle Version angehoben werden |
|
||||
| **JWT-Secret** | Automatische Erzeugung eines eigenen JWT-Secrets zur Sitzungsisolation |
|
||||
| **Custom Domain** | Eigene Zugriffsdomain für die App |
|
||||
|
||||
### App starten
|
||||
|
||||
Klicken Sie auf **Start**, um die App zu starten.
|
||||
|
||||
> Wenn beim Erstellen _Start on first visit_ gewählt wurde, startet die App automatisch beim ersten Zugriff.
|
||||
|
||||

|
||||
|
||||
### App aufrufen
|
||||
|
||||
Klicken Sie auf **Visit**, um die App in einem neuen Tab zu öffnen.
|
||||
|
||||
Standardmäßig erfolgt der Zugriff über `/apps/:appName/admin/`, zum Beispiel:
|
||||
|
||||
```bash
|
||||
http://localhost:13000/apps/a_7zkxoarusnx/admin/
|
||||
```
|
||||
|
||||
Alternativ können Sie eine eigene Domain konfigurieren. Die Domain muss auf die aktuelle IP auflösen; bei Nginx muss die Domain zusätzlich in der Nginx-Konfiguration eingetragen werden.
|
||||
|
||||
### App stoppen
|
||||
|
||||
Klicken Sie auf **Stop**, um die App zu stoppen.
|
||||
|
||||

|
||||
|
||||
### App-Status
|
||||
|
||||
Der aktuelle Status jeder App wird in der Liste angezeigt.
|
||||
|
||||

|
||||
|
||||
### App löschen
|
||||
|
||||
Klicken Sie auf **Delete**, um eine App zu entfernen.
|
||||
|
||||

|
||||
|
||||
## FAQ
|
||||
|
||||
### 1. Plugin-Verwaltung
|
||||
|
||||
Andere Apps können dieselben Plugins (inkl. Versionen) wie die Hauptanwendung nutzen, die Konfiguration bleibt jedoch pro App isoliert.
|
||||
|
||||
### 2. Datenbank-Isolation
|
||||
|
||||
Apps können eigene Datenbanken nutzen. Für Datenaustausch zwischen Apps verwenden Sie externe Datenquellen.
|
||||
|
||||
### 3. Backup und Migration
|
||||
|
||||
Backups in der Hauptanwendung enthalten derzeit keine Daten anderer Apps (nur Basis-Metadaten). Backup und Migration müssen je App separat erfolgen.
|
||||
|
||||
### 4. Deployment und Upgrade
|
||||
|
||||
Im Shared-Memory-Modus folgen App-Versionen automatisch der Hauptanwendung und bleiben damit konsistent.
|
||||
|
||||
### 5. App-Sitzungen
|
||||
|
||||
- Mit eigenem JWT-Secret ist die Sitzung von Haupt- und anderen Apps isoliert. Bei Zugriff über Subpfade derselben Domain ist beim Wechsel oft eine erneute Anmeldung nötig (Token in LocalStorage). Separate Domains pro App werden empfohlen.
|
||||
- Ohne eigenes JWT-Secret teilen sich Apps die Sitzung der Hauptanwendung. Das ist komfortabler, birgt aber Sicherheitsrisiken: Bei überlappenden Benutzer-IDs kann es zu unberechtigtem app-übergreifendem Zugriff kommen.
|
||||
@@ -0,0 +1,229 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# Multi-Umgebungsmodus
|
||||
|
||||
## Einführung
|
||||
|
||||
Der Shared-Memory-Multi-App-Modus bietet klare Vorteile bei Deployment und Betrieb. Mit steigender App-Anzahl und wachsender Business-Komplexität kann jedoch eine einzelne Instanz an Grenzen stoßen. Für diese Szenarien eignet sich ein hybrides Multi-Umgebungs-Deployment.
|
||||
|
||||
In diesem Modus wird eine **Einstiegsanwendung** als zentrale Verwaltung und Steuerung bereitgestellt sowie mehrere **NocoBase-Instanzen** als unabhängige Laufzeitumgebungen für die Business-Apps. Die Umgebungen sind isoliert und arbeiten koordiniert zusammen.
|
||||
|
||||
Auf Deployment-Ebene können Umgebungen als separate Prozesse, Docker-Container oder mehrere Kubernetes-Deployments betrieben werden.
|
||||
|
||||
## Deployment
|
||||
|
||||
Im Multi-Umgebungsmodus gilt:
|
||||
|
||||
- Die **Einstiegsanwendung (Supervisor)** verwaltet Apps und Umgebungen zentral
|
||||
- **Worker-Anwendungen (Worker)** fungieren als tatsächliche Laufzeitumgebungen
|
||||
- App- und Umgebungskonfigurationen werden in Redis zwischengespeichert
|
||||
- Befehle und Statussynchronisation zwischen Supervisor und Workern laufen über Redis
|
||||
|
||||
Die Erstellung von Umgebungen ist aktuell noch nicht integriert. Worker müssen manuell bereitgestellt und konfiguriert werden.
|
||||
|
||||
### Architekturabhängigkeiten
|
||||
|
||||
Vor dem Deployment:
|
||||
|
||||
- **Redis**
|
||||
- Cache für App- und Umgebungskonfigurationen
|
||||
- Kommunikationskanal für Befehle zwischen Supervisor und Workern
|
||||
|
||||
- **Datenbank**
|
||||
- Datenbankdienste für Supervisor und Worker
|
||||
|
||||
### Einstiegsanwendung (Supervisor)
|
||||
|
||||
Die Einstiegsanwendung ist die zentrale Steuerungsebene für App-Erstellung, Start/Stopp, Umgebungsscheduling und Zugriffsproxy.
|
||||
|
||||
Umgebungsvariablen des Supervisors:
|
||||
|
||||
```bash
|
||||
# Application mode
|
||||
APP_MODE=supervisor
|
||||
# Application discovery adapter
|
||||
APP_DISCOVERY_ADAPTER=remote
|
||||
# Application process adapter
|
||||
APP_PROCESS_ADAPTER=remote
|
||||
# Redis for application and environment configuration cache
|
||||
APP_SUPERVISOR_REDIS_URL=
|
||||
# Command communication adapter
|
||||
APP_COMMAND_ADPATER=redis
|
||||
# Redis for command communication
|
||||
APP_COMMAND_REDIS_URL=
|
||||
```
|
||||
|
||||
### Worker-Anwendung (Worker)
|
||||
|
||||
Worker hosten und betreiben die konkreten NocoBase-App-Instanzen.
|
||||
|
||||
Umgebungsvariablen des Workers:
|
||||
|
||||
```bash
|
||||
# Application mode
|
||||
APP_MODE=worker
|
||||
# Application discovery adapter
|
||||
APP_DISCOVERY_ADAPTER=remote
|
||||
# Application process adapter
|
||||
APP_PROCESS_ADAPTER=local
|
||||
# Redis for application and environment configuration cache
|
||||
APP_SUPERVISOR_REDIS_URL=
|
||||
# Command communication adapter
|
||||
APP_COMMAND_ADPATER=redis
|
||||
# Redis for command communication
|
||||
APP_COMMAND_REDIS_URL=
|
||||
# Environment identifier
|
||||
ENVIRONMENT_NAME=
|
||||
# Environment access URL
|
||||
ENVIRONMENT_URL=
|
||||
# Environment proxy access URL
|
||||
ENVIRONMENT_PROXY_URL=
|
||||
```
|
||||
|
||||
### Docker-Compose-Beispiel
|
||||
|
||||
Das folgende Beispiel zeigt ein hybrides Multi-Umgebungs-Deployment mit einem Supervisor und zwei Workern.
|
||||
|
||||
```yaml
|
||||
networks:
|
||||
nocobase:
|
||||
driver: bridge
|
||||
|
||||
services:
|
||||
redis:
|
||||
networks:
|
||||
- nocobase
|
||||
image: redis/redis-stack-server:latest
|
||||
supervisor:
|
||||
container_name: nocobase-supervisor
|
||||
image: nocobase/nocobase:alpha
|
||||
restart: always
|
||||
platform: linux/amd64
|
||||
networks:
|
||||
- nocobase
|
||||
depends_on:
|
||||
- redis
|
||||
environment:
|
||||
- DB_DIALECT=postgres
|
||||
- DB_HOST=postgres
|
||||
- DB_PORT=5432
|
||||
- DB_DATABASE=nocobase_supervisor
|
||||
- DB_USER=postgres
|
||||
- DB_PASSWORD=postgres
|
||||
- TZ=Asia/Shanghai
|
||||
- APP_MODE=supervisor
|
||||
- APP_DISCOVERY_ADAPTER=remote
|
||||
- APP_PROCESS_ADAPTER=remote
|
||||
- APP_SUPERVISOR_REDIS_URL=redis://redis:6379/0
|
||||
- APP_COMMAND_ADAPTER=redis
|
||||
- APP_COMMAND_REDIS_URL=redis://redis:6379/0
|
||||
- APPEND_PRESET_BUILT_IN_PLUGINS=@nocobase/plugin-app-supervisor
|
||||
volumes:
|
||||
- ./storage-supervisor:/app/nocobase/storage
|
||||
ports:
|
||||
- '14000:80'
|
||||
worker_a:
|
||||
container_name: nocobase-worker-a
|
||||
image: nocobase/nocobase:alpha
|
||||
restart: always
|
||||
platform: linux/amd64
|
||||
networks:
|
||||
- nocobase
|
||||
depends_on:
|
||||
- redis
|
||||
environment:
|
||||
- DB_DIALECT=postgres
|
||||
- DB_HOST=postgres
|
||||
- DB_PORT=5432
|
||||
- DB_DATABASE=nocobase_worker_a
|
||||
- DB_USER=postgres
|
||||
- DB_PASSWORD=postgres
|
||||
- TZ=Asia/Shanghai
|
||||
- APP_MODE=worker
|
||||
- APP_DISCOVERY_ADAPTER=remote
|
||||
- APP_PROCESS_ADAPTER=local
|
||||
- APP_SUPERVISOR_REDIS_URL=redis://redis:6379/0
|
||||
- APP_COMMAND_ADAPTER=redis
|
||||
- APP_COMMAND_REDIS_URL=redis://redis:6379/0
|
||||
- ENVIRONMENT_NAME=env_a
|
||||
- ENVIRONMENT_URL=http://localhost:15000
|
||||
- ENVIRONMENT_PROXY_URL=http://worker_a
|
||||
- APPEND_PRESET_BUILT_IN_PLUGINS=@nocobase/plugin-app-supervisor
|
||||
volumes:
|
||||
- ./storage-worker-a:/app/nocobase/storage
|
||||
ports:
|
||||
- '15000:80'
|
||||
worker_b:
|
||||
container_name: nocobase-worker-b
|
||||
image: nocobase/nocobase:alpha
|
||||
restart: always
|
||||
platform: linux/amd64
|
||||
networks:
|
||||
- nocobase
|
||||
depends_on:
|
||||
- redis
|
||||
environment:
|
||||
- DB_DIALECT=postgres
|
||||
- DB_HOST=postgres
|
||||
- DB_PORT=5432
|
||||
- DB_DATABASE=nocobase_worker_b
|
||||
- DB_USER=postgres
|
||||
- DB_PASSWORD=postgres
|
||||
- TZ=Asia/Shanghai
|
||||
- APP_MODE=worker
|
||||
- APP_DISCOVERY_ADAPTER=remote
|
||||
- APP_PROCESS_ADAPTER=local
|
||||
- APP_SUPERVISOR_REDIS_URL=redis://redis:6379/0
|
||||
- APP_COMMAND_ADAPTER=redis
|
||||
- APP_COMMAND_REDIS_URL=redis://redis:6379/0
|
||||
- ENVIRONMENT_NAME=env_b
|
||||
- ENVIRONMENT_URL=http://localhost:16000
|
||||
- ENVIRONMENT_PROXY_URL=http://worker_b
|
||||
- APPEND_PRESET_BUILT_IN_PLUGINS=@nocobase/plugin-app-supervisor
|
||||
volumes:
|
||||
- ./storage-worker-b:/app/nocobase/storage
|
||||
ports:
|
||||
- '16000:80'
|
||||
```
|
||||
|
||||
## Benutzerhandbuch
|
||||
|
||||
Die grundlegende App-Verwaltung entspricht dem Shared-Memory-Modus, siehe [Shared-Memory-Modus](./local.md). Hier werden die Multi-Umgebungsaspekte beschrieben.
|
||||
|
||||
### Umgebungsliste
|
||||
|
||||
Nach dem Deployment können Sie auf der Seite **App supervisor** im Tab **Environment** die registrierten Worker-Umgebungen einsehen: Kennung, Version, URL und Status. Worker senden alle 2 Minuten einen Heartbeat.
|
||||
|
||||

|
||||
|
||||
### App erstellen
|
||||
|
||||
Beim Erstellen einer App können Sie eine oder mehrere Laufzeitumgebungen auswählen. In den meisten Fällen reicht eine Umgebung. Mehrere Umgebungen sind sinnvoll bei [Service Splitting](/cluster-mode/services-splitting).
|
||||
|
||||

|
||||
|
||||
### App-Liste
|
||||
|
||||
Die App-Liste zeigt die aktuelle Laufzeitumgebung und den Status je App. Bei mehreren Umgebungen werden mehrere Status angezeigt. Start/Stop sollte dann zentral gesteuert werden.
|
||||
|
||||

|
||||
|
||||
### App-Start
|
||||
|
||||
Da beim Start Initialdaten in die Datenbank geschrieben werden können, werden Starts bei Multi-Umgebungs-Deployments zur Vermeidung von Race Conditions in eine Warteschlange gestellt.
|
||||
|
||||

|
||||
|
||||
### Zugriffsproxy
|
||||
|
||||
Worker-Apps können über den Subpfad `/apps/:appName/admin` der Einstiegsanwendung aufgerufen werden.
|
||||
|
||||

|
||||
|
||||
Wenn eine App in mehreren Umgebungen bereitgestellt ist, muss ein Ziel für den Proxyzugriff gewählt werden.
|
||||
|
||||

|
||||
|
||||
Standardmäßig verwendet der Proxy `ENVIRONMENT_URL`. Dieser muss aus dem Netzwerk der Einstiegsanwendung erreichbar sein. Alternativ kann `ENVIRONMENT_PROXY_URL` gesetzt werden.
|
||||
@@ -1,112 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
---
|
||||
:::tip KI-Übersetzungshinweis
|
||||
Diese Dokumentation wurde automatisch von KI übersetzt.
|
||||
:::
|
||||
|
||||
|
||||
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
---
|
||||
|
||||
# Multi-Space
|
||||
|
||||
## Einführung
|
||||
|
||||
Das **Multi-Space Plugin** ermöglicht die Erstellung mehrerer unabhängiger Datenbereiche innerhalb einer einzigen Anwendungsinstanz durch logische Trennung.
|
||||
|
||||
#### Anwendungsfälle
|
||||
- **Mehrere Filialen oder Fabriken**: Geschäftsprozesse und Systemkonfigurationen sind weitgehend identisch, wie z.B. eine einheitliche Bestandsverwaltung, Produktionsplanung, Verkaufsstrategien und Berichtsvorlagen. Es muss jedoch sichergestellt werden, dass die Daten jeder Geschäftseinheit sich nicht gegenseitig beeinflussen.
|
||||
- **Verwaltung mehrerer Organisationen oder Tochtergesellschaften**: Mehrere Organisationen oder Tochtergesellschaften einer Unternehmensgruppe nutzen dieselbe Plattform, aber jede Marke verfügt über unabhängige Kunden-, Produkt- und Bestelldaten.
|
||||
|
||||
## Installation
|
||||
|
||||
Suchen Sie im Plugin-Manager das **Multi-Space** Plugin und aktivieren Sie es.
|
||||
|
||||

|
||||
|
||||
## Benutzerhandbuch
|
||||
|
||||
### Multi-Space Verwaltung
|
||||
|
||||
Nachdem Sie das Plugin aktiviert haben, navigieren Sie zur Einstellungsseite **„Benutzer & Berechtigungen“** und wechseln Sie zum Bereich **„Bereiche“**, um Ihre Bereiche zu verwalten.
|
||||
|
||||
> Im Anfangszustand gibt es einen integrierten **Nicht zugewiesenen Bereich (Unassigned Space)**, der hauptsächlich dazu dient, alte Daten anzuzeigen, die keinem Bereich zugeordnet sind.
|
||||
|
||||

|
||||
|
||||
#### Einen Bereich erstellen
|
||||
|
||||
Klicken Sie auf die Schaltfläche „Bereich hinzufügen“, um einen neuen Bereich zu erstellen:
|
||||
|
||||
.png)
|
||||
|
||||
#### Benutzer zuweisen
|
||||
|
||||
Nachdem Sie einen Bereich erstellt und ausgewählt haben, können Sie auf der rechten Seite die Benutzer festlegen, die diesem Bereich zugeordnet sind:
|
||||
|
||||
> **Tipp:** Nachdem Sie Benutzern einen Bereich zugewiesen haben, müssen Sie die Seite **manuell aktualisieren**, damit die Bereichswechselliste oben rechts den neuesten Bereich anzeigt.
|
||||
|
||||

|
||||
|
||||
### Multi-Space wechseln und anzeigen
|
||||
|
||||
Oben rechts können Sie den aktuellen Bereich wechseln.
|
||||
Wenn Sie auf das **Augen-Symbol** auf der rechten Seite klicken (im hervorgehobenen Zustand), können Sie Daten aus mehreren Bereichen gleichzeitig anzeigen.
|
||||
|
||||

|
||||
|
||||
### Multi-Space Datenverwaltung
|
||||
|
||||
Nachdem Sie das Plugin aktiviert haben, fügt das System beim Erstellen einer Sammlung (Collection) automatisch ein **Bereichsfeld** hinzu.
|
||||
**Nur Sammlungen, die dieses Feld enthalten, werden in die Logik der Bereichsverwaltung einbezogen.**
|
||||
|
||||

|
||||
|
||||
Für bestehende Sammlungen können Sie manuell ein Bereichsfeld hinzufügen, um die Bereichsverwaltung zu aktivieren:
|
||||
|
||||

|
||||
|
||||
#### Standardlogik
|
||||
|
||||
In Sammlungen, die das Bereichsfeld enthalten, wendet das System automatisch die folgende Logik an:
|
||||
|
||||
1. Beim Erstellen von Daten werden diese automatisch dem aktuell ausgewählten Bereich zugeordnet;
|
||||
2. Beim Filtern von Daten werden diese automatisch auf die Daten des aktuell ausgewählten Bereichs beschränkt.
|
||||
|
||||
### Alte Daten in Multi-Space kategorisieren
|
||||
|
||||
Für Daten, die vor der Aktivierung des Multi-Space Plugins existierten, können Sie die Bereichszuordnung mit den folgenden Schritten vornehmen:
|
||||
|
||||
#### 1. Das Bereichsfeld hinzufügen
|
||||
|
||||
Fügen Sie das Bereichsfeld manuell zu der alten Sammlung hinzu:
|
||||
|
||||

|
||||
|
||||
#### 2. Benutzer dem nicht zugewiesenen Bereich zuweisen
|
||||
|
||||
Verknüpfen Sie den Benutzer, der die alten Daten verwaltet, mit allen Bereichen, einschließlich des **Nicht zugewiesenen Bereichs (Unassigned Space)**, um Daten anzuzeigen, die noch keinem Bereich zugeordnet wurden:
|
||||
|
||||

|
||||
|
||||
#### 3. Alle Bereichsdaten anzeigen
|
||||
|
||||
Wählen Sie oben aus, um Daten aus allen Bereichen anzuzeigen:
|
||||
|
||||

|
||||
|
||||
#### 4. Eine Seite für die Zuweisung alter Daten konfigurieren
|
||||
|
||||
Erstellen Sie eine neue Seite für die Zuweisung alter Daten. Zeigen Sie das „Bereichsfeld“ auf der **Listenansicht** und der **Bearbeitungsansicht** an, um die Bereichszuordnung manuell anzupassen.
|
||||
|
||||

|
||||
|
||||
Machen Sie das Bereichsfeld bearbeitbar
|
||||
|
||||

|
||||
|
||||
#### 5. Daten manuell Bereichen zuweisen
|
||||
|
||||
Bearbeiten Sie die Daten über die oben erstellte Seite manuell, um den alten Daten schrittweise den korrekten Bereich zuzuweisen (Sie können auch eine Stapelbearbeitung selbst konfigurieren).
|
||||
@@ -0,0 +1,102 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
---
|
||||
|
||||
# Multi-Space
|
||||
|
||||
<PluginInfo name="multi-space" licenseBundled="professional"></PluginInfo>
|
||||
|
||||
## Einführung
|
||||
|
||||
Das **Multi-Space-Plugin** ermöglicht mehrere unabhängige Datenräume innerhalb einer einzelnen Anwendung durch logische Isolation.
|
||||
|
||||
#### Typische Szenarien
|
||||
- **Mehrere Filialen oder Fabriken**: Prozesse und Konfiguration sind weitgehend identisch, Daten der einzelnen Einheiten sollen aber getrennt bleiben.
|
||||
- **Mehrere Organisationen oder Tochtergesellschaften**: Gemeinsame Plattform, aber getrennte Kunden-, Produkt- und Bestelldaten pro Marke.
|
||||
|
||||
## Installation
|
||||
|
||||
Aktivieren Sie im Plugin-Manager das Plugin **Multi-Space**.
|
||||
|
||||

|
||||
|
||||
## Benutzerhandbuch
|
||||
|
||||
### Multi-Space-Verwaltung
|
||||
|
||||
Nach der Aktivierung wechseln Sie in **Users & Permissions** zum Tab **Spaces**.
|
||||
|
||||
> Standardmäßig gibt es den eingebauten Bereich **Unassigned Space** für Altdaten ohne Zuordnung.
|
||||
|
||||

|
||||
|
||||
#### Space erstellen
|
||||
|
||||
Klicken Sie auf **Add space**.
|
||||
|
||||
.png)
|
||||
|
||||
#### Benutzer zuweisen
|
||||
|
||||
Nach Auswahl eines Spaces können rechts die zugehörigen Benutzer festgelegt werden.
|
||||
|
||||
> **Hinweis:** Nach der Zuweisung ist ein **manuelles Neuladen der Seite** erforderlich, damit die Space-Umschaltung oben rechts aktualisiert wird.
|
||||
|
||||

|
||||
|
||||
### Spaces wechseln und anzeigen
|
||||
|
||||
Oben rechts wechseln Sie den aktiven Space. Mit dem **Auge-Symbol** (hervorgehoben) sehen Sie Daten aus mehreren Spaces gleichzeitig.
|
||||
|
||||

|
||||
|
||||
### Datenverwaltung in Multi-Space
|
||||
|
||||
Nach Aktivierung fügt das System beim Erstellen einer Collection automatisch ein **Space-Feld** hinzu. **Nur Collections mit diesem Feld** unterliegen der Space-Logik.
|
||||
|
||||

|
||||
|
||||
Bei bestehenden Collections kann das Space-Feld manuell ergänzt werden.
|
||||
|
||||

|
||||
|
||||
#### Standardlogik
|
||||
|
||||
1. Beim Erstellen von Daten wird automatisch der aktuell gewählte Space verknüpft.
|
||||
2. Bei Abfragen werden Daten automatisch auf den aktuell gewählten Space gefiltert.
|
||||
|
||||
### Altdaten in Spaces klassifizieren
|
||||
|
||||
Für Daten, die vor Aktivierung des Plugins existierten:
|
||||
|
||||
#### 1. Space-Feld hinzufügen
|
||||
|
||||
Fügen Sie das Space-Feld manuell in Alt-Tabellen ein.
|
||||
|
||||

|
||||
|
||||
#### 2. Benutzer dem Unassigned Space zuordnen
|
||||
|
||||
Ordnen Sie zuständige Benutzer allen Spaces zu, inklusive **Unassigned Space**, um noch nicht klassifizierte Daten zu sehen.
|
||||
|
||||

|
||||
|
||||
#### 3. Daten aus allen Spaces anzeigen
|
||||
|
||||
Aktivieren Sie oben die Ansicht für alle Spaces.
|
||||
|
||||

|
||||
|
||||
#### 4. Zuordnungsseite für Altdaten erstellen
|
||||
|
||||
Erstellen Sie eine neue Seite zur Zuordnung und zeigen Sie das Space-Feld in **Listen-** und **Bearbeitungsseite** an.
|
||||
|
||||

|
||||
|
||||
Setzen Sie das Space-Feld auf bearbeitbar.
|
||||
|
||||

|
||||
|
||||
#### 5. Space manuell zuweisen
|
||||
|
||||
Bearbeiten Sie die Daten über diese Seite und weisen Sie Altdaten schrittweise dem richtigen Space zu (optional per Batch-Bearbeitung).
|
||||
@@ -4,9 +4,6 @@ pkg: '@nocobase/plugin-app-supervisor'
|
||||
|
||||
# Multi-Application Management
|
||||
|
||||
:::info 🚀 Coming soon
|
||||
:::
|
||||
|
||||
## Overview
|
||||
|
||||
Multi-application management is a unified application management solution provided by NocoBase. It allows you to create and manage multiple **physically isolated** NocoBase application instances across one or more runtime environments. With **AppSupervisor**, users can create and maintain multiple applications from a single entry point, supporting different business needs and growth stages.
|
||||
|
||||
@@ -4,9 +4,6 @@ pkg: '@nocobase/plugin-app-supervisor'
|
||||
|
||||
# Shared-Memory Mode
|
||||
|
||||
:::info 🚀 Coming soon
|
||||
:::
|
||||
|
||||
## Introduction
|
||||
|
||||
When users want to split business domains at the application level without introducing complex deployment and operations, the shared-memory multi-application mode can be used.
|
||||
|
||||
@@ -4,9 +4,6 @@ pkg: '@nocobase/plugin-app-supervisor'
|
||||
|
||||
# Multi-Environment Mode
|
||||
|
||||
:::info 🚀 Coming soon
|
||||
:::
|
||||
|
||||
## Introduction
|
||||
|
||||
The shared-memory multi-application mode provides clear advantages in deployment and operations. However, as the number of applications and business complexity increase, a single instance may gradually face challenges such as resource contention and reduced stability. For these scenarios, a **multi-environment hybrid deployment** can be adopted to support more complex business requirements.
|
||||
|
||||
@@ -1,17 +1,28 @@
|
||||
[
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Visión general",
|
||||
"link": "/multi-app/"
|
||||
"label": "Multiaplicación",
|
||||
"items": [
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Resumen",
|
||||
"link": "/multi-app/multi-app"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Modo de memoria compartida",
|
||||
"link": "/multi-app/multi-app/local"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Modo multi-entorno",
|
||||
"link": "/multi-app/multi-app/remote"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Múltiples aplicaciones",
|
||||
"link": "/multi-app/multi-app"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Múltiples espacios",
|
||||
"label": "Multi-space",
|
||||
"link": "/multi-app/multi-space"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-app-manager"
|
||||
---
|
||||
:::tip Aviso de traducción por IA
|
||||
Esta documentación ha sido traducida automáticamente por IA.
|
||||
:::
|
||||
|
||||
|
||||
|
||||
# Multi-aplicación
|
||||
|
||||
## Introducción
|
||||
@@ -1,133 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-app-manager"
|
||||
---
|
||||
:::tip Aviso de traducción por IA
|
||||
Esta documentación ha sido traducida automáticamente por IA.
|
||||
:::
|
||||
|
||||
|
||||
# Multi-aplicación
|
||||
|
||||
|
||||
## Introducción
|
||||
|
||||
El **plugin Multi-aplicación** le permite crear y gestionar dinámicamente múltiples aplicaciones independientes sin necesidad de despliegues separados. Cada subaplicación es una instancia completamente independiente con su propia base de datos, plugins y configuración.
|
||||
|
||||
#### Casos de uso
|
||||
- **Multitenencia**: Proporcionar instancias de aplicación independientes, donde cada cliente tiene sus propios datos, configuraciones de plugins y sistema de permisos.
|
||||
- **Sistemas principales y subsistemas para diferentes dominios de negocio**: Un sistema grande compuesto por múltiples aplicaciones más pequeñas desplegadas de forma independiente.
|
||||
|
||||
|
||||
:::warning
|
||||
El plugin Multi-aplicación por sí mismo no proporciona capacidades para compartir usuarios.
|
||||
Si necesita compartir usuarios entre múltiples aplicaciones, puede usarlo en conjunto con el **[plugin de Autenticación](/auth-verification)**.
|
||||
:::
|
||||
|
||||
|
||||
## Instalación
|
||||
|
||||
En el gestor de plugins, encuentre el plugin **Multi-aplicación** y actívelo.
|
||||
|
||||

|
||||
|
||||
|
||||
## Guía de uso
|
||||
|
||||
|
||||
### Creación de una subaplicación
|
||||
|
||||
En el menú de configuración del sistema, haga clic en «Multi-aplicación» para acceder a la página de gestión de multi-aplicaciones:
|
||||
|
||||

|
||||
|
||||
Haga clic en el botón «Añadir nuevo» para crear una nueva subaplicación:
|
||||
|
||||

|
||||
|
||||
#### Descripción de los campos del formulario
|
||||
|
||||
* **Nombre**: Identificador de la subaplicación, globalmente único.
|
||||
* **Nombre de visualización**: El nombre de la subaplicación que se muestra en la interfaz.
|
||||
* **Modo de inicio**:
|
||||
* **Iniciar en la primera visita**: La subaplicación se inicia solo cuando un usuario la accede por primera vez a través de una URL.
|
||||
* **Iniciar con la aplicación principal**: La subaplicación se inicia al mismo tiempo que la aplicación principal (esto aumentará el tiempo de inicio de la aplicación principal).
|
||||
* **Puerto**: El número de puerto utilizado por la subaplicación en tiempo de ejecución.
|
||||
* **Dominio personalizado**: Configure un subdominio independiente para la subaplicación.
|
||||
* **Fijar al menú**: Fije la entrada de la subaplicación en el lado izquierdo de la barra de navegación superior.
|
||||
* **Conexión a la base de datos**: Se utiliza para configurar la fuente de datos de la subaplicación, compatible con los siguientes tres métodos:
|
||||
* **Nueva base de datos**: Reutilice el servicio de datos actual para crear una base de datos independiente.
|
||||
* **Nueva conexión de datos**: Configure un servicio de base de datos completamente nuevo.
|
||||
* **Modo Schema**: Cree un Schema independiente para la subaplicación en PostgreSQL.
|
||||
* **Actualización**: Si la base de datos conectada contiene una versión anterior de la estructura de datos de NocoBase, se actualizará automáticamente a la versión actual.
|
||||
|
||||
|
||||
### Iniciar y detener una subaplicación
|
||||
|
||||
Haga clic en el botón **Iniciar** para iniciar la subaplicación;
|
||||
> Si se marcó *"Iniciar en la primera visita"* durante la creación, se iniciará automáticamente en la primera visita.
|
||||
|
||||
Haga clic en el botón **Ver** para abrir la subaplicación en una nueva pestaña.
|
||||
|
||||

|
||||
|
||||
|
||||
### Estado y registros de la subaplicación
|
||||
|
||||
En la lista, puede ver el uso de memoria y CPU de cada aplicación.
|
||||
|
||||

|
||||
|
||||
Haga clic en el botón **Registros** para ver los registros de ejecución de la subaplicación.
|
||||
> Si la subaplicación es inaccesible después de iniciarse (por ejemplo, debido a una base de datos dañada), puede usar los registros para solucionar problemas.
|
||||
|
||||

|
||||
|
||||
|
||||
### Eliminar una subaplicación
|
||||
|
||||
Haga clic en el botón **Eliminar** para remover la subaplicación.
|
||||
> Al eliminar, puede elegir si también desea eliminar la base de datos. Proceda con precaución, ya que esta acción es irreversible.
|
||||
|
||||
|
||||
### Acceder a una subaplicación
|
||||
Por defecto, se accede a las subaplicaciones usando `/_app/:appName/admin/`, por ejemplo:
|
||||
```
|
||||
http://localhost:13000/_app/a_7zkxoarusnx/admin/
|
||||
```
|
||||
También puede configurar un subdominio independiente para la subaplicación. Necesitará resolver el dominio a la IP actual, y si está usando Nginx, también deberá añadir el dominio a la configuración de Nginx.
|
||||
|
||||
|
||||
### Gestionar subaplicaciones mediante línea de comandos
|
||||
|
||||
En el directorio raíz del proyecto, puede usar la línea de comandos para gestionar las instancias de las subaplicaciones a través de **PM2**:
|
||||
|
||||
```bash
|
||||
yarn nocobase pm2 list # Ver la lista de instancias en ejecución actualmente
|
||||
yarn nocobase pm2 stop [appname] # Detener un proceso de subaplicación específico
|
||||
yarn nocobase pm2 delete [appname] # Eliminar un proceso de subaplicación específico
|
||||
yarn nocobase pm2 kill # Terminar forzosamente todos los procesos iniciados (puede incluir la instancia de la aplicación principal)
|
||||
```
|
||||
|
||||
### Migrar datos de la antigua Multi-aplicación
|
||||
|
||||
Vaya a la antigua página de gestión de multi-aplicaciones y haga clic en el botón **Migrar datos a la nueva multi-aplicación** para migrar los datos.
|
||||
|
||||

|
||||
|
||||
|
||||
## Preguntas frecuentes
|
||||
|
||||
#### 1. Gestión de plugins
|
||||
Las subaplicaciones pueden usar los mismos plugins que la aplicación principal (incluyendo las versiones), pero pueden configurarse y usarse de forma independiente.
|
||||
|
||||
#### 2. Aislamiento de la base de datos
|
||||
Las subaplicaciones pueden configurarse con bases de datos independientes. Si desea compartir datos entre aplicaciones, puede hacerlo a través de fuentes de datos externas.
|
||||
|
||||
#### 3. Copia de seguridad y migración de datos
|
||||
Actualmente, las copias de seguridad de datos en la aplicación principal no incluyen los datos de las subaplicaciones (solo la información básica de las subaplicaciones). Debe realizar copias de seguridad y migrar los datos manualmente dentro de cada subaplicación.
|
||||
|
||||
#### 4. Despliegue y actualizaciones
|
||||
La versión de una subaplicación se actualizará automáticamente junto con la aplicación principal, asegurando la coherencia de la versión entre la aplicación principal y las subaplicaciones.
|
||||
|
||||
#### 5. Gestión de recursos
|
||||
El consumo de recursos de cada subaplicación es básicamente el mismo que el de la aplicación principal. Actualmente, una sola aplicación utiliza alrededor de 500-600 MB de memoria.
|
||||
@@ -0,0 +1,66 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# Gestión multiaplicación
|
||||
|
||||
## Resumen
|
||||
|
||||
La gestión multiaplicación es una solución unificada de NocoBase para crear y administrar múltiples instancias de aplicaciones NocoBase **físicamente aisladas** en uno o varios entornos de ejecución. Con **AppSupervisor**, puedes administrar varias aplicaciones desde una sola entrada.
|
||||
|
||||
## Aplicación única
|
||||
|
||||
En etapas tempranas, la mayoría de equipos comienzan con una sola aplicación.
|
||||
|
||||
En este modo, solo se despliega una instancia de NocoBase. Toda la lógica de negocio, los datos y los usuarios viven en la misma aplicación. El despliegue es simple y el costo de configuración es bajo.
|
||||
|
||||
A medida que el negocio crece, aparecen límites naturales:
|
||||
|
||||
- Se acumulan funciones y el sistema se vuelve pesado
|
||||
- Es difícil aislar dominios de negocio
|
||||
- El costo de escalado y mantenimiento aumenta
|
||||
|
||||
En ese punto, suele ser necesario dividir el negocio en múltiples aplicaciones.
|
||||
|
||||
## Multiaplicación en memoria compartida
|
||||
|
||||
Si necesitas separar dominios de negocio sin introducir una arquitectura compleja de despliegue y operación, puedes usar el modo de memoria compartida.
|
||||
|
||||
En este modo, varias aplicaciones se ejecutan dentro de una sola instancia de NocoBase. Cada aplicación es independiente, puede conectarse a su propia base de datos y puede crearse/iniciarse/detenerse por separado. Sin embargo, comparten el mismo proceso y espacio de memoria.
|
||||
|
||||

|
||||
|
||||
Ventajas principales:
|
||||
|
||||
- División del negocio por aplicación
|
||||
- Funciones y configuración más claras entre aplicaciones
|
||||
- Menor consumo de recursos que enfoques multi-proceso o multi-contenedor
|
||||
|
||||
Como todas las aplicaciones comparten proceso, también comparten CPU y memoria. Una falla o alta carga en una aplicación puede impactar a las demás.
|
||||
|
||||
Cuando aumenta el número de aplicaciones o se exige más aislamiento y estabilidad, se debe evolucionar la arquitectura.
|
||||
|
||||
## Despliegue híbrido multi-entorno
|
||||
|
||||
Cuando crecen la escala y la complejidad del negocio, el modo de memoria compartida enfrenta retos de recursos, estabilidad y seguridad. En esa fase, puede adoptarse un **despliegue híbrido multi-entorno**.
|
||||
|
||||
La idea central es introducir una **aplicación de entrada**: una instancia de NocoBase funciona como plano de control unificado, mientras varias instancias de NocoBase funcionan como entornos de ejecución que alojan las aplicaciones de negocio.
|
||||
|
||||
La aplicación de entrada se encarga de:
|
||||
|
||||
- Crear, configurar y gestionar el ciclo de vida de las aplicaciones
|
||||
- Distribuir comandos de gestión y agregar estados
|
||||
|
||||
Los entornos de ejecución se encargan de:
|
||||
|
||||
- Alojar y ejecutar aplicaciones de negocio
|
||||
|
||||
Desde la perspectiva del usuario, todo sigue gestionándose desde una sola entrada. Internamente:
|
||||
|
||||
- Distintas aplicaciones pueden correr en diferentes nodos o clústeres
|
||||
- Cada aplicación puede tener su propia base de datos y middleware
|
||||
- Las aplicaciones de alta carga pueden aislarse o escalarse de forma independiente
|
||||
|
||||

|
||||
|
||||
Este modelo es adecuado para plataformas SaaS, gran cantidad de entornos demo y escenarios multi-tenant.
|
||||
@@ -0,0 +1,106 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# Modo de memoria compartida
|
||||
|
||||
## Introducción
|
||||
|
||||
Cuando quieres separar dominios de negocio por aplicación sin introducir una arquitectura compleja, puedes usar el modo multiaplicación en memoria compartida.
|
||||
|
||||
En este modo, varias aplicaciones se ejecutan en una única instancia de NocoBase. Cada aplicación es independiente (BD, creación, arranque y parada), pero comparte proceso y memoria con las demás.
|
||||
|
||||
## Guía de uso
|
||||
|
||||
### Variables de entorno
|
||||
|
||||
Antes de usar multiaplicación, confirma estas variables al iniciar NocoBase:
|
||||
|
||||
```bash
|
||||
APP_DISCOVERY_ADAPTER=local
|
||||
APP_PROCESS_ADAPTER=local
|
||||
```
|
||||
|
||||
### Crear una aplicación
|
||||
|
||||
En **System Settings**, entra en **App supervisor** para abrir la gestión de aplicaciones.
|
||||
|
||||

|
||||
|
||||
Haz clic en **Add** para crear una nueva aplicación.
|
||||
|
||||

|
||||
|
||||
#### Opciones de configuración
|
||||
|
||||
| Opción | Descripción |
|
||||
| --- | --- |
|
||||
| **Nombre visible** | Nombre mostrado en la interfaz |
|
||||
| **ID de aplicación** | Identificador global único |
|
||||
| **Modo de arranque** | - Arrancar en la primera visita: se inicia al primer acceso por URL<br>- Arrancar con la aplicación principal: se inicia junto a la principal (aumenta su tiempo de arranque) |
|
||||
| **Entorno** | En memoria compartida solo está disponible `local` |
|
||||
| **Base de datos** | Configura la fuente principal:<br>- Nueva base de datos: reutiliza el servicio DB actual y crea una BD dedicada<br>- Nueva conexión: conecta con otro servicio DB<br>- Nuevo schema: en PostgreSQL crea un schema dedicado |
|
||||
| **Actualización** | Si se permite actualizar automáticamente datos NocoBase de versiones anteriores |
|
||||
| **JWT Secret** | Genera un JWT independiente para aislar sesiones |
|
||||
| **Dominio personalizado** | Define un dominio dedicado para la aplicación |
|
||||
|
||||
### Iniciar una aplicación
|
||||
|
||||
Haz clic en **Start** para iniciarla.
|
||||
|
||||
> Si se marcó _Start on first visit_ al crearla, arrancará automáticamente en el primer acceso.
|
||||
|
||||

|
||||
|
||||
### Acceder a una aplicación
|
||||
|
||||
Haz clic en **Visit** para abrirla en una pestaña nueva.
|
||||
|
||||
Por defecto se accede por `/apps/:appName/admin/`, por ejemplo:
|
||||
|
||||
```bash
|
||||
http://localhost:13000/apps/a_7zkxoarusnx/admin/
|
||||
```
|
||||
|
||||
También puedes configurar dominio independiente. Debe resolver a la IP actual; si usas Nginx, añade también el dominio en su configuración.
|
||||
|
||||
### Detener una aplicación
|
||||
|
||||
Haz clic en **Stop** para detenerla.
|
||||
|
||||

|
||||
|
||||
### Estado de aplicaciones
|
||||
|
||||
En la lista se muestra el estado actual de cada aplicación.
|
||||
|
||||

|
||||
|
||||
### Eliminar una aplicación
|
||||
|
||||
Haz clic en **Delete** para eliminarla.
|
||||
|
||||

|
||||
|
||||
## FAQ
|
||||
|
||||
### 1. Gestión de plugins
|
||||
|
||||
Las aplicaciones pueden usar los mismos plugins (y versiones) que la principal, pero su configuración y uso son independientes por aplicación.
|
||||
|
||||
### 2. Aislamiento de base de datos
|
||||
|
||||
Cada aplicación puede usar una base independiente. Para compartir datos entre aplicaciones, usa fuentes de datos externas.
|
||||
|
||||
### 3. Respaldo y migración
|
||||
|
||||
Actualmente, los respaldos de la aplicación principal no incluyen datos de otras aplicaciones (solo metadatos básicos). Deben respaldarse y migrarse por separado dentro de cada aplicación.
|
||||
|
||||
### 4. Despliegue y actualización
|
||||
|
||||
En memoria compartida, las versiones de otras aplicaciones siguen automáticamente la versión de la aplicación principal.
|
||||
|
||||
### 5. Sesiones de aplicación
|
||||
|
||||
- Con JWT independiente, la sesión queda aislada de la principal y de otras aplicaciones. Si accedes por subrutas del mismo dominio, al cambiar de app puede requerirse relogin (token en LocalStorage). Se recomienda un dominio separado por aplicación.
|
||||
- Sin JWT independiente, comparte sesión con la principal y el cambio es más cómodo, pero hay riesgo de seguridad: IDs de usuario superpuestos entre aplicaciones pueden causar acceso no autorizado.
|
||||
@@ -0,0 +1,227 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# Modo multi-entorno
|
||||
|
||||
## Introducción
|
||||
|
||||
El modo multiaplicación en memoria compartida ofrece ventajas claras en despliegue y operación, pero cuando crece la cantidad de aplicaciones y la complejidad de negocio, una sola instancia puede quedar limitada. Para esos escenarios se recomienda el despliegue híbrido multi-entorno.
|
||||
|
||||
En este modo, el sistema despliega una **aplicación de entrada** como centro unificado de gestión y planificación, y varias instancias NocoBase como entornos de ejecución independientes que alojan las aplicaciones de negocio.
|
||||
|
||||
A nivel de infraestructura, los entornos pueden ejecutarse como procesos separados, contenedores Docker o múltiples Deployments de Kubernetes.
|
||||
|
||||
## Despliegue
|
||||
|
||||
En el despliegue híbrido multi-entorno:
|
||||
|
||||
- La **aplicación de entrada (Supervisor)** gestiona apps y entornos de forma unificada
|
||||
- Las **aplicaciones Worker** ejecutan la carga de negocio real
|
||||
- La configuración de aplicaciones y entornos se cachea en Redis
|
||||
- La comunicación de comandos y estado entre Supervisor y Workers usa Redis
|
||||
|
||||
La creación de entornos aún no está disponible. Cada Worker debe desplegarse y configurarse manualmente.
|
||||
|
||||
### Dependencias de arquitectura
|
||||
|
||||
Antes de desplegar, prepara:
|
||||
|
||||
- **Redis**
|
||||
- Cache de configuración de aplicaciones y entornos
|
||||
- Canal de comunicación de comandos entre Supervisor y Workers
|
||||
|
||||
- **Base de datos**
|
||||
- Servicios de base de datos para Supervisor y Workers
|
||||
|
||||
### Aplicación de entrada (Supervisor)
|
||||
|
||||
El Supervisor es el centro de control para creación de apps, arranque/parada, planificación de entornos y proxy de acceso.
|
||||
|
||||
Variables de entorno del Supervisor:
|
||||
|
||||
```bash
|
||||
# Application mode
|
||||
APP_MODE=supervisor
|
||||
# Application discovery adapter
|
||||
APP_DISCOVERY_ADAPTER=remote
|
||||
# Application process adapter
|
||||
APP_PROCESS_ADAPTER=remote
|
||||
# Redis for application and environment configuration cache
|
||||
APP_SUPERVISOR_REDIS_URL=
|
||||
# Command communication adapter
|
||||
APP_COMMAND_ADPATER=redis
|
||||
# Redis for command communication
|
||||
APP_COMMAND_REDIS_URL=
|
||||
```
|
||||
|
||||
### Aplicación Worker
|
||||
|
||||
Los Workers alojan y ejecutan instancias NocoBase concretas.
|
||||
|
||||
Variables de entorno del Worker:
|
||||
|
||||
```bash
|
||||
# Application mode
|
||||
APP_MODE=worker
|
||||
# Application discovery adapter
|
||||
APP_DISCOVERY_ADAPTER=remote
|
||||
# Application process adapter
|
||||
APP_PROCESS_ADAPTER=local
|
||||
# Redis for application and environment configuration cache
|
||||
APP_SUPERVISOR_REDIS_URL=
|
||||
# Command communication adapter
|
||||
APP_COMMAND_ADPATER=redis
|
||||
# Redis for command communication
|
||||
APP_COMMAND_REDIS_URL=
|
||||
# Environment identifier
|
||||
ENVIRONMENT_NAME=
|
||||
# Environment access URL
|
||||
ENVIRONMENT_URL=
|
||||
# Environment proxy access URL
|
||||
ENVIRONMENT_PROXY_URL=
|
||||
```
|
||||
|
||||
### Ejemplo Docker Compose
|
||||
|
||||
```yaml
|
||||
networks:
|
||||
nocobase:
|
||||
driver: bridge
|
||||
|
||||
services:
|
||||
redis:
|
||||
networks:
|
||||
- nocobase
|
||||
image: redis/redis-stack-server:latest
|
||||
supervisor:
|
||||
container_name: nocobase-supervisor
|
||||
image: nocobase/nocobase:alpha
|
||||
restart: always
|
||||
platform: linux/amd64
|
||||
networks:
|
||||
- nocobase
|
||||
depends_on:
|
||||
- redis
|
||||
environment:
|
||||
- DB_DIALECT=postgres
|
||||
- DB_HOST=postgres
|
||||
- DB_PORT=5432
|
||||
- DB_DATABASE=nocobase_supervisor
|
||||
- DB_USER=postgres
|
||||
- DB_PASSWORD=postgres
|
||||
- TZ=Asia/Shanghai
|
||||
- APP_MODE=supervisor
|
||||
- APP_DISCOVERY_ADAPTER=remote
|
||||
- APP_PROCESS_ADAPTER=remote
|
||||
- APP_SUPERVISOR_REDIS_URL=redis://redis:6379/0
|
||||
- APP_COMMAND_ADAPTER=redis
|
||||
- APP_COMMAND_REDIS_URL=redis://redis:6379/0
|
||||
- APPEND_PRESET_BUILT_IN_PLUGINS=@nocobase/plugin-app-supervisor
|
||||
volumes:
|
||||
- ./storage-supervisor:/app/nocobase/storage
|
||||
ports:
|
||||
- '14000:80'
|
||||
worker_a:
|
||||
container_name: nocobase-worker-a
|
||||
image: nocobase/nocobase:alpha
|
||||
restart: always
|
||||
platform: linux/amd64
|
||||
networks:
|
||||
- nocobase
|
||||
depends_on:
|
||||
- redis
|
||||
environment:
|
||||
- DB_DIALECT=postgres
|
||||
- DB_HOST=postgres
|
||||
- DB_PORT=5432
|
||||
- DB_DATABASE=nocobase_worker_a
|
||||
- DB_USER=postgres
|
||||
- DB_PASSWORD=postgres
|
||||
- TZ=Asia/Shanghai
|
||||
- APP_MODE=worker
|
||||
- APP_DISCOVERY_ADAPTER=remote
|
||||
- APP_PROCESS_ADAPTER=local
|
||||
- APP_SUPERVISOR_REDIS_URL=redis://redis:6379/0
|
||||
- APP_COMMAND_ADAPTER=redis
|
||||
- APP_COMMAND_REDIS_URL=redis://redis:6379/0
|
||||
- ENVIRONMENT_NAME=env_a
|
||||
- ENVIRONMENT_URL=http://localhost:15000
|
||||
- ENVIRONMENT_PROXY_URL=http://worker_a
|
||||
- APPEND_PRESET_BUILT_IN_PLUGINS=@nocobase/plugin-app-supervisor
|
||||
volumes:
|
||||
- ./storage-worker-a:/app/nocobase/storage
|
||||
ports:
|
||||
- '15000:80'
|
||||
worker_b:
|
||||
container_name: nocobase-worker-b
|
||||
image: nocobase/nocobase:alpha
|
||||
restart: always
|
||||
platform: linux/amd64
|
||||
networks:
|
||||
- nocobase
|
||||
depends_on:
|
||||
- redis
|
||||
environment:
|
||||
- DB_DIALECT=postgres
|
||||
- DB_HOST=postgres
|
||||
- DB_PORT=5432
|
||||
- DB_DATABASE=nocobase_worker_b
|
||||
- DB_USER=postgres
|
||||
- DB_PASSWORD=postgres
|
||||
- TZ=Asia/Shanghai
|
||||
- APP_MODE=worker
|
||||
- APP_DISCOVERY_ADAPTER=remote
|
||||
- APP_PROCESS_ADAPTER=local
|
||||
- APP_SUPERVISOR_REDIS_URL=redis://redis:6379/0
|
||||
- APP_COMMAND_ADAPTER=redis
|
||||
- APP_COMMAND_REDIS_URL=redis://redis:6379/0
|
||||
- ENVIRONMENT_NAME=env_b
|
||||
- ENVIRONMENT_URL=http://localhost:16000
|
||||
- ENVIRONMENT_PROXY_URL=http://worker_b
|
||||
- APPEND_PRESET_BUILT_IN_PLUGINS=@nocobase/plugin-app-supervisor
|
||||
volumes:
|
||||
- ./storage-worker-b:/app/nocobase/storage
|
||||
ports:
|
||||
- '16000:80'
|
||||
```
|
||||
|
||||
## Guía de uso
|
||||
|
||||
Las operaciones básicas son iguales que en [modo de memoria compartida](./local.md). Aquí se describen los puntos específicos del multi-entorno.
|
||||
|
||||
### Lista de entornos
|
||||
|
||||
Tras desplegar, entra en **App supervisor** y en la pestaña **Environment** verás los entornos Worker registrados: identificador, versión, URL y estado. Los Workers reportan heartbeat cada 2 minutos.
|
||||
|
||||

|
||||
|
||||
### Crear aplicación
|
||||
|
||||
Al crear una aplicación puedes elegir uno o más entornos de ejecución. Normalmente basta con uno. Solo usa varios cuando exista [services splitting](/cluster-mode/services-splitting).
|
||||
|
||||

|
||||
|
||||
### Lista de aplicaciones
|
||||
|
||||
La lista muestra entorno de ejecución y estado actual por aplicación. Si está desplegada en varios entornos, verás múltiples estados.
|
||||
|
||||

|
||||
|
||||
### Arranque de aplicaciones
|
||||
|
||||
Como el arranque puede escribir datos iniciales en DB, para evitar condiciones de carrera en varios entornos el inicio se encola.
|
||||
|
||||

|
||||
|
||||
### Proxy de acceso
|
||||
|
||||
Las apps Worker se pueden acceder mediante la subruta `/apps/:appName/admin` de la app de entrada.
|
||||
|
||||

|
||||
|
||||
Si una app está en varios entornos, hay que elegir el entorno objetivo del proxy.
|
||||
|
||||

|
||||
|
||||
Por defecto se usa `ENVIRONMENT_URL`, que debe ser accesible desde la red de la app de entrada. Para otra dirección de proxy, define `ENVIRONMENT_PROXY_URL`.
|
||||
@@ -1,112 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
---
|
||||
:::tip Aviso de traducción por IA
|
||||
Esta documentación ha sido traducida automáticamente por IA.
|
||||
:::
|
||||
|
||||
|
||||
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
---
|
||||
|
||||
# Multiespacio
|
||||
|
||||
## Introducción
|
||||
|
||||
El **plugin Multiespacio** le permite crear múltiples espacios de datos independientes dentro de una única instancia de aplicación, mediante un aislamiento lógico.
|
||||
|
||||
#### Casos de uso
|
||||
- **Múltiples tiendas o fábricas**: Los procesos de negocio y las configuraciones del sistema son altamente consistentes (por ejemplo, gestión unificada de inventario, planificación de producción, estrategias de ventas y plantillas de informes), pero es necesario asegurar que los datos de cada unidad de negocio no interfieran entre sí.
|
||||
- **Gestión de múltiples organizaciones o subsidiarias**: Varias organizaciones o subsidiarias de un grupo empresarial comparten la misma plataforma, pero cada marca tiene datos independientes de clientes, productos y pedidos.
|
||||
|
||||
## Instalación
|
||||
|
||||
En el gestor de plugins, busque el **plugin Multiespacio** y actívelo.
|
||||
|
||||

|
||||
|
||||
## Manual de usuario
|
||||
|
||||
### Gestión de multiespacios
|
||||
|
||||
Después de activar el plugin, vaya a la página de configuración **"Usuarios y Permisos"** y cambie al panel de **Espacios** para gestionar los espacios.
|
||||
|
||||
> Inicialmente, existe un **Espacio no asignado** incorporado, que se utiliza principalmente para ver datos antiguos que no están asociados a ningún espacio.
|
||||
|
||||

|
||||
|
||||
#### Crear un espacio
|
||||
|
||||
Haga clic en el botón "Añadir espacio" para crear un nuevo espacio:
|
||||
|
||||
.png)
|
||||
|
||||
#### Asignar usuarios
|
||||
|
||||
Después de seleccionar un espacio creado, puede configurar los usuarios que pertenecen a ese espacio en el lado derecho:
|
||||
|
||||
> **Consejo:** Después de asignar usuarios a un espacio, deberá **actualizar la página manualmente** para que la lista de cambio de espacios en la esquina superior derecha se actualice y muestre el espacio más reciente.
|
||||
|
||||

|
||||
|
||||
### Cambiar y ver multiespacios
|
||||
|
||||
Puede cambiar el espacio actual en la esquina superior derecha.
|
||||
Cuando haga clic en el **icono del ojo** a la derecha (en su estado resaltado), podrá ver datos de múltiples espacios simultáneamente.
|
||||
|
||||

|
||||
|
||||
### Gestión de datos en multiespacios
|
||||
|
||||
Después de activar el plugin, el sistema añadirá automáticamente un **campo de espacio** al crear una **colección** (tabla de datos).
|
||||
**Solo las colecciones que contengan este campo se incluirán en la lógica de gestión de espacios.**
|
||||
|
||||

|
||||
|
||||
Para las colecciones existentes, puede añadir manualmente un campo de espacio para habilitar la gestión de espacios:
|
||||
|
||||

|
||||
|
||||
#### Lógica predeterminada
|
||||
|
||||
En las colecciones que contienen el campo de espacio, el sistema aplicará automáticamente la siguiente lógica:
|
||||
|
||||
1. Al crear datos, se asocian automáticamente con el espacio seleccionado actualmente.
|
||||
2. Al filtrar datos, se limitan automáticamente a los datos del espacio seleccionado actualmente.
|
||||
|
||||
### Clasificación de datos antiguos en multiespacios
|
||||
|
||||
Para los datos que existían antes de activar el plugin Multiespacio, puede clasificarlos en espacios siguiendo estos pasos:
|
||||
|
||||
#### 1. Añadir el campo de espacio
|
||||
|
||||
Añada manualmente el campo de espacio a la colección antigua:
|
||||
|
||||

|
||||
|
||||
#### 2. Asignar usuarios al Espacio no asignado
|
||||
|
||||
Asocie al usuario que gestiona los datos antiguos con todos los espacios, incluyendo el **Espacio no asignado**, para poder ver los datos que aún no han sido asignados a un espacio:
|
||||
|
||||

|
||||
|
||||
#### 3. Cambiar para ver todos los datos del espacio
|
||||
|
||||
En la parte superior, seleccione ver los datos de todos los espacios:
|
||||
|
||||

|
||||
|
||||
#### 4. Configurar una página para la asignación de datos antiguos
|
||||
|
||||
Cree una nueva página para la asignación de datos antiguos. Muestre el "campo de espacio" en la **página de lista** y en la **página de edición** para poder ajustar manualmente el espacio de pertenencia.
|
||||
|
||||

|
||||
|
||||
Haga que el campo de espacio sea editable.
|
||||
|
||||

|
||||
|
||||
#### 5. Asignar datos a espacios manualmente
|
||||
|
||||
A través de la página creada anteriormente, edite manualmente los datos para asignar gradualmente el espacio correcto a los datos antiguos (también puede configurar la edición masiva por su cuenta).
|
||||
@@ -0,0 +1,102 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
---
|
||||
|
||||
# Multi-space
|
||||
|
||||
<PluginInfo name="multi-space" licenseBundled="professional"></PluginInfo>
|
||||
|
||||
## Introducción
|
||||
|
||||
El **plugin Multi-space** permite crear múltiples espacios de datos independientes dentro de una sola instancia mediante aislamiento lógico.
|
||||
|
||||
#### Escenarios
|
||||
- **Múltiples tiendas o fábricas**: procesos y configuración similares, con aislamiento de datos por unidad.
|
||||
- **Múltiples organizaciones o filiales**: misma plataforma compartida, con datos de clientes/productos/pedidos separados por marca.
|
||||
|
||||
## Instalación
|
||||
|
||||
Activa el plugin **Multi-Space** desde el gestor de plugins.
|
||||
|
||||

|
||||
|
||||
## Guía de uso
|
||||
|
||||
### Gestión de espacios
|
||||
|
||||
Tras activar el plugin, entra en **Users & Permissions** y cambia a la pestaña **Spaces**.
|
||||
|
||||
> Inicialmente existe un **Unassigned Space** para visualizar datos antiguos no asociados.
|
||||
|
||||

|
||||
|
||||
#### Crear espacio
|
||||
|
||||
Pulsa **Add space** para crear un nuevo espacio.
|
||||
|
||||
.png)
|
||||
|
||||
#### Asignar usuarios
|
||||
|
||||
Selecciona un espacio y configura sus usuarios en el panel derecho.
|
||||
|
||||
> **Nota:** después de asignar usuarios, hay que **refrescar manualmente** para que se actualice la lista de cambio de espacio (arriba a la derecha).
|
||||
|
||||

|
||||
|
||||
### Cambiar y ver espacios
|
||||
|
||||
Puedes cambiar el espacio actual arriba a la derecha. Al hacer clic en el **icono de ojo** (resaltado), puedes ver datos de varios espacios a la vez.
|
||||
|
||||

|
||||
|
||||
### Gestión de datos en multi-space
|
||||
|
||||
Al habilitar el plugin, el sistema agrega automáticamente un **campo Space** al crear una colección. **Solo las colecciones con este campo** se incluyen en la lógica de espacios.
|
||||
|
||||

|
||||
|
||||
Para colecciones existentes, añade el campo Space manualmente.
|
||||
|
||||

|
||||
|
||||
#### Lógica por defecto
|
||||
|
||||
1. Al crear datos, se asocian automáticamente al espacio seleccionado.
|
||||
2. Al filtrar, se limitan automáticamente al espacio seleccionado.
|
||||
|
||||
### Clasificar datos antiguos por espacio
|
||||
|
||||
Para datos anteriores a la activación del plugin:
|
||||
|
||||
#### 1. Añadir campo Space
|
||||
|
||||
Añade manualmente el campo Space a las tablas antiguas.
|
||||
|
||||

|
||||
|
||||
#### 2. Asignar usuarios al Unassigned Space
|
||||
|
||||
Asocia los usuarios que gestionan datos antiguos a todos los espacios, incluyendo **Unassigned Space**.
|
||||
|
||||

|
||||
|
||||
#### 3. Ver datos de todos los espacios
|
||||
|
||||
En la parte superior, activa la vista de todos los espacios.
|
||||
|
||||

|
||||
|
||||
#### 4. Configurar página de asignación
|
||||
|
||||
Crea una página para asignar datos antiguos y muestra el campo Space en la **lista** y en la **página de edición**.
|
||||
|
||||

|
||||
|
||||
Configura el campo Space como editable.
|
||||
|
||||

|
||||
|
||||
#### 5. Asignar manualmente el espacio
|
||||
|
||||
Desde esa página, edita los datos y asigna progresivamente el espacio correcto (también puedes configurar edición por lote).
|
||||
@@ -1,17 +1,28 @@
|
||||
[
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Aperçu",
|
||||
"link": "/multi-app/"
|
||||
"label": "Multi-app",
|
||||
"items": [
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Vue d'ensemble",
|
||||
"link": "/multi-app/multi-app"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Mode mémoire partagée",
|
||||
"link": "/multi-app/multi-app/local"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Mode multi-environnement",
|
||||
"link": "/multi-app/multi-app/remote"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Multi-application",
|
||||
"link": "/multi-app/multi-app"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Multi-espace",
|
||||
"label": "Multi-space",
|
||||
"link": "/multi-app/multi-space"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-app"
|
||||
---
|
||||
:::tip Avis de traduction IA
|
||||
Cette documentation a été traduite automatiquement par IA.
|
||||
:::
|
||||
|
||||
|
||||
|
||||
# Multi-applications
|
||||
|
||||
## Introduction
|
||||
@@ -1,133 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-app-manager"
|
||||
---
|
||||
:::tip Avis de traduction IA
|
||||
Cette documentation a été traduite automatiquement par IA.
|
||||
:::
|
||||
|
||||
|
||||
# Multi-applications
|
||||
|
||||
|
||||
## Introduction
|
||||
|
||||
Le **plugin Multi-applications** vous permet de créer et de gérer dynamiquement plusieurs applications indépendantes, sans nécessiter de déploiement séparé. Chaque sous-application est une instance entièrement indépendante, dotée de sa propre base de données, de ses plugins et de sa configuration.
|
||||
|
||||
#### Cas d'utilisation
|
||||
- **Multi-location** : Offrez des instances d'application indépendantes, où chaque client dispose de ses propres données, configurations de plugins et système de permissions.
|
||||
- **Systèmes principaux et sous-systèmes pour différents domaines d'activité** : Un système de grande envergure composé de plusieurs applications plus petites déployées indépendamment.
|
||||
|
||||
|
||||
:::warning
|
||||
Le plugin Multi-applications ne fournit pas en soi de capacités de partage d'utilisateurs.
|
||||
Si vous avez besoin de partager des utilisateurs entre plusieurs applications, vous pouvez l'utiliser en combinaison avec le **[plugin d'authentification](/auth-verification)**.
|
||||
:::
|
||||
|
||||
|
||||
## Installation
|
||||
|
||||
Dans le gestionnaire de plugins, trouvez le plugin **Multi-applications** et activez-le.
|
||||
|
||||

|
||||
|
||||
|
||||
## Guide d'utilisation
|
||||
|
||||
|
||||
### Création d'une sous-application
|
||||
|
||||
Dans le menu des paramètres système, cliquez sur « Multi-applications » pour accéder à la page de gestion des multi-applications :
|
||||
|
||||

|
||||
|
||||
Cliquez sur le bouton « Ajouter » pour créer une nouvelle sous-application :
|
||||
|
||||

|
||||
|
||||
#### Description des champs du formulaire
|
||||
|
||||
* **Nom** : Identifiant de la sous-application, unique globalement.
|
||||
* **Nom d'affichage** : Le nom de la sous-application tel qu'il apparaît dans l'interface.
|
||||
* **Mode de démarrage** :
|
||||
* **Démarrer à la première visite** : La sous-application ne démarre que lorsqu'un utilisateur y accède pour la première fois via une URL.
|
||||
* **Démarrer avec l'application principale** : La sous-application démarre en même temps que l'application principale (cela augmentera le temps de démarrage de l'application principale).
|
||||
* **Port** : Le numéro de port utilisé par la sous-application lors de son exécution.
|
||||
* **Domaine personnalisé** : Configurez un sous-domaine indépendant pour la sous-application.
|
||||
* **Épingler au menu** : Épinglez l'entrée de la sous-application sur le côté gauche de la barre de navigation supérieure.
|
||||
* **Connexion à la base de données** : Permet de configurer la source de données pour la sous-application, en prenant en charge les trois méthodes suivantes :
|
||||
* **Nouvelle base de données** : Réutilisez le service de données actuel pour créer une base de données indépendante.
|
||||
* **Nouvelle connexion de données** : Configurez un service de base de données entièrement nouveau.
|
||||
* **Mode Schema** : Créez un schéma indépendant pour la sous-application dans PostgreSQL.
|
||||
* **Mise à niveau** : Si la base de données connectée contient une ancienne version de la structure de données NocoBase, elle sera automatiquement mise à niveau vers la version actuelle.
|
||||
|
||||
|
||||
### Démarrage et arrêt d'une sous-application
|
||||
|
||||
Cliquez sur le bouton **Démarrer** pour lancer la sous-application ;
|
||||
> Si l'option *« Démarrer à la première visite »* a été cochée lors de la création, elle démarrera automatiquement lors de la première visite.
|
||||
|
||||
Cliquez sur le bouton **Afficher** pour ouvrir la sous-application dans un nouvel onglet.
|
||||
|
||||

|
||||
|
||||
|
||||
### État et journaux de la sous-application
|
||||
|
||||
Dans la liste, vous pouvez consulter l'utilisation de la mémoire et du CPU de chaque application.
|
||||
|
||||

|
||||
|
||||
Cliquez sur le bouton **Journaux** pour consulter les journaux d'exécution de la sous-application.
|
||||
> Si la sous-application est inaccessible après le démarrage (par exemple, en raison d'une base de données corrompue), vous pouvez utiliser les journaux pour résoudre le problème.
|
||||
|
||||

|
||||
|
||||
|
||||
### Suppression d'une sous-application
|
||||
|
||||
Cliquez sur le bouton **Supprimer** pour retirer la sous-application.
|
||||
> Lors de la suppression, vous pouvez choisir de supprimer également la base de données. Veuillez procéder avec prudence, car cette action est irréversible.
|
||||
|
||||
|
||||
### Accès à une sous-application
|
||||
Par défaut, les sous-applications sont accessibles via `/_app/:appName/admin/`, par exemple :
|
||||
```
|
||||
http://localhost:13000/_app/a_7zkxoarusnx/admin/
|
||||
```
|
||||
Vous pouvez également configurer un sous-domaine indépendant pour la sous-application. Vous devrez résoudre le domaine vers l'adresse IP actuelle, et si vous utilisez Nginx, vous devrez également ajouter le domaine à la configuration Nginx.
|
||||
|
||||
|
||||
### Gestion des sous-applications via la ligne de commande
|
||||
|
||||
Dans le répertoire racine du projet, vous pouvez utiliser la ligne de commande pour gérer les instances de sous-applications via **PM2** :
|
||||
|
||||
```bash
|
||||
yarn nocobase pm2 list # Afficher la liste des instances en cours d'exécution
|
||||
yarn nocobase pm2 stop [appname] # Arrêter un processus de sous-application spécifique
|
||||
yarn nocobase pm2 delete [appname] # Supprimer un processus de sous-application spécifique
|
||||
yarn nocobase pm2 kill # Terminer de force tous les processus démarrés (peut inclure l'instance de l'application principale)
|
||||
```
|
||||
|
||||
### Migration des données de l'ancienne fonctionnalité Multi-applications
|
||||
|
||||
Accédez à l'ancienne page de gestion des multi-applications et cliquez sur le bouton **Migrer les données vers la nouvelle fonctionnalité Multi-applications** pour effectuer la migration des données.
|
||||
|
||||

|
||||
|
||||
|
||||
## Questions fréquentes
|
||||
|
||||
#### 1. Gestion des plugins
|
||||
Les sous-applications peuvent utiliser les mêmes plugins que l'application principale (y compris les versions), mais elles peuvent être configurées et utilisées indépendamment.
|
||||
|
||||
#### 2. Isolation de la base de données
|
||||
Les sous-applications peuvent être configurées avec des bases de données indépendantes. Si vous souhaitez partager des données entre les applications, vous pouvez le faire via des sources de données externes.
|
||||
|
||||
#### 3. Sauvegarde et migration des données
|
||||
Actuellement, les sauvegardes de données dans l'application principale n'incluent pas les données des sous-applications (seulement les informations de base des sous-applications). Vous devez sauvegarder et migrer manuellement les données au sein de chaque sous-application.
|
||||
|
||||
#### 4. Déploiement et mises à jour
|
||||
La version d'une sous-application sera automatiquement mise à niveau en même temps que l'application principale, garantissant ainsi la cohérence des versions entre l'application principale et les sous-applications.
|
||||
|
||||
#### 5. Gestion des ressources
|
||||
La consommation de ressources de chaque sous-application est globalement la même que celle de l'application principale. Actuellement, une seule application utilise environ 500 à 600 Mo de mémoire.
|
||||
@@ -0,0 +1,66 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# Gestion multi-applications
|
||||
|
||||
## Présentation
|
||||
|
||||
La gestion multi-applications est une solution unifiée fournie par NocoBase. Elle permet de créer et gérer plusieurs instances NocoBase **physiquement isolées** sur un ou plusieurs environnements d'exécution. Avec **AppSupervisor**, les utilisateurs administrent plusieurs applications depuis une entrée unique.
|
||||
|
||||
## Application unique
|
||||
|
||||
Au début d'un projet, la plupart des équipes commencent avec une seule application.
|
||||
|
||||
Dans ce mode, une seule instance NocoBase est déployée. Toute la logique métier, les données et les utilisateurs y sont centralisés. Le déploiement est simple et le coût de configuration faible.
|
||||
|
||||
Avec la croissance, ce modèle atteint ses limites :
|
||||
|
||||
- Accumulation de fonctionnalités et complexité croissante
|
||||
- Isolation difficile entre domaines métier
|
||||
- Coûts de maintenance et d'extension en hausse
|
||||
|
||||
Il devient alors préférable de répartir les domaines métier dans plusieurs applications.
|
||||
|
||||
## Multi-application en mémoire partagée
|
||||
|
||||
Si vous souhaitez séparer les domaines métier sans introduire une architecture d'exploitation complexe, vous pouvez utiliser le mode multi-application en mémoire partagée.
|
||||
|
||||
Dans ce mode, plusieurs applications tournent dans une seule instance NocoBase. Chaque application est indépendante, peut avoir sa propre base de données, et être créée, démarrée ou arrêtée séparément. En revanche, elles partagent le même processus et la même mémoire.
|
||||
|
||||

|
||||
|
||||
Avantages :
|
||||
|
||||
- Découpage métier par application
|
||||
- Configuration et fonctionnalités mieux structurées
|
||||
- Moins de ressources qu'une architecture multi-processus ou multi-conteneurs
|
||||
|
||||
Comme tout tourne dans un même processus, CPU et mémoire sont partagés. Une surcharge ou panne d'une application peut affecter les autres.
|
||||
|
||||
Quand le nombre d'applications augmente ou que les exigences d'isolation/stabilité montent, il faut faire évoluer l'architecture.
|
||||
|
||||
## Déploiement hybride multi-environnement
|
||||
|
||||
À grande échelle, le mode mémoire partagée rencontre des défis de contention des ressources, stabilité et sécurité. Le **déploiement hybride multi-environnement** permet d'aller plus loin.
|
||||
|
||||
Le principe : introduire une **application d'entrée** (plan de contrôle) et déployer plusieurs instances NocoBase comme environnements d'exécution qui hébergent réellement les applications métier.
|
||||
|
||||
Responsabilités de l'application d'entrée :
|
||||
|
||||
- Création, configuration et cycle de vie des applications
|
||||
- Distribution des commandes de gestion et agrégation des états
|
||||
|
||||
Responsabilités des environnements d'exécution :
|
||||
|
||||
- Héberger et exécuter les applications métier
|
||||
|
||||
Côté utilisateur, la création et la gestion restent centralisées. En interne :
|
||||
|
||||
- Les applications peuvent s'exécuter sur des nœuds/cluster différents
|
||||
- Chaque application peut utiliser sa propre base et son middleware
|
||||
- Les applications à forte charge peuvent être isolées ou scalées indépendamment
|
||||
|
||||

|
||||
|
||||
Ce modèle convient aux plateformes SaaS, à de nombreux environnements de démonstration et aux scénarios multi-tenant.
|
||||
@@ -0,0 +1,106 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# Mode mémoire partagée
|
||||
|
||||
## Introduction
|
||||
|
||||
Lorsque vous souhaitez séparer les domaines métier au niveau application sans complexifier l'infrastructure, vous pouvez utiliser le mode multi-application en mémoire partagée.
|
||||
|
||||
Dans ce mode, plusieurs applications s'exécutent dans une seule instance NocoBase. Chaque application reste indépendante (base dédiée, création/démarrage/arrêt séparés), mais partage le même processus et la même mémoire.
|
||||
|
||||
## Guide d'utilisation
|
||||
|
||||
### Variables d'environnement
|
||||
|
||||
Avant d'activer les fonctionnalités multi-applications, vérifiez les variables suivantes au démarrage de NocoBase :
|
||||
|
||||
```bash
|
||||
APP_DISCOVERY_ADAPTER=local
|
||||
APP_PROCESS_ADAPTER=local
|
||||
```
|
||||
|
||||
### Créer une application
|
||||
|
||||
Dans **System Settings**, cliquez sur **App supervisor** pour accéder à la gestion des applications.
|
||||
|
||||

|
||||
|
||||
Cliquez sur **Add** pour créer une nouvelle application.
|
||||
|
||||

|
||||
|
||||
#### Options de configuration
|
||||
|
||||
| Option | Description |
|
||||
| --- | --- |
|
||||
| **Nom d'affichage** | Nom affiché dans l'interface |
|
||||
| **ID application** | Identifiant unique global |
|
||||
| **Mode de démarrage** | - Démarrer à la première visite : au premier accès URL<br>- Démarrer avec l'application principale : au démarrage de l'app principale (augmente le temps de démarrage) |
|
||||
| **Environnement** | En mode mémoire partagée, seul `local` est disponible |
|
||||
| **Base de données** | Configure la source principale :<br>- Nouvelle base : réutilise le service DB actuel et crée une base dédiée<br>- Nouvelle connexion : se connecte à un autre service DB<br>- Nouveau schéma : avec PostgreSQL, crée un schéma dédié |
|
||||
| **Upgrade** | Autoriser la mise à niveau automatique des données NocoBase plus anciennes |
|
||||
| **Secret JWT** | Génère un secret JWT indépendant pour isoler les sessions |
|
||||
| **Domaine personnalisé** | Configure un domaine d'accès dédié |
|
||||
|
||||
### Démarrer une application
|
||||
|
||||
Cliquez sur **Start**.
|
||||
|
||||
> Si _Start on first visit_ a été sélectionné à la création, l'application démarre automatiquement au premier accès.
|
||||
|
||||

|
||||
|
||||
### Accéder à une application
|
||||
|
||||
Cliquez sur **Visit** pour ouvrir l'application dans un nouvel onglet.
|
||||
|
||||
Par défaut, l'URL est `/apps/:appName/admin/`, par exemple :
|
||||
|
||||
```bash
|
||||
http://localhost:13000/apps/a_7zkxoarusnx/admin/
|
||||
```
|
||||
|
||||
Vous pouvez aussi configurer un domaine dédié. Le domaine doit pointer vers l'IP courante ; avec Nginx, il faut également l'ajouter à la configuration.
|
||||
|
||||
### Arrêter une application
|
||||
|
||||
Cliquez sur **Stop**.
|
||||
|
||||

|
||||
|
||||
### État des applications
|
||||
|
||||
L'état courant de chaque application est affiché dans la liste.
|
||||
|
||||

|
||||
|
||||
### Supprimer une application
|
||||
|
||||
Cliquez sur **Delete**.
|
||||
|
||||

|
||||
|
||||
## FAQ
|
||||
|
||||
### 1. Gestion des plugins
|
||||
|
||||
Les applications utilisent les mêmes plugins (et versions) que l'application principale, mais la configuration reste isolée par application.
|
||||
|
||||
### 2. Isolation base de données
|
||||
|
||||
Chaque application peut utiliser une base indépendante. Pour partager des données, utilisez des sources externes.
|
||||
|
||||
### 3. Sauvegarde et migration
|
||||
|
||||
Les sauvegardes faites dans l'application principale n'incluent pas les données des autres applications (uniquement des métadonnées de base). Sauvegarde/migration doivent être faites dans chaque application.
|
||||
|
||||
### 4. Déploiement et mises à jour
|
||||
|
||||
En mode mémoire partagée, les versions des applications suivent automatiquement celle de l'application principale.
|
||||
|
||||
### 5. Sessions applicatives
|
||||
|
||||
- Avec un secret JWT indépendant, la session est isolée de l'application principale et des autres applications. En sous-chemins d'un même domaine, un changement d'application peut imposer une reconnexion (token LocalStorage). Des domaines séparés sont recommandés.
|
||||
- Sans secret JWT indépendant, la session est partagée avec l'application principale. Pratique, mais plus risqué : en cas d'ID utilisateur qui se chevauchent, des accès inter-applications non autorisés peuvent survenir.
|
||||
@@ -0,0 +1,229 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# Mode multi-environnement
|
||||
|
||||
## Introduction
|
||||
|
||||
Le mode multi-application en mémoire partagée présente des avantages de déploiement et d'exploitation. Mais quand le nombre d'applications et la complexité augmentent, une instance unique peut atteindre ses limites. Dans ce cas, adoptez un déploiement hybride multi-environnement.
|
||||
|
||||
Le système déploie une **application d'entrée** comme centre de gestion/ordonnancement, et plusieurs instances NocoBase comme environnements d'exécution indépendants. Les environnements sont isolés tout en collaborant.
|
||||
|
||||
Au niveau infrastructure, les environnements peuvent être déployés en processus distincts, conteneurs Docker, ou plusieurs Deployments Kubernetes.
|
||||
|
||||
## Déploiement
|
||||
|
||||
Dans ce mode :
|
||||
|
||||
- L'**application d'entrée (Supervisor)** gère centralement applications et environnements
|
||||
- Les **applications Worker** exécutent réellement les charges métier
|
||||
- Les configurations applications/environnements sont mises en cache via Redis
|
||||
- Les commandes et synchronisations d'état entre Supervisor et Workers passent par Redis
|
||||
|
||||
La création d'environnements n'est pas encore fournie. Les Workers doivent être déployés et configurés manuellement.
|
||||
|
||||
### Dépendances d'architecture
|
||||
|
||||
Avant déploiement :
|
||||
|
||||
- **Redis**
|
||||
- Cache des configurations applications/environnements
|
||||
- Canal de communication de commandes entre Supervisor et Workers
|
||||
|
||||
- **Base de données**
|
||||
- Services de base utilisés par Supervisor et Workers
|
||||
|
||||
### Application d'entrée (Supervisor)
|
||||
|
||||
Le Supervisor gère la création d'applications, démarrage/arrêt, planification des environnements et proxy d'accès.
|
||||
|
||||
Variables d'environnement Supervisor :
|
||||
|
||||
```bash
|
||||
# Application mode
|
||||
APP_MODE=supervisor
|
||||
# Application discovery adapter
|
||||
APP_DISCOVERY_ADAPTER=remote
|
||||
# Application process adapter
|
||||
APP_PROCESS_ADAPTER=remote
|
||||
# Redis for application and environment configuration cache
|
||||
APP_SUPERVISOR_REDIS_URL=
|
||||
# Command communication adapter
|
||||
APP_COMMAND_ADPATER=redis
|
||||
# Redis for command communication
|
||||
APP_COMMAND_REDIS_URL=
|
||||
```
|
||||
|
||||
### Application Worker
|
||||
|
||||
Le Worker héberge et exécute les instances NocoBase.
|
||||
|
||||
Variables d'environnement Worker :
|
||||
|
||||
```bash
|
||||
# Application mode
|
||||
APP_MODE=worker
|
||||
# Application discovery adapter
|
||||
APP_DISCOVERY_ADAPTER=remote
|
||||
# Application process adapter
|
||||
APP_PROCESS_ADAPTER=local
|
||||
# Redis for application and environment configuration cache
|
||||
APP_SUPERVISOR_REDIS_URL=
|
||||
# Command communication adapter
|
||||
APP_COMMAND_ADPATER=redis
|
||||
# Redis for command communication
|
||||
APP_COMMAND_REDIS_URL=
|
||||
# Environment identifier
|
||||
ENVIRONMENT_NAME=
|
||||
# Environment access URL
|
||||
ENVIRONMENT_URL=
|
||||
# Environment proxy access URL
|
||||
ENVIRONMENT_PROXY_URL=
|
||||
```
|
||||
|
||||
### Exemple Docker Compose
|
||||
|
||||
Exemple de déploiement avec un Supervisor et deux Workers.
|
||||
|
||||
```yaml
|
||||
networks:
|
||||
nocobase:
|
||||
driver: bridge
|
||||
|
||||
services:
|
||||
redis:
|
||||
networks:
|
||||
- nocobase
|
||||
image: redis/redis-stack-server:latest
|
||||
supervisor:
|
||||
container_name: nocobase-supervisor
|
||||
image: nocobase/nocobase:alpha
|
||||
restart: always
|
||||
platform: linux/amd64
|
||||
networks:
|
||||
- nocobase
|
||||
depends_on:
|
||||
- redis
|
||||
environment:
|
||||
- DB_DIALECT=postgres
|
||||
- DB_HOST=postgres
|
||||
- DB_PORT=5432
|
||||
- DB_DATABASE=nocobase_supervisor
|
||||
- DB_USER=postgres
|
||||
- DB_PASSWORD=postgres
|
||||
- TZ=Asia/Shanghai
|
||||
- APP_MODE=supervisor
|
||||
- APP_DISCOVERY_ADAPTER=remote
|
||||
- APP_PROCESS_ADAPTER=remote
|
||||
- APP_SUPERVISOR_REDIS_URL=redis://redis:6379/0
|
||||
- APP_COMMAND_ADAPTER=redis
|
||||
- APP_COMMAND_REDIS_URL=redis://redis:6379/0
|
||||
- APPEND_PRESET_BUILT_IN_PLUGINS=@nocobase/plugin-app-supervisor
|
||||
volumes:
|
||||
- ./storage-supervisor:/app/nocobase/storage
|
||||
ports:
|
||||
- '14000:80'
|
||||
worker_a:
|
||||
container_name: nocobase-worker-a
|
||||
image: nocobase/nocobase:alpha
|
||||
restart: always
|
||||
platform: linux/amd64
|
||||
networks:
|
||||
- nocobase
|
||||
depends_on:
|
||||
- redis
|
||||
environment:
|
||||
- DB_DIALECT=postgres
|
||||
- DB_HOST=postgres
|
||||
- DB_PORT=5432
|
||||
- DB_DATABASE=nocobase_worker_a
|
||||
- DB_USER=postgres
|
||||
- DB_PASSWORD=postgres
|
||||
- TZ=Asia/Shanghai
|
||||
- APP_MODE=worker
|
||||
- APP_DISCOVERY_ADAPTER=remote
|
||||
- APP_PROCESS_ADAPTER=local
|
||||
- APP_SUPERVISOR_REDIS_URL=redis://redis:6379/0
|
||||
- APP_COMMAND_ADAPTER=redis
|
||||
- APP_COMMAND_REDIS_URL=redis://redis:6379/0
|
||||
- ENVIRONMENT_NAME=env_a
|
||||
- ENVIRONMENT_URL=http://localhost:15000
|
||||
- ENVIRONMENT_PROXY_URL=http://worker_a
|
||||
- APPEND_PRESET_BUILT_IN_PLUGINS=@nocobase/plugin-app-supervisor
|
||||
volumes:
|
||||
- ./storage-worker-a:/app/nocobase/storage
|
||||
ports:
|
||||
- '15000:80'
|
||||
worker_b:
|
||||
container_name: nocobase-worker-b
|
||||
image: nocobase/nocobase:alpha
|
||||
restart: always
|
||||
platform: linux/amd64
|
||||
networks:
|
||||
- nocobase
|
||||
depends_on:
|
||||
- redis
|
||||
environment:
|
||||
- DB_DIALECT=postgres
|
||||
- DB_HOST=postgres
|
||||
- DB_PORT=5432
|
||||
- DB_DATABASE=nocobase_worker_b
|
||||
- DB_USER=postgres
|
||||
- DB_PASSWORD=postgres
|
||||
- TZ=Asia/Shanghai
|
||||
- APP_MODE=worker
|
||||
- APP_DISCOVERY_ADAPTER=remote
|
||||
- APP_PROCESS_ADAPTER=local
|
||||
- APP_SUPERVISOR_REDIS_URL=redis://redis:6379/0
|
||||
- APP_COMMAND_ADAPTER=redis
|
||||
- APP_COMMAND_REDIS_URL=redis://redis:6379/0
|
||||
- ENVIRONMENT_NAME=env_b
|
||||
- ENVIRONMENT_URL=http://localhost:16000
|
||||
- ENVIRONMENT_PROXY_URL=http://worker_b
|
||||
- APPEND_PRESET_BUILT_IN_PLUGINS=@nocobase/plugin-app-supervisor
|
||||
volumes:
|
||||
- ./storage-worker-b:/app/nocobase/storage
|
||||
ports:
|
||||
- '16000:80'
|
||||
```
|
||||
|
||||
## Guide d'utilisation
|
||||
|
||||
Les opérations de base sont identiques au mode mémoire partagée, voir [mode mémoire partagée](./local.md). Ici, focus sur la configuration multi-environnement.
|
||||
|
||||
### Liste des environnements
|
||||
|
||||
Après déploiement, dans **App supervisor** > onglet **Environment**, vous voyez les environnements Worker enregistrés (identifiant, version, URL, statut). Les Workers envoient un heartbeat toutes les 2 minutes.
|
||||
|
||||

|
||||
|
||||
### Création d'application
|
||||
|
||||
À la création, vous pouvez sélectionner un ou plusieurs environnements. Un seul suffit généralement. Choisissez-en plusieurs seulement en cas de [services splitting](/cluster-mode/services-splitting).
|
||||
|
||||

|
||||
|
||||
### Liste des applications
|
||||
|
||||
La liste affiche l'environnement d'exécution et l'état de chaque application. Si une application est déployée sur plusieurs environnements, plusieurs états sont affichés.
|
||||
|
||||

|
||||
|
||||
### Démarrage d'application
|
||||
|
||||
Le démarrage peut écrire des données d'initialisation en base. Pour éviter les conditions de course, les démarrages multi-environnements sont mis en file d'attente.
|
||||
|
||||

|
||||
|
||||
### Proxy d'accès
|
||||
|
||||
Les applications Worker peuvent être accédées via le sous-chemin `/apps/:appName/admin` de l'application d'entrée.
|
||||
|
||||

|
||||
|
||||
Si une application est déployée sur plusieurs environnements, il faut choisir l'environnement cible du proxy.
|
||||
|
||||

|
||||
|
||||
Par défaut, le proxy utilise `ENVIRONMENT_URL` (doit être joignable depuis le réseau de l'application d'entrée). Pour une URL différente, utilisez `ENVIRONMENT_PROXY_URL`.
|
||||
@@ -1,109 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
---
|
||||
:::tip Avis de traduction IA
|
||||
Cette documentation a été traduite automatiquement par IA.
|
||||
:::
|
||||
|
||||
|
||||
|
||||
# Multi-espace
|
||||
|
||||
## Introduction
|
||||
|
||||
Le **plugin Multi-espace** permet de créer plusieurs espaces de données indépendants au sein d'une seule instance d'application, grâce à une isolation logique.
|
||||
|
||||
#### Cas d'utilisation
|
||||
- **Plusieurs magasins ou usines** : Les processus métier et les configurations système sont très cohérents (par exemple, gestion unifiée des stocks, planification de la production, stratégies de vente et modèles de rapports), mais il est essentiel de garantir que les données de chaque unité commerciale ne s'interfèrent pas mutuellement.
|
||||
- **Gestion multi-organisations ou filiales** : Plusieurs organisations ou filiales d'un groupe partagent la même plateforme, mais chaque marque possède ses propres données clients, produits et commandes.
|
||||
|
||||
## Installation
|
||||
|
||||
Dans le gestionnaire de plugins, recherchez le **plugin Multi-espace** et activez-le.
|
||||
|
||||

|
||||
|
||||
## Manuel d'utilisation
|
||||
|
||||
### Gestion du Multi-espace
|
||||
|
||||
Après avoir activé le plugin, accédez à la page de paramètres **« Utilisateurs et permissions »** et basculez vers le panneau **Espaces** pour gérer les espaces.
|
||||
|
||||
> Initialement, il existe un **Espace non attribué** intégré, principalement utilisé pour visualiser les anciennes données qui ne sont associées à aucun espace.
|
||||
|
||||

|
||||
|
||||
#### Créer un espace
|
||||
|
||||
Cliquez sur le bouton « Ajouter un espace » pour créer un nouvel espace :
|
||||
|
||||
.png)
|
||||
|
||||
#### Attribuer des utilisateurs
|
||||
|
||||
Après avoir sélectionné un espace créé, vous pouvez définir les utilisateurs appartenant à cet espace sur le côté droit :
|
||||
|
||||
> **Conseil :** Après avoir attribué des utilisateurs à un espace, vous devrez **actualiser manuellement la page** pour que la liste de commutation d'espace en haut à droite se mette à jour et affiche le dernier espace.
|
||||
|
||||

|
||||
|
||||
### Basculer et visualiser le Multi-espace
|
||||
|
||||
Vous pouvez basculer l'espace actuel en haut à droite.
|
||||
Lorsque vous cliquez sur l'**icône en forme d'œil** à droite (lorsqu'elle est en surbrillance), vous pouvez visualiser simultanément les données de plusieurs espaces.
|
||||
|
||||

|
||||
|
||||
### Gestion des données Multi-espace
|
||||
|
||||
Après avoir activé le plugin, le système ajoutera automatiquement un **champ Espace** lors de la création d'une collection.
|
||||
**Seules les collections qui contiennent ce champ seront incluses dans la logique de gestion des espaces.**
|
||||
|
||||

|
||||
|
||||
Pour les collections existantes, vous pouvez ajouter manuellement un champ Espace pour activer la gestion des espaces :
|
||||
|
||||

|
||||
|
||||
#### Logique par défaut
|
||||
|
||||
Dans les collections qui contiennent le champ Espace, le système appliquera automatiquement la logique suivante :
|
||||
|
||||
1. Lors de la création de données, celles-ci sont automatiquement associées à l'espace actuellement sélectionné ;
|
||||
2. Lors du filtrage des données, celles-ci sont automatiquement limitées aux données de l'espace actuellement sélectionné.
|
||||
|
||||
### Classification des anciennes données dans le Multi-espace
|
||||
|
||||
Pour les données qui existaient avant l'activation du plugin Multi-espace, vous pouvez les classer dans des espaces en suivant les étapes ci-dessous :
|
||||
|
||||
#### 1. Ajouter le champ Espace
|
||||
|
||||
Ajoutez manuellement le champ Espace à l'ancienne collection :
|
||||
|
||||

|
||||
|
||||
#### 2. Attribuer des utilisateurs à l'Espace non attribué
|
||||
|
||||
Associez l'utilisateur qui gère les anciennes données à tous les espaces, y compris l'**Espace non attribué**, afin de visualiser les données qui n'ont pas encore été attribuées à un espace :
|
||||
|
||||

|
||||
|
||||
#### 3. Basculer pour visualiser toutes les données d'espace
|
||||
|
||||
En haut, sélectionnez l'option pour visualiser les données de tous les espaces :
|
||||
|
||||

|
||||
|
||||
#### 4. Configurer une page pour l'attribution des anciennes données
|
||||
|
||||
Créez une nouvelle page pour l'attribution des anciennes données. Affichez le « champ Espace » sur la **page de liste** et la **page d'édition** afin d'ajuster manuellement l'attribution de l'espace.
|
||||
|
||||

|
||||
|
||||
Rendez le champ Espace modifiable.
|
||||
|
||||

|
||||
|
||||
#### 5. Attribuer manuellement des données aux espaces
|
||||
|
||||
Via la page créée ci-dessus, modifiez manuellement les données pour attribuer progressivement le bon espace aux anciennes données (vous pouvez également configurer vous-même l'édition en masse).
|
||||
@@ -0,0 +1,102 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
---
|
||||
|
||||
# Multi-space
|
||||
|
||||
<PluginInfo name="multi-space" licenseBundled="professional"></PluginInfo>
|
||||
|
||||
## Introduction
|
||||
|
||||
Le **plugin Multi-space** permet de créer plusieurs espaces de données indépendants dans une seule instance d'application grâce à une isolation logique.
|
||||
|
||||
#### Cas d'usage
|
||||
- **Multi-boutiques ou usines** : processus similaires, mais données isolées par unité métier.
|
||||
- **Multi-organisations / filiales** : même plateforme partagée, avec données clients/produits/commandes séparées.
|
||||
|
||||
## Installation
|
||||
|
||||
Dans le gestionnaire de plugins, activez **Multi-Space**.
|
||||
|
||||

|
||||
|
||||
## Guide d'utilisation
|
||||
|
||||
### Gestion des espaces
|
||||
|
||||
Après activation, ouvrez **Users & Permissions** puis l'onglet **Spaces**.
|
||||
|
||||
> Un **Unassigned Space** est présent par défaut pour consulter les anciennes données non associées.
|
||||
|
||||

|
||||
|
||||
#### Créer un espace
|
||||
|
||||
Cliquez sur **Add space**.
|
||||
|
||||
.png)
|
||||
|
||||
#### Assigner des utilisateurs
|
||||
|
||||
Après sélection d'un espace, configurez ses utilisateurs dans le panneau de droite.
|
||||
|
||||
> **Note :** après assignation, il faut **rafraîchir manuellement la page** pour mettre à jour la liste de bascule des espaces en haut à droite.
|
||||
|
||||

|
||||
|
||||
### Changer et visualiser les espaces
|
||||
|
||||
Vous pouvez changer l'espace actif en haut à droite. En cliquant sur l'**icône œil** (active), vous visualisez simultanément les données de plusieurs espaces.
|
||||
|
||||

|
||||
|
||||
### Gestion des données multi-space
|
||||
|
||||
Après activation, un **champ Space** est ajouté automatiquement à la création d'une collection. **Seules les collections avec ce champ** sont gérées par la logique d'espace.
|
||||
|
||||

|
||||
|
||||
Pour les collections existantes, ajoutez ce champ manuellement.
|
||||
|
||||

|
||||
|
||||
#### Logique par défaut
|
||||
|
||||
1. À la création, les données sont liées automatiquement à l'espace actif.
|
||||
2. Les filtres limitent automatiquement les données à l'espace actif.
|
||||
|
||||
### Classer les anciennes données par espace
|
||||
|
||||
Pour les données existantes avant activation du plugin :
|
||||
|
||||
#### 1. Ajouter le champ Space
|
||||
|
||||
Ajoutez manuellement le champ Space aux anciennes tables.
|
||||
|
||||

|
||||
|
||||
#### 2. Assigner les utilisateurs à Unassigned Space
|
||||
|
||||
Associez les utilisateurs concernés à tous les espaces, y compris **Unassigned Space**.
|
||||
|
||||

|
||||
|
||||
#### 3. Afficher les données de tous les espaces
|
||||
|
||||
En haut de page, activez l'affichage de tous les espaces.
|
||||
|
||||

|
||||
|
||||
#### 4. Configurer une page d'affectation des anciennes données
|
||||
|
||||
Créez une page dédiée et affichez le champ Space dans la **liste** et la **page d'édition**.
|
||||
|
||||

|
||||
|
||||
Rendez le champ Space modifiable.
|
||||
|
||||

|
||||
|
||||
#### 5. Affecter manuellement les espaces
|
||||
|
||||
Éditez les données via cette page pour les affecter progressivement au bon espace (édition par lot possible).
|
||||
@@ -1,17 +1,28 @@
|
||||
[
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "סקירה כללית",
|
||||
"link": "/multi-app/"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "ריבוי יישומים",
|
||||
"link": "/multi-app/multi-app"
|
||||
"items": [
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "סקירה כללית",
|
||||
"link": "/multi-app/multi-app"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "מצב זיכרון משותף",
|
||||
"link": "/multi-app/multi-app/local"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "מצב ריבוי סביבות",
|
||||
"link": "/multi-app/multi-app/remote"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "ריבוי מרחבים",
|
||||
"label": "מרחבים מרובים",
|
||||
"link": "/multi-app/multi-space"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-app-manager"
|
||||
---
|
||||
:::tip
|
||||
מסמך זה תורגם על ידי בינה מלאכותית. לכל אי דיוק, אנא עיין ב[גרסה האנגלית](/en)
|
||||
:::
|
||||
|
||||
|
||||
|
||||
# ריבוי יישומים
|
||||
|
||||
## מבוא
|
||||
@@ -1,133 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-app-manager"
|
||||
---
|
||||
:::tip
|
||||
מסמך זה תורגם על ידי בינה מלאכותית. לכל אי דיוק, אנא עיין ב[גרסה האנגלית](/en)
|
||||
:::
|
||||
|
||||
|
||||
# ריבוי יישומים
|
||||
|
||||
|
||||
## מבוא
|
||||
|
||||
**תוסף ריבוי היישומים** מאפשר לכם ליצור ולנהל באופן דינמי מספר יישומים עצמאיים, ללא צורך בפריסה נפרדת. כל יישום משנה הוא מופע עצמאי לחלוטין, עם מסד נתונים, תוספים ותצורה משלו.
|
||||
|
||||
#### תרחישי שימוש
|
||||
- **ריבוי דיירים**: ספקו מופעי יישומים עצמאיים, שבהם לכל לקוח יש נתונים, תצורות תוספים ומערכת הרשאות משלו.
|
||||
- **מערכות ראשיות ומשניות לתחומי עסק שונים**: מערכת גדולה המורכבת ממספר יישומים קטנים הפרוסים באופן עצמאי.
|
||||
|
||||
|
||||
:::warning
|
||||
תוסף ריבוי היישומים עצמו אינו מספק יכולות שיתוף משתמשים.
|
||||
אם אתם זקוקים לשיתוף משתמשים בין יישומים מרובים, תוכלו להשתמש בו בשילוב עם **[תוסף האימות](/auth-verification)**.
|
||||
:::
|
||||
|
||||
|
||||
## התקנה
|
||||
|
||||
במנהל התוספים, מצאו את תוסף **ריבוי היישומים** והפעילו אותו.
|
||||
|
||||

|
||||
|
||||
|
||||
## מדריך שימוש
|
||||
|
||||
|
||||
### יצירת יישום משנה
|
||||
|
||||
בתפריט הגדרות המערכת, לחצו על "ריבוי יישומים" כדי להיכנס לדף ניהול ריבוי היישומים.
|
||||
|
||||

|
||||
|
||||
לחצו על כפתור "הוספה" כדי ליצור יישום משנה חדש.
|
||||
|
||||

|
||||
|
||||
#### תיאור שדות הטופס
|
||||
|
||||
* **שם**: מזהה יישום המשנה, ייחודי גלובלית.
|
||||
* **שם תצוגה**: השם של יישום המשנה שיוצג בממשק.
|
||||
* **מצב הפעלה**:
|
||||
* **הפעלה בגישה ראשונה**: יישום המשנה יופעל רק כאשר משתמש ניגש אליו לראשונה באמצעות URL.
|
||||
* **הפעלה יחד עם היישום הראשי**: יישום המשנה יופעל יחד עם היישום הראשי (פעולה זו תאריך את זמן ההפעלה של היישום הראשי).
|
||||
* **פורט**: מספר הפורט שבו יישום המשנה ישתמש בזמן ריצה.
|
||||
* **דומיין מותאם אישית**: הגדירו תת-דומיין עצמאי עבור יישום המשנה.
|
||||
* **הצמדה לתפריט**: הצמידו את כניסת יישום המשנה לצד שמאל של סרגל הניווט העליון.
|
||||
* **חיבור למסד נתונים**: משמש להגדרת מקור הנתונים עבור יישום המשנה, ותומך בשלוש השיטות הבאות:
|
||||
* **מסד נתונים חדש**: שימוש חוזר בשירות הנתונים הנוכחי ליצירת מסד נתונים עצמאי.
|
||||
* **חיבור נתונים חדש**: הגדירו שירות מסד נתונים חדש לחלוטין.
|
||||
* **מצב סכמה (Schema)**: צרו סכמה עצמאית עבור יישום המשנה ב-PostgreSQL.
|
||||
* **שדרוג**: אם מסד הנתונים המחובר מכיל מבנה נתונים של NocoBase בגרסה ישנה יותר, הוא ישודרג אוטומטית לגרסה הנוכחית.
|
||||
|
||||
|
||||
### הפעלה ועצירה של יישום משנה
|
||||
|
||||
לחצו על כפתור **הפעלה** כדי להפעיל את יישום המשנה;
|
||||
> אם סומן *“הפעלה בגישה ראשונה”* בעת היצירה, הוא יופעל אוטומטית בגישה הראשונה.
|
||||
|
||||
לחצו על כפתור **הצגה** כדי לפתוח את יישום המשנה בלשונית חדשה.
|
||||
|
||||

|
||||
|
||||
|
||||
### מצב ויומני יישום משנה
|
||||
|
||||
ברשימה, תוכלו לראות את צריכת הזיכרון והמעבד של כל יישום.
|
||||
|
||||

|
||||
|
||||
לחצו על כפתור **יומנים** כדי לראות את יומני הריצה של יישום המשנה.
|
||||
> אם יישום המשנה אינו נגיש לאחר ההפעלה (לדוגמה, עקב מסד נתונים פגום), תוכלו להשתמש ביומנים כדי לאתר תקלות.
|
||||
|
||||

|
||||
|
||||
|
||||
### מחיקת יישום משנה
|
||||
|
||||
לחצו על כפתור **מחיקה** כדי להסיר את יישום המשנה.
|
||||
> בעת המחיקה, תוכלו לבחור אם למחוק גם את מסד הנתונים. אנא פעלו בזהירות, פעולה זו בלתי הפיכה.
|
||||
|
||||
|
||||
### גישה ליישום משנה
|
||||
כברירת מחדל, ניגשים ליישומי משנה באמצעות `/_app/:appName/admin/`, לדוגמה:
|
||||
```
|
||||
http://localhost:13000/_app/a_7zkxoarusnx/admin/
|
||||
```
|
||||
בנוסף, תוכלו להגדיר תת-דומיין עצמאי עבור יישום המשנה. יהיה עליכם לנתב את הדומיין לכתובת ה-IP הנוכחית, ואם אתם משתמשים ב-Nginx, יהיה עליכם להוסיף את הדומיין גם לתצורת ה-Nginx.
|
||||
|
||||
|
||||
### ניהול יישומי משנה דרך שורת הפקודה
|
||||
|
||||
בספריית השורש של הפרויקט, תוכלו להשתמש בשורת הפקודה כדי לנהל מופעי יישומי משנה באמצעות **PM2**:
|
||||
|
||||
```bash
|
||||
yarn nocobase pm2 list # הצגת רשימת המופעים הפועלים כעת
|
||||
yarn nocobase pm2 stop [appname] # עצירת תהליך יישום משנה ספציפי
|
||||
yarn nocobase pm2 delete [appname] # מחיקת תהליך יישום משנה ספציפי
|
||||
yarn nocobase pm2 kill # סיום כפוי של כל התהליכים שהופעלו (עשוי לכלול את מופע היישום הראשי)
|
||||
```
|
||||
|
||||
### העברת נתונים מריבוי יישומים ישן
|
||||
|
||||
עברו לדף ניהול ריבוי היישומים הישן ולחצו על כפתור **העברת נתונים לריבוי יישומים חדש** כדי להעביר נתונים.
|
||||
|
||||

|
||||
|
||||
|
||||
## שאלות נפוצות
|
||||
|
||||
#### 1. ניהול תוספים
|
||||
יישומי משנה יכולים להשתמש באותם תוספים כמו היישום הראשי (כולל גרסאות), אך ניתן להגדיר ולהשתמש בהם באופן עצמאי.
|
||||
|
||||
#### 2. בידוד מסדי נתונים
|
||||
ניתן להגדיר יישומי משנה עם מסדי נתונים עצמאיים. אם אתם רוצים לשתף נתונים בין יישומים, תוכלו לעשות זאת באמצעות מקורות נתונים חיצוניים.
|
||||
|
||||
#### 3. גיבוי והעברת נתונים
|
||||
נכון לעכשיו, גיבויי נתונים ביישום הראשי אינם כוללים נתונים של יישומי משנה (הם כוללים רק מידע בסיסי על יישומי המשנה). עליכם לגבות ולהעביר נתונים באופן ידני בתוך כל יישום משנה.
|
||||
|
||||
#### 4. פריסה ועדכונים
|
||||
גרסת יישום המשנה תשודרג אוטומטית יחד עם היישום הראשי, מה שמבטיח עקביות גרסאות בין היישום הראשי ליישומי המשנה.
|
||||
|
||||
#### 5. ניהול משאבים
|
||||
צריכת המשאבים של כל יישום משנה זהה בעיקרה לזו של היישום הראשי. נכון לעכשיו, יישום בודד צורך כ-500-600MB זיכרון.
|
||||
@@ -0,0 +1,22 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# ניהול ריבוי יישומים
|
||||
|
||||
## סקירה כללית
|
||||
|
||||
NocoBase מאפשרת לנהל כמה יישומים מבודדים דרך נקודת כניסה אחת באמצעות AppSupervisor.
|
||||
|
||||
|
||||
בתחילת הדרך מספיק יישום אחד. עם הגדילה עולים עומס, מורכבות ודרישת בידוד.
|
||||
|
||||
|
||||
במצב זה כמה יישומים רצים באותה מופע NocoBase, עם DB נפרד לכל יישום אך תהליך וזיכרון משותפים.
|
||||
|
||||

|
||||
|
||||
|
||||
לסקייל גדול מומלץ מצב היברידי: Supervisor מרכזי וסביבות Worker נפרדות.
|
||||
|
||||

|
||||
@@ -0,0 +1,65 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# מצב זיכרון משותף
|
||||
|
||||
## מבוא
|
||||
|
||||
מתאים לפיצול עסקי בלי להוסיף מורכבות תפעולית גבוהה.
|
||||
|
||||
## מדריך שימוש
|
||||
|
||||
### משתני סביבה
|
||||
|
||||
```bash
|
||||
APP_DISCOVERY_ADAPTER=local
|
||||
APP_PROCESS_ADAPTER=local
|
||||
```
|
||||
|
||||
### יצירת יישום
|
||||
|
||||
In **System Settings**, open **App supervisor**.
|
||||
|
||||

|
||||
|
||||
Click **Add** to create a new application.
|
||||
|
||||

|
||||
|
||||
### הפעלת יישום
|
||||
|
||||
Click **Start**.
|
||||
|
||||

|
||||
|
||||
### גישה ליישום
|
||||
|
||||
Default path:
|
||||
|
||||
```bash
|
||||
http://localhost:13000/apps/a_7zkxoarusnx/admin/
|
||||
```
|
||||
|
||||
### עצירת יישום
|
||||
|
||||
Click **Stop**.
|
||||
|
||||

|
||||
|
||||
### מצב היישום
|
||||
|
||||

|
||||
|
||||
### מחיקת יישום
|
||||
|
||||
Click **Delete**.
|
||||
|
||||

|
||||
|
||||
## FAQ
|
||||
|
||||
- Plugin config is isolated per app.
|
||||
- Database can be isolated per app.
|
||||
- Main app backup does not include data from other apps.
|
||||
- App version follows main app version in shared-memory mode.
|
||||
@@ -0,0 +1,70 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# מצב ריבוי סביבות
|
||||
|
||||
## מבוא
|
||||
|
||||
מתאים לדרישות גבוהות של יציבות, בידוד והתרחבות.
|
||||
|
||||
## פריסה
|
||||
|
||||
- Supervisor: central control plane
|
||||
- Worker: runtime environment
|
||||
- Redis: config cache and command channel
|
||||
|
||||
### תלויות ארכיטקטורה
|
||||
|
||||
- Redis
|
||||
- Database service for Supervisor and Workers
|
||||
|
||||
### יישום כניסה (Supervisor)
|
||||
|
||||
```bash
|
||||
APP_MODE=supervisor
|
||||
APP_DISCOVERY_ADAPTER=remote
|
||||
APP_PROCESS_ADAPTER=remote
|
||||
APP_SUPERVISOR_REDIS_URL=
|
||||
APP_COMMAND_ADPATER=redis
|
||||
APP_COMMAND_REDIS_URL=
|
||||
```
|
||||
|
||||
### יישום Worker (Worker)
|
||||
|
||||
```bash
|
||||
APP_MODE=worker
|
||||
APP_DISCOVERY_ADAPTER=remote
|
||||
APP_PROCESS_ADAPTER=local
|
||||
APP_SUPERVISOR_REDIS_URL=
|
||||
APP_COMMAND_ADPATER=redis
|
||||
APP_COMMAND_REDIS_URL=
|
||||
ENVIRONMENT_NAME=
|
||||
ENVIRONMENT_URL=
|
||||
ENVIRONMENT_PROXY_URL=
|
||||
```
|
||||
|
||||
## מדריך שימוש
|
||||
|
||||
### רשימת סביבות
|
||||
|
||||

|
||||
|
||||
### יצירת יישום
|
||||
|
||||

|
||||
|
||||
### רשימת יישומים
|
||||
|
||||

|
||||
|
||||
### הפעלת יישום
|
||||
|
||||

|
||||
|
||||
### גישת פרוקסי
|
||||
|
||||
Use `/apps/:appName/admin` via Supervisor.
|
||||
|
||||

|
||||

|
||||
@@ -1,109 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
---
|
||||
:::tip
|
||||
מסמך זה תורגם על ידי בינה מלאכותית. לכל אי דיוק, אנא עיין ב[גרסה האנגלית](/en)
|
||||
:::
|
||||
|
||||
|
||||
|
||||
# ריבוי מרחבים
|
||||
|
||||
## מבוא
|
||||
|
||||
ה**תוסף לריבוי מרחבים** מאפשר ליצור מספר מרחבי נתונים עצמאיים, באמצעות הפרדה לוגית, בתוך מופע יישום יחיד.
|
||||
|
||||
#### תרחישי שימוש
|
||||
- **ריבוי סניפים או מפעלים**: תהליכים עסקיים ותצורות מערכת אחידים במידה רבה, לדוגמה: ניהול מלאי מאוחד, תכנון ייצור, אסטרטגיות מכירה ותבניות דוחות. עם זאת, יש להבטיח שנתוני כל יחידה עסקית לא יפריעו זה לזה.
|
||||
- **ניהול ריבוי ארגונים או חברות בנות**: מספר ארגונים או חברות בנות תחת חברת אם משתפים פלטפורמה אחת, אך לכל מותג יש נתוני לקוחות, מוצרים והזמנות עצמאיים.
|
||||
|
||||
## התקנה
|
||||
|
||||
במנהל ה**תוספים**, מצאו את ה**תוסף** **ריבוי מרחבים (Multi-Space)** והפעילו אותו.
|
||||
|
||||

|
||||
|
||||
## מדריך למשתמש
|
||||
|
||||
### ניהול ריבוי מרחבים
|
||||
|
||||
לאחר הפעלת ה**תוסף**, עברו לדף ההגדרות **"משתמשים והרשאות"** ועברו ללשונית **"מרחבים"** כדי לנהל את המרחבים.
|
||||
|
||||
> בתחילה, קיים **מרחב לא משויך (Unassigned Space)** מובנה, המשמש בעיקר לצפייה בנתונים ישנים שאינם משויכים לאף מרחב.
|
||||
|
||||

|
||||
|
||||
#### יצירת מרחב
|
||||
|
||||
לחצו על כפתור "הוסף מרחב" כדי ליצור מרחב חדש:
|
||||
|
||||
.png)
|
||||
|
||||
#### שיוך משתמשים
|
||||
|
||||
לאחר בחירת מרחב קיים, תוכלו להגדיר בצד ימין את המשתמשים השייכים למרחב זה:
|
||||
|
||||
> **טיפ:** לאחר שיוך משתמשים למרחב, עליכם **לרענן את הדף ידנית** כדי שרשימת המרחבים בפינה השמאלית העליונה תתעדכן ותציג את המרחב העדכני ביותר.
|
||||
|
||||

|
||||
|
||||
### מעבר וצפייה בריבוי מרחבים
|
||||
|
||||
בפינה השמאלית העליונה תוכלו להחליף את המרחב הנוכחי.
|
||||
כאשר תלחצו על **אייקון העין** בצד שמאל (כשהוא מודגש), תוכלו לצפות בנתונים ממספר מרחבים בו-זמנית.
|
||||
|
||||

|
||||
|
||||
### ניהול נתונים בריבוי מרחבים
|
||||
|
||||
לאחר הפעלת ה**תוסף**, המערכת תוסיף אוטומטית **שדה מרחב** בעת יצירת **אוסף** (Collection).
|
||||
**רק אוספים המכילים שדה זה ייכללו בלוגיקת ניהול המרחבים.**
|
||||
|
||||

|
||||
|
||||
עבור **אוספים** קיימים, תוכלו להוסיף ידנית **שדה מרחב** כדי להפעיל את ניהול המרחבים:
|
||||
|
||||

|
||||
|
||||
#### לוגיקת ברירת מחדל
|
||||
|
||||
ב**אוספים** המכילים את **שדה המרחב**, המערכת תחיל אוטומטית את הלוגיקה הבאה:
|
||||
|
||||
1. בעת יצירת נתונים, הם ישויכו אוטומטית למרחב הנבחר הנוכחי.
|
||||
2. בעת סינון נתונים, הם יוגבלו אוטומטית לנתוני המרחב הנבחר הנוכחי.
|
||||
|
||||
### סיווג נתונים ישנים לריבוי מרחבים
|
||||
|
||||
עבור נתונים שהיו קיימים לפני הפעלת ה**תוסף** לריבוי מרחבים, תוכלו לסווג אותם למרחבים באמצעות השלבים הבאים:
|
||||
|
||||
#### 1. הוספת שדה המרחב
|
||||
|
||||
הוסיפו ידנית את **שדה המרחב** ל**אוסף** הישן:
|
||||
|
||||

|
||||
|
||||
#### 2. שיוך משתמשים למרחב הלא משויך
|
||||
|
||||
שייכו את המשתמש שמנהל את הנתונים הישנים לכל המרחבים, כולל **המרחב הלא משויך (Unassigned Space)**, כדי שיוכל לצפות בנתונים שטרם שויכו למרחב:
|
||||
|
||||

|
||||
|
||||
#### 3. מעבר לצפייה בכל נתוני המרחבים
|
||||
|
||||
בחרו בחלק העליון לצפות בנתונים מכל המרחבים:
|
||||
|
||||

|
||||
|
||||
#### 4. הגדרת דף לשיוך נתונים ישנים
|
||||
|
||||
צרו דף חדש לשיוך נתונים ישנים. הציגו את "שדה המרחב" ב**דף הרשימה** וב**דף העריכה**, כדי לאפשר התאמה ידנית של שיוך המרחב.
|
||||
|
||||

|
||||
|
||||
אפשרו עריכה של שדה המרחב
|
||||
|
||||

|
||||
|
||||
#### 5. שיוך נתונים למרחבים באופן ידני
|
||||
|
||||
באמצעות הדף שיצרתם לעיל, ערכו את הנתונים ידנית כדי לשייך בהדרגה את המרחב הנכון לנתונים הישנים (תוכלו גם להגדיר עריכה בכמות גדולה בעצמכם).
|
||||
@@ -0,0 +1,50 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
---
|
||||
|
||||
# מרחבים מרובים
|
||||
|
||||
<PluginInfo name="multi-space" licenseBundled="professional"></PluginInfo>
|
||||
|
||||
## מבוא
|
||||
|
||||
Multi-space מספק בידוד לוגי של נתונים באמצעות מרחבים נפרדים באותה מערכת.
|
||||
|
||||
## התקנה
|
||||
|
||||
Enable **Multi-Space** in plugin manager.
|
||||
|
||||

|
||||
|
||||
## מדריך שימוש
|
||||
|
||||
### ניהול מרחבים מרובים
|
||||
|
||||
Open **Users & Permissions** and switch to **Spaces**.
|
||||
|
||||

|
||||
|
||||
#### יצירת מרחב
|
||||
|
||||
.png)
|
||||
|
||||
#### הקצאת משתמשים
|
||||
|
||||

|
||||
|
||||
### מעבר וצפייה במרחבים מרובים
|
||||
|
||||

|
||||
|
||||
### ניהול נתונים במרחבים מרובים
|
||||
|
||||

|
||||

|
||||
|
||||
### סיווג נתונים ישנים למרחבים מרובים
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
@@ -1,13 +1,24 @@
|
||||
[
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "अवलोकन",
|
||||
"link": "/multi-app/"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "मल्टी-ऐप",
|
||||
"link": "/multi-app/multi-app"
|
||||
"label": "मल्टी-एप्लिकेशन",
|
||||
"items": [
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "अवलोकन",
|
||||
"link": "/multi-app/multi-app"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "साझा मेमोरी मोड",
|
||||
"link": "/multi-app/multi-app/local"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "बहु-पर्यावरण मोड",
|
||||
"link": "/multi-app/multi-app/remote"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-app-manager"
|
||||
---
|
||||
:::tip
|
||||
यह दस्तावेज़ AI द्वारा अनुवादित किया गया है। किसी भी अशुद्धि के लिए, कृपया [अंग्रेजी संस्करण](/en) देखें
|
||||
:::
|
||||
|
||||
|
||||
|
||||
# मल्टी-ऐप
|
||||
|
||||
## परिचय
|
||||
@@ -1,122 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-app-manager"
|
||||
---
|
||||
:::tip
|
||||
यह दस्तावेज़ AI द्वारा अनुवादित किया गया है। किसी भी अशुद्धि के लिए, कृपया [अंग्रेजी संस्करण](/en) देखें
|
||||
:::
|
||||
|
||||
|
||||
# मल्टी-ऐप
|
||||
|
||||
## परिचय
|
||||
|
||||
**मल्टी-ऐप प्लगइन** आपको कई स्वतंत्र एप्लिकेशन को गतिशील रूप से बनाने और प्रबंधित करने की सुविधा देता है, बिना उन्हें अलग से डिप्लॉय किए। प्रत्येक सब-ऐप एक पूरी तरह से स्वतंत्र इंस्टेंस होता है, जिसका अपना डेटाबेस, प्लगइन और कॉन्फ़िगरेशन होता है।
|
||||
|
||||
#### उपयोग के मामले
|
||||
- **मल्टी-टेनेंसी**: स्वतंत्र एप्लिकेशन इंस्टेंस प्रदान करें, जहाँ प्रत्येक ग्राहक का अपना डेटा, प्लगइन कॉन्फ़िगरेशन और अनुमति प्रणाली होती है।
|
||||
- **विभिन्न व्यावसायिक डोमेन के लिए मुख्य और सब-सिस्टम**: एक बड़ा सिस्टम जो कई स्वतंत्र रूप से डिप्लॉय किए गए छोटे एप्लिकेशन से बना होता है।
|
||||
|
||||
:::warning
|
||||
मल्टी-ऐप प्लगइन स्वयं उपयोगकर्ता साझाकरण क्षमताएँ प्रदान नहीं करता है।
|
||||
यदि आपको कई ऐप के बीच उपयोगकर्ताओं को साझा करने की आवश्यकता है, तो आप इसे **[प्रमाणीकरण प्लगइन](/auth-verification)** के साथ उपयोग कर सकते हैं।
|
||||
:::
|
||||
|
||||
## इंस्टॉलेशन
|
||||
|
||||
प्लगइन प्रबंधन में, **मल्टी-ऐप** प्लगइन को ढूँढें और इसे सक्षम करें।
|
||||
|
||||

|
||||
|
||||
## उपयोग मार्गदर्शिका
|
||||
|
||||
### सब-ऐप बनाना
|
||||
|
||||
सिस्टम सेटिंग्स मेनू में, मल्टी-ऐप पर क्लिक करें ताकि आप मल्टी-ऐप प्रबंधन पृष्ठ पर जा सकें।
|
||||
|
||||

|
||||
|
||||
"नया जोड़ें" बटन पर क्लिक करके एक नया सब-ऐप बनाएँ।
|
||||
|
||||

|
||||
|
||||
#### फ़ॉर्म फ़ील्ड विवरण
|
||||
|
||||
* **नाम**: सब-ऐप पहचानकर्ता, जो विश्व स्तर पर अद्वितीय है।
|
||||
* **प्रदर्शित नाम**: वह नाम जो इंटरफ़ेस में सब-ऐप के लिए प्रदर्शित होगा।
|
||||
* **स्टार्टअप मोड**:
|
||||
* **पहली विज़िट पर शुरू करें**: सब-ऐप तभी शुरू होता है जब कोई उपयोगकर्ता पहली बार URL के माध्यम से उस तक पहुँचता है।
|
||||
* **मुख्य ऐप के साथ शुरू करें**: सब-ऐप मुख्य ऐप के साथ ही शुरू होता है (इससे मुख्य ऐप का स्टार्टअप समय बढ़ जाएगा)।
|
||||
* **पोर्ट**: सब-ऐप के रनटाइम के दौरान उपयोग किया जाने वाला पोर्ट नंबर।
|
||||
* **कस्टम डोमेन**: सब-ऐप के लिए एक स्वतंत्र सबडोमेन कॉन्फ़िगर करें।
|
||||
* **मेनू में पिन करें**: सब-ऐप एंट्री को शीर्ष नेविगेशन बार के बाईं ओर स्थायी रूप से प्रदर्शित करें।
|
||||
* **डेटाबेस कनेक्शन**: सब-ऐप के लिए डेटा स्रोत कॉन्फ़िगर करने के लिए उपयोग किया जाता है, जो निम्न तीन तरीकों का समर्थन करता है:
|
||||
* **नया डेटाबेस**: वर्तमान डेटा सेवा का पुन: उपयोग करके एक स्वतंत्र डेटाबेस बनाएँ।
|
||||
* **नया डेटा कनेक्शन**: पूरी तरह से नई डेटाबेस सेवा कॉन्फ़िगर करें।
|
||||
* **स्कीमा मोड**: PostgreSQL में सब-ऐप के लिए एक स्वतंत्र स्कीमा बनाएँ।
|
||||
* **अपग्रेड**: यदि कनेक्टेड डेटाबेस में NocoBase डेटा संरचना का पुराना संस्करण मौजूद है, तो यह स्वचालित रूप से वर्तमान संस्करण में अपग्रेड हो जाएगा।
|
||||
|
||||
### सब-ऐप शुरू करना और रोकना
|
||||
|
||||
**शुरू करें** बटन पर क्लिक करके सब-ऐप को शुरू किया जा सकता है;
|
||||
> यदि बनाते समय *“पहली विज़िट पर शुरू करें”* विकल्प चुना गया था, तो यह पहली विज़िट पर स्वचालित रूप से शुरू हो जाएगा।
|
||||
|
||||
**देखें** बटन पर क्लिक करने पर, यह सब-ऐप एक नए टैब में खुल जाएगा।
|
||||
|
||||

|
||||
|
||||
### सब-ऐप की स्थिति और लॉग
|
||||
|
||||
सूची में, आप प्रत्येक एप्लिकेशन द्वारा उपयोग की गई मेमोरी और CPU देख सकते हैं।
|
||||
|
||||

|
||||
|
||||
**लॉग** बटन पर क्लिक करके, आप सब-ऐप के रनटाइम लॉग देख सकते हैं।
|
||||
> यदि सब-ऐप शुरू होने के बाद एक्सेस नहीं किया जा सकता है (जैसे डेटाबेस खराब होने की स्थिति में), तो आप लॉग का उपयोग करके समस्या का निवारण कर सकते हैं।
|
||||
|
||||

|
||||
|
||||
### सब-ऐप हटाना
|
||||
|
||||
**हटाएँ** बटन पर क्लिक करके सब-ऐप को हटाया जा सकता है।
|
||||
> हटाते समय, आप यह चुन सकते हैं कि डेटाबेस को भी हटाना है या नहीं। कृपया सावधानी से आगे बढ़ें, क्योंकि यह कार्रवाई अपरिवर्तनीय है।
|
||||
|
||||
### सब-ऐप एक्सेस करना
|
||||
डिफ़ॉल्ट रूप से, सब-ऐप्स को `/_app/:appName/admin/` का उपयोग करके एक्सेस किया जाता है, उदाहरण के लिए:
|
||||
```
|
||||
http://localhost:13000/_app/a_7zkxoarusnx/admin/
|
||||
```
|
||||
आप सब-ऐप के लिए एक स्वतंत्र सबडोमेन भी कॉन्फ़िगर कर सकते हैं। इसके लिए आपको डोमेन को वर्तमान IP पर रिज़ॉल्व करना होगा, और यदि आप Nginx का उपयोग कर रहे हैं, तो आपको Nginx कॉन्फ़िगरेशन में भी डोमेन जोड़ना होगा।
|
||||
|
||||
### कमांड लाइन के माध्यम से सब-ऐप प्रबंधित करना
|
||||
|
||||
प्रोजेक्ट के रूट डायरेक्टरी में, आप **PM2** के माध्यम से सब-ऐप इंस्टेंस को प्रबंधित करने के लिए कमांड लाइन का उपयोग कर सकते हैं:
|
||||
|
||||
```bash
|
||||
yarn nocobase pm2 list # वर्तमान में चल रहे इंस्टेंस की सूची देखें
|
||||
yarn nocobase pm2 stop [appname] # किसी विशिष्ट सब-ऐप प्रक्रिया को रोकें
|
||||
yarn nocobase pm2 delete [appname] # किसी विशिष्ट सब-ऐप प्रक्रिया को हटाएँ
|
||||
yarn nocobase pm2 kill # सभी शुरू की गई प्रक्रियाओं को जबरन समाप्त करें (इसमें मुख्य ऐप के इंस्टेंस भी शामिल हो सकते हैं)
|
||||
```
|
||||
|
||||
### पुराने मल्टी-ऐप से डेटा माइग्रेट करना
|
||||
|
||||
पुराने मल्टी-ऐप प्रबंधन पृष्ठ पर जाएँ और डेटा माइग्रेट करने के लिए **डेटा को नए मल्टी-ऐप में माइग्रेट करें** बटन पर क्लिक करें।
|
||||
|
||||

|
||||
|
||||
## अक्सर पूछे जाने वाले प्रश्न
|
||||
|
||||
#### 1. प्लगइन प्रबंधन
|
||||
सब-ऐप्स मुख्य ऐप के समान प्लगइन का उपयोग कर सकते हैं (संस्करणों सहित), लेकिन उन्हें स्वतंत्र रूप से कॉन्फ़िगर और उपयोग किया जा सकता है।
|
||||
|
||||
#### 2. डेटाबेस आइसोलेशन
|
||||
सब-ऐप्स को स्वतंत्र डेटाबेस के साथ कॉन्फ़िगर किया जा सकता है। यदि आप ऐप के बीच डेटा साझा करना चाहते हैं, तो आप इसे बाहरी डेटा स्रोतों के माध्यम से कर सकते हैं।
|
||||
|
||||
#### 3. डेटा बैकअप और माइग्रेशन
|
||||
वर्तमान में, मुख्य ऐप में डेटा बैकअप में सब-ऐप डेटा शामिल नहीं होता है (केवल सब-ऐप की बुनियादी जानकारी शामिल होती है)। आपको प्रत्येक सब-ऐप के भीतर मैन्युअल रूप से डेटा का बैकअप और माइग्रेट करना होगा।
|
||||
|
||||
#### 4. डिप्लॉयमेंट और अपडेट
|
||||
एक सब-ऐप का संस्करण मुख्य ऐप के साथ स्वचालित रूप से अपग्रेड हो जाएगा, जिससे मुख्य और सब-ऐप के बीच संस्करण की निरंतरता सुनिश्चित होगी।
|
||||
|
||||
#### 5. संसाधन प्रबंधन
|
||||
प्रत्येक सब-ऐप का संसाधन उपयोग मुख्य ऐप के समान ही होता है। वर्तमान में, एक सिंगल एप्लिकेशन लगभग 500-600MB मेमोरी का उपयोग करता है।
|
||||
@@ -0,0 +1,22 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# बहु-एप्लिकेशन प्रबंधन
|
||||
|
||||
## अवलोकन
|
||||
|
||||
NocoBase में AppSupervisor के जरिए एक एंट्री से कई अलग-थलग एप्लिकेशन बनाए और प्रबंधित किए जा सकते हैं।
|
||||
|
||||
|
||||
शुरुआत में एक ऐप पर्याप्त होता है, लेकिन स्केल बढ़ने पर मेंटेनेंस लागत और आइसोलेशन की जरूरत बढ़ती है।
|
||||
|
||||
|
||||
इस मोड में कई ऐप एक ही NocoBase इंस्टेंस में चलते हैं; DB अलग हो सकता है, पर प्रोसेस/मेमोरी साझा होती है।
|
||||
|
||||

|
||||
|
||||
|
||||
बड़े स्केल के लिए Supervisor + कई Worker वातावरण वाला हाइब्रिड मॉडल उपयुक्त है।
|
||||
|
||||

|
||||
@@ -0,0 +1,65 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# साझा मेमोरी मोड
|
||||
|
||||
## परिचय
|
||||
|
||||
जब कम ऑपरेशनल जटिलता के साथ ऐप-स्तरीय विभाजन चाहिए, तब यह मोड चुनें।
|
||||
|
||||
## उपयोग गाइड
|
||||
|
||||
### पर्यावरण चर
|
||||
|
||||
```bash
|
||||
APP_DISCOVERY_ADAPTER=local
|
||||
APP_PROCESS_ADAPTER=local
|
||||
```
|
||||
|
||||
### एप्लिकेशन बनाना
|
||||
|
||||
In **System Settings**, open **App supervisor**.
|
||||
|
||||

|
||||
|
||||
Click **Add** to create a new application.
|
||||
|
||||

|
||||
|
||||
### एप्लिकेशन शुरू करना
|
||||
|
||||
Click **Start**.
|
||||
|
||||

|
||||
|
||||
### एप्लिकेशन एक्सेस
|
||||
|
||||
Default path:
|
||||
|
||||
```bash
|
||||
http://localhost:13000/apps/a_7zkxoarusnx/admin/
|
||||
```
|
||||
|
||||
### एप्लिकेशन रोकना
|
||||
|
||||
Click **Stop**.
|
||||
|
||||

|
||||
|
||||
### एप्लिकेशन स्थिति
|
||||
|
||||

|
||||
|
||||
### एप्लिकेशन हटाना
|
||||
|
||||
Click **Delete**.
|
||||
|
||||

|
||||
|
||||
## FAQ
|
||||
|
||||
- Plugin config is isolated per app.
|
||||
- Database can be isolated per app.
|
||||
- Main app backup does not include data from other apps.
|
||||
- App version follows main app version in shared-memory mode.
|
||||
@@ -0,0 +1,70 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# बहु-पर्यावरण मोड
|
||||
|
||||
## परिचय
|
||||
|
||||
उच्च स्थिरता, आइसोलेशन और स्केल की जरूरत पर यह मोड चुनें।
|
||||
|
||||
## परिनियोजन
|
||||
|
||||
- Supervisor: central control plane
|
||||
- Worker: runtime environment
|
||||
- Redis: config cache and command channel
|
||||
|
||||
### आर्किटेक्चर निर्भरताएँ
|
||||
|
||||
- Redis
|
||||
- Database service for Supervisor and Workers
|
||||
|
||||
### एंट्री एप्लिकेशन (Supervisor)
|
||||
|
||||
```bash
|
||||
APP_MODE=supervisor
|
||||
APP_DISCOVERY_ADAPTER=remote
|
||||
APP_PROCESS_ADAPTER=remote
|
||||
APP_SUPERVISOR_REDIS_URL=
|
||||
APP_COMMAND_ADPATER=redis
|
||||
APP_COMMAND_REDIS_URL=
|
||||
```
|
||||
|
||||
### वर्कर एप्लिकेशन (Worker)
|
||||
|
||||
```bash
|
||||
APP_MODE=worker
|
||||
APP_DISCOVERY_ADAPTER=remote
|
||||
APP_PROCESS_ADAPTER=local
|
||||
APP_SUPERVISOR_REDIS_URL=
|
||||
APP_COMMAND_ADPATER=redis
|
||||
APP_COMMAND_REDIS_URL=
|
||||
ENVIRONMENT_NAME=
|
||||
ENVIRONMENT_URL=
|
||||
ENVIRONMENT_PROXY_URL=
|
||||
```
|
||||
|
||||
## उपयोग गाइड
|
||||
|
||||
### पर्यावरण सूची
|
||||
|
||||

|
||||
|
||||
### एप्लिकेशन बनाना
|
||||
|
||||

|
||||
|
||||
### एप्लिकेशन सूची
|
||||
|
||||

|
||||
|
||||
### एप्लिकेशन शुरू करना
|
||||
|
||||

|
||||
|
||||
### एक्सेस प्रॉक्सी
|
||||
|
||||
Use `/apps/:appName/admin` via Supervisor.
|
||||
|
||||

|
||||

|
||||
@@ -1,112 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
---
|
||||
:::tip
|
||||
यह दस्तावेज़ AI द्वारा अनुवादित किया गया है। किसी भी अशुद्धि के लिए, कृपया [अंग्रेजी संस्करण](/en) देखें
|
||||
:::
|
||||
|
||||
|
||||
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
---
|
||||
|
||||
# बहु-स्थान
|
||||
|
||||
## परिचय
|
||||
|
||||
**बहु-स्थान प्लगइन** आपको एक ही एप्लिकेशन इंस्टेंस में, लॉजिकल आइसोलेशन (तार्किक पृथक्करण) के माध्यम से कई स्वतंत्र डेटा स्थान बनाने की सुविधा देता है।
|
||||
|
||||
#### उपयोग के मामले
|
||||
- **कई स्टोर या फ़ैक्टरियाँ**: व्यावसायिक प्रक्रियाएँ और सिस्टम कॉन्फ़िगरेशन अत्यधिक सुसंगत होते हैं, जैसे कि एकीकृत इन्वेंट्री प्रबंधन, उत्पादन योजना, बिक्री रणनीतियाँ और रिपोर्ट टेम्पलेट, लेकिन यह सुनिश्चित करना आवश्यक है कि प्रत्येक व्यावसायिक इकाई का डेटा एक-दूसरे में हस्तक्षेप न करे।
|
||||
- **बहु-संगठन या सहायक कंपनी प्रबंधन**: एक समूह कंपनी के तहत कई संगठन या सहायक कंपनियाँ एक ही प्लेटफ़ॉर्म साझा करती हैं, लेकिन प्रत्येक ब्रांड के पास स्वतंत्र ग्राहक, उत्पाद और ऑर्डर डेटा होता है।
|
||||
|
||||
## इंस्टॉलेशन
|
||||
|
||||
प्लगइन प्रबंधन में **बहु-स्थान (Multi-Space)** प्लगइन खोजें और उसे सक्षम करें।
|
||||
|
||||

|
||||
|
||||
## उपयोगकर्ता मैनुअल
|
||||
|
||||
### बहु-स्थान प्रबंधन
|
||||
|
||||
प्लगइन सक्षम करने के बाद, **"उपयोगकर्ता और अनुमतियाँ"** सेटिंग पेज पर जाएँ, और स्थान प्रबंधित करने के लिए **स्थान** पैनल पर स्विच करें।
|
||||
|
||||
> शुरुआत में, एक अंतर्निहित **असाइन न किया गया स्थान (Unassigned Space)** होता है, जिसका उपयोग मुख्य रूप से पुराने डेटा को देखने के लिए किया जाता है जो किसी भी स्थान से संबंधित नहीं है।
|
||||
|
||||

|
||||
|
||||
#### एक स्थान बनाएँ
|
||||
|
||||
नया स्थान बनाने के लिए "स्थान जोड़ें" बटन पर क्लिक करें:
|
||||
|
||||
.png)
|
||||
|
||||
#### उपयोगकर्ताओं को असाइन करें
|
||||
|
||||
एक बनाया गया स्थान चुनने के बाद, आप दाईं ओर उस स्थान से संबंधित उपयोगकर्ताओं को सेट कर सकते हैं:
|
||||
|
||||
> **टिप:** उपयोगकर्ताओं को किसी स्थान पर असाइन करने के बाद, आपको पेज को **मैन्युअल रूप से रीफ़्रेश करना होगा** ताकि ऊपरी-दाएँ कोने में स्थान स्विचिंग सूची अपडेट हो सके और नवीनतम स्थान प्रदर्शित हो सके।
|
||||
|
||||

|
||||
|
||||
### बहु-स्थान स्विच करना और देखना
|
||||
|
||||
आप ऊपरी-दाएँ कोने में वर्तमान स्थान को स्विच कर सकते हैं।
|
||||
जब आप दाईं ओर **आँख के आइकन** (हाइलाइट की गई स्थिति में) पर क्लिक करते हैं, तो आप एक साथ कई स्थानों से डेटा देख सकते हैं।
|
||||
|
||||

|
||||
|
||||
### बहु-स्थान डेटा प्रबंधन
|
||||
|
||||
प्लगइन सक्षम करने के बाद, जब आप एक डेटा **संग्रह (Collection)** बनाते हैं तो सिस्टम स्वचालित रूप से एक **स्थान फ़ील्ड** को प्रीसेट कर देगा।
|
||||
**केवल वे संग्रह जिनमें यह फ़ील्ड शामिल है, उन्हें ही स्थान प्रबंधन लॉजिक में शामिल किया जाएगा।**
|
||||
|
||||

|
||||
|
||||
मौजूदा डेटा संग्रह के लिए, आप स्थान प्रबंधन सक्षम करने के लिए मैन्युअल रूप से एक स्थान फ़ील्ड जोड़ सकते हैं:
|
||||
|
||||

|
||||
|
||||
#### डिफ़ॉल्ट लॉजिक
|
||||
|
||||
स्थान फ़ील्ड वाले डेटा संग्रह में, सिस्टम स्वचालित रूप से निम्नलिखित लॉजिक लागू करेगा:
|
||||
|
||||
1. डेटा बनाते समय, यह स्वचालित रूप से वर्तमान में चयनित स्थान से संबद्ध हो जाता है;
|
||||
2. डेटा फ़िल्टर करते समय, यह स्वचालित रूप से वर्तमान में चयनित स्थान के डेटा तक सीमित हो जाता है।
|
||||
|
||||
### पुराने डेटा को बहु-स्थानों में वर्गीकृत करना
|
||||
|
||||
बहु-स्थान प्लगइन सक्षम होने से पहले मौजूद डेटा के लिए, आप निम्नलिखित चरणों के माध्यम से इसे स्थानों में वर्गीकृत कर सकते हैं:
|
||||
|
||||
#### 1. स्थान फ़ील्ड जोड़ें
|
||||
|
||||
पुराने संग्रह में मैन्युअल रूप से स्थान फ़ील्ड जोड़ें:
|
||||
|
||||

|
||||
|
||||
#### 2. उपयोगकर्ताओं को असाइन न किए गए स्थान पर असाइन करें
|
||||
|
||||
पुराने डेटा का प्रबंधन करने वाले उपयोगकर्ता को सभी स्थानों से संबद्ध करें, जिसमें **असाइन न किया गया स्थान (Unassigned Space)** भी शामिल है, ताकि उस डेटा को देखा जा सके जिसे अभी तक किसी स्थान पर असाइन नहीं किया गया है:
|
||||
|
||||

|
||||
|
||||
#### 3. सभी स्थान डेटा देखने के लिए स्विच करें
|
||||
|
||||
शीर्ष पर, सभी स्थानों से डेटा देखने के लिए चुनें:
|
||||
|
||||

|
||||
|
||||
#### 4. पुराने डेटा असाइनमेंट के लिए एक पेज कॉन्फ़िगर करें
|
||||
|
||||
पुराने डेटा असाइनमेंट के लिए एक नया पेज बनाएँ। **सूची पेज** और **एडिट पेज** पर "स्थान फ़ील्ड" प्रदर्शित करें, ताकि आप मैन्युअल रूप से स्थान असाइनमेंट को समायोजित कर सकें।
|
||||
|
||||

|
||||
|
||||
स्थान फ़ील्ड को संपादन योग्य बनाएँ
|
||||
|
||||

|
||||
|
||||
#### 5. डेटा को मैन्युअल रूप से स्थानों पर असाइन करें
|
||||
|
||||
ऊपर बनाए गए पेज के माध्यम से, डेटा को मैन्युअल रूप से एडिट करें ताकि पुराने डेटा को धीरे-धीरे सही स्थान असाइन किया जा सके (आप स्वयं भी बल्क एडिटिंग कॉन्फ़िगर कर सकते हैं)।
|
||||
@@ -0,0 +1,50 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
---
|
||||
|
||||
# मल्टी-स्पेस
|
||||
|
||||
<PluginInfo name="multi-space" licenseBundled="professional"></PluginInfo>
|
||||
|
||||
## परिचय
|
||||
|
||||
Multi-space एक ही सिस्टम में लॉजिकल डेटा आइसोलेशन देता है।
|
||||
|
||||
## इंस्टॉलेशन
|
||||
|
||||
Enable **Multi-Space** in plugin manager.
|
||||
|
||||

|
||||
|
||||
## उपयोग गाइड
|
||||
|
||||
### मल्टी-स्पेस प्रबंधन
|
||||
|
||||
Open **Users & Permissions** and switch to **Spaces**.
|
||||
|
||||

|
||||
|
||||
#### स्पेस बनाना
|
||||
|
||||
.png)
|
||||
|
||||
#### उपयोगकर्ता असाइन करना
|
||||
|
||||

|
||||
|
||||
### मल्टी-स्पेस स्विच और देखना
|
||||
|
||||

|
||||
|
||||
### मल्टी-स्पेस डेटा प्रबंधन
|
||||
|
||||

|
||||

|
||||
|
||||
### पुराने डेटा का मल्टी-स्पेस वर्गीकरण
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
@@ -1,17 +1,28 @@
|
||||
[
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Ikhtisar",
|
||||
"link": "/multi-app/"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Multi-Aplikasi",
|
||||
"link": "/multi-app/multi-app"
|
||||
"items": [
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Ringkasan",
|
||||
"link": "/multi-app/multi-app"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Mode Memori Bersama",
|
||||
"link": "/multi-app/multi-app/local"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Mode Multi-Lingkungan",
|
||||
"link": "/multi-app/multi-app/remote"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Multi-Ruang",
|
||||
"label": "Multi-Space",
|
||||
"link": "/multi-app/multi-space"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-app-manager"
|
||||
---
|
||||
:::tip
|
||||
Dokumen ini diterjemahkan oleh AI. Untuk ketidakakuratan apa pun, silakan lihat [versi bahasa Inggris](/en)
|
||||
:::
|
||||
|
||||
|
||||
|
||||
# Multi-aplikasi
|
||||
|
||||
## Pengantar
|
||||
@@ -1,133 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-app-manager"
|
||||
---
|
||||
:::tip
|
||||
Dokumen ini diterjemahkan oleh AI. Untuk ketidakakuratan apa pun, silakan lihat [versi bahasa Inggris](/en)
|
||||
:::
|
||||
|
||||
|
||||
# Multi-aplikasi
|
||||
|
||||
|
||||
## Pengantar
|
||||
|
||||
**Plugin Multi-aplikasi** memungkinkan Anda untuk secara dinamis membuat dan mengelola beberapa aplikasi independen tanpa perlu deployment terpisah. Setiap sub-aplikasi adalah instans yang sepenuhnya independen dengan basis data, **plugin**, dan konfigurasinya sendiri.
|
||||
|
||||
#### Skenario Penggunaan
|
||||
- **Multi-tenancy**: Menyediakan instans aplikasi independen, di mana setiap pelanggan memiliki data, konfigurasi **plugin**, dan sistem izinnya sendiri.
|
||||
- **Sistem utama dan sub-sistem untuk domain bisnis yang berbeda**: Sebuah sistem besar yang terdiri dari beberapa aplikasi kecil yang di-deploy secara independen.
|
||||
|
||||
|
||||
:::warning
|
||||
Plugin Multi-aplikasi itu sendiri tidak menyediakan kemampuan berbagi pengguna.
|
||||
Jika Anda perlu berbagi pengguna antar beberapa aplikasi, Anda dapat menggunakannya bersama dengan **[plugin Autentikasi](/auth-verification)**.
|
||||
:::
|
||||
|
||||
|
||||
## Instalasi
|
||||
|
||||
Di manajemen **plugin**, temukan **plugin Multi-aplikasi** dan aktifkan.
|
||||
|
||||

|
||||
|
||||
|
||||
## Panduan Penggunaan
|
||||
|
||||
|
||||
### Membuat Sub-aplikasi
|
||||
|
||||
Di menu pengaturan sistem, klik "Multi-aplikasi" untuk masuk ke halaman manajemen multi-aplikasi:
|
||||
|
||||

|
||||
|
||||
Klik tombol "Tambah Baru" untuk membuat sub-aplikasi baru:
|
||||
|
||||

|
||||
|
||||
#### Deskripsi Kolom Formulir
|
||||
|
||||
* **Nama**: Pengidentifikasi sub-aplikasi, unik secara global.
|
||||
* **Nama Tampilan**: Nama sub-aplikasi yang ditampilkan di antarmuka.
|
||||
* **Mode Startup**:
|
||||
* **Mulai pada kunjungan pertama**: Sub-aplikasi dimulai hanya ketika pengguna mengaksesnya melalui URL untuk pertama kalinya;
|
||||
* **Mulai bersama aplikasi utama**: Sub-aplikasi dimulai bersamaan dengan aplikasi utama (ini akan meningkatkan waktu startup aplikasi utama).
|
||||
* **Port**: Nomor port yang digunakan oleh sub-aplikasi saat berjalan.
|
||||
* **Domain Kustom**: Konfigurasi subdomain independen untuk sub-aplikasi.
|
||||
* **Sematkan ke menu**: Sematkan entri sub-aplikasi ke sisi kiri bilah navigasi atas.
|
||||
* **Koneksi Basis Data**: Digunakan untuk mengonfigurasi **sumber data** untuk sub-aplikasi, mendukung tiga metode berikut:
|
||||
* **Basis data baru**: Menggunakan kembali layanan data saat ini untuk membuat basis data independen.
|
||||
* **Koneksi data baru**: Mengonfigurasi layanan basis data yang sepenuhnya baru.
|
||||
* **Mode Skema**: Membuat skema independen untuk sub-aplikasi di PostgreSQL.
|
||||
* **Peningkatan**: Jika basis data yang terhubung berisi struktur data NocoBase versi lama, maka akan secara otomatis ditingkatkan ke versi saat ini.
|
||||
|
||||
|
||||
### Memulai dan Menghentikan Sub-aplikasi
|
||||
|
||||
Klik tombol **Mulai** untuk memulai sub-aplikasi;
|
||||
> Jika *“Mulai pada kunjungan pertama”* dicentang saat pembuatan, maka akan otomatis dimulai pada kunjungan pertama.
|
||||
|
||||
Klik tombol **Lihat**, sub-aplikasi akan terbuka di tab baru.
|
||||
|
||||

|
||||
|
||||
|
||||
### Status dan Log Sub-aplikasi
|
||||
|
||||
Dalam daftar, Anda dapat melihat penggunaan memori dan CPU setiap aplikasi.
|
||||
|
||||

|
||||
|
||||
Klik tombol **Log** untuk melihat log runtime sub-aplikasi.
|
||||
> Jika sub-aplikasi tidak dapat diakses setelah dimulai (misalnya, karena basis data rusak), Anda dapat menggunakan log untuk memecahkan masalah.
|
||||
|
||||

|
||||
|
||||
|
||||
### Menghapus Sub-aplikasi
|
||||
|
||||
Klik tombol **Hapus** untuk menghapus sub-aplikasi.
|
||||
> Saat menghapus, Anda dapat memilih apakah akan menghapus basis data juga. Harap berhati-hati, karena tindakan ini tidak dapat dibatalkan.
|
||||
|
||||
|
||||
### Mengakses Sub-aplikasi
|
||||
Secara default, sub-aplikasi diakses menggunakan `/_app/:appName/admin/`, contohnya:
|
||||
```
|
||||
http://localhost:13000/_app/a_7zkxoarusnx/admin/
|
||||
```
|
||||
Anda juga dapat mengonfigurasi subdomain independen untuk sub-aplikasi. Anda perlu me-resolve domain ke IP saat ini, dan jika Anda menggunakan Nginx, Anda juga perlu menambahkan domain ke konfigurasi Nginx.
|
||||
|
||||
|
||||
### Mengelola Sub-aplikasi melalui Baris Perintah
|
||||
|
||||
Di direktori root proyek, Anda dapat menggunakan baris perintah untuk mengelola instans sub-aplikasi melalui **PM2**:
|
||||
|
||||
```bash
|
||||
yarn nocobase pm2 list # Melihat daftar instans yang sedang berjalan
|
||||
yarn nocobase pm2 stop [appname] # Menghentikan proses sub-aplikasi tertentu
|
||||
yarn nocobase pm2 delete [appname] # Menghapus proses sub-aplikasi tertentu
|
||||
yarn nocobase pm2 kill # Menghentikan secara paksa semua proses yang dimulai (mungkin termasuk instans aplikasi utama)
|
||||
```
|
||||
|
||||
### Migrasi Data dari Multi-aplikasi Lama
|
||||
|
||||
Masuk ke halaman manajemen multi-aplikasi lama dan klik tombol **Migrasi data ke multi-aplikasi baru** untuk melakukan migrasi data.
|
||||
|
||||

|
||||
|
||||
|
||||
## Pertanyaan Umum
|
||||
|
||||
#### 1. Manajemen Plugin
|
||||
Sub-aplikasi dapat menggunakan **plugin** yang sama dengan aplikasi utama (termasuk versi), tetapi dapat dikonfigurasi dan digunakan secara independen.
|
||||
|
||||
#### 2. Isolasi Basis Data
|
||||
Sub-aplikasi dapat dikonfigurasi dengan basis data independen. Jika Anda ingin berbagi data antar aplikasi, Anda dapat melakukannya melalui **sumber data** eksternal.
|
||||
|
||||
#### 3. Pencadangan dan Migrasi Data
|
||||
Saat ini, pencadangan data di aplikasi utama tidak menyertakan data sub-aplikasi (hanya informasi dasar sub-aplikasi). Anda perlu mencadangkan dan memigrasi data secara manual di dalam setiap sub-aplikasi.
|
||||
|
||||
#### 4. Deployment dan Pembaruan
|
||||
Versi sub-aplikasi akan secara otomatis ditingkatkan bersamaan dengan aplikasi utama, memastikan konsistensi versi antara aplikasi utama dan sub-aplikasi.
|
||||
|
||||
#### 5. Manajemen Sumber Daya
|
||||
Konsumsi sumber daya setiap sub-aplikasi pada dasarnya sama dengan aplikasi utama. Saat ini, satu aplikasi menggunakan sekitar 500-600MB memori.
|
||||
@@ -0,0 +1,22 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# Manajemen Multi-Aplikasi
|
||||
|
||||
## Ringkasan
|
||||
|
||||
NocoBase memungkinkan pengelolaan banyak aplikasi terisolasi melalui satu titik masuk menggunakan AppSupervisor.
|
||||
|
||||
|
||||
Pada tahap awal, satu aplikasi biasanya cukup. Saat skala naik, kebutuhan isolasi dan biaya operasional ikut naik.
|
||||
|
||||
|
||||
Mode ini menjalankan banyak aplikasi dalam satu instance NocoBase. DB bisa terpisah, tetapi proses dan memori dibagi.
|
||||
|
||||

|
||||
|
||||
|
||||
Untuk skala besar, gunakan arsitektur hybrid: Supervisor sebagai kontrol pusat dan beberapa Worker sebagai runtime.
|
||||
|
||||

|
||||
@@ -0,0 +1,65 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# Mode Memori Bersama
|
||||
|
||||
## Pendahuluan
|
||||
|
||||
Pilih mode ini saat ingin memisah domain bisnis tanpa menambah kompleksitas infrastruktur.
|
||||
|
||||
## Panduan Pengguna
|
||||
|
||||
### Variabel Lingkungan
|
||||
|
||||
```bash
|
||||
APP_DISCOVERY_ADAPTER=local
|
||||
APP_PROCESS_ADAPTER=local
|
||||
```
|
||||
|
||||
### Membuat Aplikasi
|
||||
|
||||
In **System Settings**, open **App supervisor**.
|
||||
|
||||

|
||||
|
||||
Click **Add** to create a new application.
|
||||
|
||||

|
||||
|
||||
### Menjalankan Aplikasi
|
||||
|
||||
Click **Start**.
|
||||
|
||||

|
||||
|
||||
### Mengakses Aplikasi
|
||||
|
||||
Default path:
|
||||
|
||||
```bash
|
||||
http://localhost:13000/apps/a_7zkxoarusnx/admin/
|
||||
```
|
||||
|
||||
### Menghentikan Aplikasi
|
||||
|
||||
Click **Stop**.
|
||||
|
||||

|
||||
|
||||
### Status Aplikasi
|
||||
|
||||

|
||||
|
||||
### Menghapus Aplikasi
|
||||
|
||||
Click **Delete**.
|
||||
|
||||

|
||||
|
||||
## FAQ
|
||||
|
||||
- Plugin config is isolated per app.
|
||||
- Database can be isolated per app.
|
||||
- Main app backup does not include data from other apps.
|
||||
- App version follows main app version in shared-memory mode.
|
||||
@@ -0,0 +1,70 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# Mode Multi-Lingkungan
|
||||
|
||||
## Pendahuluan
|
||||
|
||||
Pilih mode ini saat butuh stabilitas, isolasi, dan skalabilitas lebih tinggi.
|
||||
|
||||
## Penyebaran
|
||||
|
||||
- Supervisor: central control plane
|
||||
- Worker: runtime environment
|
||||
- Redis: config cache and command channel
|
||||
|
||||
### Dependensi Arsitektur
|
||||
|
||||
- Redis
|
||||
- Database service for Supervisor and Workers
|
||||
|
||||
### Aplikasi Entry (Supervisor)
|
||||
|
||||
```bash
|
||||
APP_MODE=supervisor
|
||||
APP_DISCOVERY_ADAPTER=remote
|
||||
APP_PROCESS_ADAPTER=remote
|
||||
APP_SUPERVISOR_REDIS_URL=
|
||||
APP_COMMAND_ADPATER=redis
|
||||
APP_COMMAND_REDIS_URL=
|
||||
```
|
||||
|
||||
### Aplikasi Worker (Worker)
|
||||
|
||||
```bash
|
||||
APP_MODE=worker
|
||||
APP_DISCOVERY_ADAPTER=remote
|
||||
APP_PROCESS_ADAPTER=local
|
||||
APP_SUPERVISOR_REDIS_URL=
|
||||
APP_COMMAND_ADPATER=redis
|
||||
APP_COMMAND_REDIS_URL=
|
||||
ENVIRONMENT_NAME=
|
||||
ENVIRONMENT_URL=
|
||||
ENVIRONMENT_PROXY_URL=
|
||||
```
|
||||
|
||||
## Panduan Pengguna
|
||||
|
||||
### Daftar Lingkungan
|
||||
|
||||

|
||||
|
||||
### Membuat Aplikasi
|
||||
|
||||

|
||||
|
||||
### Daftar Aplikasi
|
||||
|
||||

|
||||
|
||||
### Menjalankan Aplikasi
|
||||
|
||||

|
||||
|
||||
### Akses Proxy
|
||||
|
||||
Use `/apps/:appName/admin` via Supervisor.
|
||||
|
||||

|
||||

|
||||
@@ -1,112 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
---
|
||||
:::tip
|
||||
Dokumen ini diterjemahkan oleh AI. Untuk ketidakakuratan apa pun, silakan lihat [versi bahasa Inggris](/en)
|
||||
:::
|
||||
|
||||
|
||||
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
---
|
||||
|
||||
# Multi-ruang
|
||||
|
||||
## Pendahuluan
|
||||
|
||||
Plugin **Multi-ruang** memungkinkan pembuatan beberapa ruang data independen melalui isolasi logis dalam satu instance aplikasi.
|
||||
|
||||
#### Kasus Penggunaan
|
||||
- **Beberapa Toko atau Pabrik**: Proses bisnis dan konfigurasi sistem sangat konsisten, seperti manajemen inventaris terpadu, perencanaan produksi, strategi penjualan, dan templat laporan, tetapi perlu dipastikan bahwa data setiap unit bisnis tidak saling mengganggu.
|
||||
- **Manajemen Multi-organisasi atau Anak Perusahaan**: Beberapa organisasi atau anak perusahaan di bawah satu grup perusahaan berbagi platform yang sama, tetapi setiap merek memiliki data pelanggan, produk, dan pesanan yang independen.
|
||||
|
||||
## Instalasi
|
||||
|
||||
Di manajemen plugin, temukan plugin **Multi-ruang** dan aktifkan.
|
||||
|
||||

|
||||
|
||||
## Panduan Pengguna
|
||||
|
||||
### Manajemen Multi-ruang
|
||||
|
||||
Setelah mengaktifkan plugin, buka halaman pengaturan **"Pengguna & Izin"** dan beralih ke panel **Ruang** untuk mengelola ruang.
|
||||
|
||||
> Secara default, akan ada **Ruang Tidak Terkait (Unassigned Space)** bawaan, yang utamanya digunakan untuk melihat data lama yang belum terhubung dengan ruang mana pun.
|
||||
|
||||

|
||||
|
||||
#### Membuat Ruang
|
||||
|
||||
Klik tombol "Tambah ruang" untuk membuat ruang baru:
|
||||
|
||||
.png)
|
||||
|
||||
#### Menetapkan Pengguna
|
||||
|
||||
Setelah memilih ruang yang telah dibuat, Anda dapat mengatur pengguna yang termasuk dalam ruang tersebut di sisi kanan:
|
||||
|
||||
> **Tips:** Setelah menetapkan pengguna ke ruang, Anda perlu **memuat ulang halaman secara manual** agar daftar pengalihan ruang di pojok kanan atas diperbarui dan menampilkan ruang terbaru.
|
||||
|
||||

|
||||
|
||||
### Mengalihkan dan Melihat Multi-ruang
|
||||
|
||||
Anda dapat mengalihkan ruang saat ini di pojok kanan atas.
|
||||
Saat Anda mengklik **ikon mata** di sisi kanan (dalam kondisi disorot), Anda dapat melihat data dari beberapa ruang secara bersamaan.
|
||||
|
||||

|
||||
|
||||
### Manajemen Data Multi-ruang
|
||||
|
||||
Setelah mengaktifkan plugin, sistem akan secara otomatis menambahkan **kolom Ruang** saat membuat **koleksi**.
|
||||
**Hanya koleksi yang berisi kolom ini yang akan disertakan dalam logika manajemen ruang.**
|
||||
|
||||

|
||||
|
||||
Untuk **koleksi** yang sudah ada, Anda dapat menambahkan kolom Ruang secara manual untuk mengaktifkan manajemen ruang:
|
||||
|
||||

|
||||
|
||||
#### Logika Default
|
||||
|
||||
Dalam **koleksi** yang berisi kolom Ruang, sistem akan secara otomatis menerapkan logika berikut:
|
||||
|
||||
1. Saat membuat data, data akan secara otomatis terhubung dengan ruang yang sedang dipilih;
|
||||
2. Saat memfilter data, data akan secara otomatis dibatasi pada data dari ruang yang sedang dipilih.
|
||||
|
||||
### Mengklasifikasikan Data Lama ke dalam Multi-ruang
|
||||
|
||||
Untuk data yang sudah ada sebelum plugin Multi-ruang diaktifkan, Anda dapat mengklasifikasikannya ke dalam ruang melalui langkah-langkah berikut:
|
||||
|
||||
#### 1. Menambahkan kolom Ruang
|
||||
|
||||
Tambahkan kolom Ruang secara manual ke **koleksi** lama:
|
||||
|
||||

|
||||
|
||||
#### 2. Menetapkan pengguna ke Ruang Tidak Terkait
|
||||
|
||||
Hubungkan pengguna yang mengelola data lama ke semua ruang, termasuk **Ruang Tidak Terkait (Unassigned Space)**, untuk melihat data yang belum ditetapkan ke ruang mana pun:
|
||||
|
||||

|
||||
|
||||
#### 3. Beralih untuk melihat semua data ruang
|
||||
|
||||
Di bagian atas, pilih untuk melihat data dari semua ruang:
|
||||
|
||||

|
||||
|
||||
#### 4. Mengonfigurasi halaman untuk penetapan data lama
|
||||
|
||||
Buat halaman baru untuk penetapan data lama. Tampilkan "kolom Ruang" di **halaman daftar** dan **halaman edit** agar dapat menyesuaikan penetapan ruang secara manual.
|
||||
|
||||

|
||||
|
||||
Jadikan kolom Ruang dapat diedit
|
||||
|
||||

|
||||
|
||||
#### 5. Menetapkan ruang data secara manual
|
||||
|
||||
Melalui halaman yang dibuat di atas, edit data secara manual untuk secara bertahap menetapkan ruang yang benar ke data lama (Anda juga dapat mengonfigurasi pengeditan massal sendiri).
|
||||
@@ -0,0 +1,50 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
---
|
||||
|
||||
# Multi-Space
|
||||
|
||||
<PluginInfo name="multi-space" licenseBundled="professional"></PluginInfo>
|
||||
|
||||
## Pendahuluan
|
||||
|
||||
Multi-Space memberi isolasi data logis di dalam satu instance aplikasi.
|
||||
|
||||
## Instalasi
|
||||
|
||||
Enable **Multi-Space** in plugin manager.
|
||||
|
||||

|
||||
|
||||
## Panduan Pengguna
|
||||
|
||||
### Manajemen Multi-Space
|
||||
|
||||
Open **Users & Permissions** and switch to **Spaces**.
|
||||
|
||||

|
||||
|
||||
#### Membuat Space
|
||||
|
||||
.png)
|
||||
|
||||
#### Menetapkan Pengguna
|
||||
|
||||

|
||||
|
||||
### Beralih dan Melihat Multi-Space
|
||||
|
||||

|
||||
|
||||
### Manajemen Data Multi-Space
|
||||
|
||||

|
||||

|
||||
|
||||
### Klasifikasi Data Lama ke Multi-Space
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
@@ -1,17 +1,28 @@
|
||||
[
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Panoramica",
|
||||
"link": "/multi-app/"
|
||||
"label": "Multi-app",
|
||||
"items": [
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Panoramica",
|
||||
"link": "/multi-app/multi-app"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Modalità memoria condivisa",
|
||||
"link": "/multi-app/multi-app/local"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Modalità multi-ambiente",
|
||||
"link": "/multi-app/multi-app/remote"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Multi-applicazione",
|
||||
"link": "/multi-app/multi-app"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Multi-spazio",
|
||||
"label": "Multi-space",
|
||||
"link": "/multi-app/multi-space"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-app-manager"
|
||||
---
|
||||
:::tip Avviso di traduzione IA
|
||||
Questa documentazione è stata tradotta automaticamente dall'IA.
|
||||
:::
|
||||
|
||||
|
||||
|
||||
# Multi-app
|
||||
|
||||
## Introduzione
|
||||
@@ -1,122 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-app-manager"
|
||||
---
|
||||
:::tip Avviso di traduzione IA
|
||||
Questa documentazione è stata tradotta automaticamente dall'IA.
|
||||
:::
|
||||
|
||||
|
||||
# Multi-applicazione
|
||||
|
||||
## Introduzione
|
||||
|
||||
Il **plugin Multi-applicazione** Le permette di creare e gestire dinamicamente più applicazioni indipendenti, senza la necessità di deployment separati. Ogni sotto-applicazione è un'istanza completamente autonoma, con il proprio database, i propri plugin e la propria configurazione.
|
||||
|
||||
#### Casi d'uso
|
||||
- **Multi-tenancy**: Offrire istanze applicative indipendenti, dove ogni cliente ha i propri dati, le configurazioni dei plugin e il proprio sistema di permessi.
|
||||
- **Sistemi principali e secondari per diversi domini di business**: Un sistema di grandi dimensioni composto da più applicazioni più piccole, implementate in modo indipendente.
|
||||
|
||||
:::warning
|
||||
Il plugin Multi-applicazione di per sé non offre funzionalità di condivisione degli utenti.
|
||||
Se ha bisogno di condividere gli utenti tra più applicazioni, può utilizzarlo in combinazione con il **[plugin di Autenticazione](/auth-verification)**.
|
||||
:::
|
||||
|
||||
## Installazione
|
||||
|
||||
Nel gestore dei plugin, trovi il plugin **Multi-applicazione** e lo abiliti.
|
||||
|
||||

|
||||
|
||||
## Guida all'uso
|
||||
|
||||
### Creazione di una sotto-applicazione
|
||||
|
||||
Nel menu delle impostazioni di sistema, clicchi su "Multi-applicazione" per accedere alla pagina di gestione delle multi-applicazioni:
|
||||
|
||||

|
||||
|
||||
Clicchi sul pulsante "Aggiungi nuovo" per creare una nuova sotto-applicazione:
|
||||
|
||||

|
||||
|
||||
#### Descrizione dei campi del modulo
|
||||
|
||||
* **Nome**: Identificatore della sotto-applicazione, globalmente unico.
|
||||
* **Nome visualizzato**: Il nome della sotto-applicazione visualizzato nell'interfaccia.
|
||||
* **Modalità di avvio**:
|
||||
* **Avvia alla prima visita**: La sotto-applicazione si avvia solo quando un utente la accede tramite URL per la prima volta.
|
||||
* **Avvia con l'applicazione principale**: La sotto-applicazione si avvia contemporaneamente all'applicazione principale (questo aumenterà il tempo di avvio dell'applicazione principale).
|
||||
* **Porta**: Il numero di porta utilizzato dalla sotto-applicazione durante l'esecuzione.
|
||||
* **Dominio personalizzato**: Configuri un sottodominio indipendente per la sotto-applicazione.
|
||||
* **Fissa al menu**: Fissi la voce della sotto-applicazione sul lato sinistro della barra di navigazione superiore.
|
||||
* **Connessione al database**: Utilizzata per configurare la fonte dati della sotto-applicazione, supporta i seguenti tre metodi:
|
||||
* **Nuovo database**: Riutilizzi il servizio dati corrente per creare un database indipendente.
|
||||
* **Nuova connessione dati**: Configuri un servizio di database completamente nuovo.
|
||||
* **Modalità Schema**: Crei uno schema indipendente per la sotto-applicazione in PostgreSQL.
|
||||
* **Aggiornamento**: Se il database connesso contiene una versione precedente della struttura dati di NocoBase, verrà automaticamente aggiornato alla versione corrente.
|
||||
|
||||
### Avvio e arresto di una sotto-applicazione
|
||||
|
||||
Clicchi sul pulsante **Avvia** per avviare la sotto-applicazione;
|
||||
> Se durante la creazione è stata selezionata l'opzione *"Avvia alla prima visita"*, la sotto-applicazione si avvierà automaticamente al primo accesso.
|
||||
|
||||
Clicchi sul pulsante **Visualizza** per aprire la sotto-applicazione in una nuova scheda.
|
||||
|
||||

|
||||
|
||||
### Stato e log della sotto-applicazione
|
||||
|
||||
Nell'elenco, può visualizzare l'utilizzo di memoria e CPU di ogni applicazione.
|
||||
|
||||

|
||||
|
||||
Clicchi sul pulsante **Log** per visualizzare i log di runtime della sotto-applicazione.
|
||||
> Se la sotto-applicazione non è accessibile dopo l'avvio (ad esempio, a causa di un database danneggiato), può utilizzare i log per la risoluzione dei problemi.
|
||||
|
||||

|
||||
|
||||
### Eliminazione di una sotto-applicazione
|
||||
|
||||
Clicchi sul pulsante **Elimina** per rimuovere la sotto-applicazione.
|
||||
> Durante l'eliminazione, può scegliere se eliminare anche il database. Proceda con cautela, poiché questa azione è irreversibile.
|
||||
|
||||
### Accesso a una sotto-applicazione
|
||||
Per impostazione predefinita, le sotto-applicazioni sono accessibili utilizzando `/_app/:appName/admin/`, ad esempio:
|
||||
```
|
||||
http://localhost:13000/_app/a_7zkxoarusnx/admin/
|
||||
```
|
||||
Inoltre, può configurare un sottodominio indipendente per la sotto-applicazione. Dovrà risolvere il dominio all'IP corrente e, se utilizza Nginx, dovrà anche aggiungere il dominio alla configurazione di Nginx.
|
||||
|
||||
### Gestione delle sotto-applicazioni tramite riga di comando
|
||||
|
||||
Nella directory radice del progetto, può utilizzare la riga di comando per gestire le istanze delle sotto-applicazioni tramite **PM2**:
|
||||
|
||||
```bash
|
||||
yarn nocobase pm2 list # Visualizza l'elenco delle istanze attualmente in esecuzione
|
||||
yarn nocobase pm2 stop [appname] # Ferma un processo di sotto-applicazione specifico
|
||||
yarn nocobase pm2 delete [appname] # Elimina un processo di sotto-applicazione specifico
|
||||
yarn nocobase pm2 kill # Termina forzatamente tutti i processi avviati (potrebbe includere l'istanza dell'applicazione principale)
|
||||
```
|
||||
|
||||
### Migrazione dei dati dalla vecchia Multi-applicazione
|
||||
|
||||
Acceda alla vecchia pagina di gestione delle multi-applicazioni e clicchi sul pulsante **Migra dati alla nuova Multi-applicazione** per avviare la migrazione dei dati.
|
||||
|
||||

|
||||
|
||||
## Domande Frequenti
|
||||
|
||||
#### 1. Gestione dei plugin
|
||||
Le sotto-applicazioni possono utilizzare gli stessi plugin dell'applicazione principale (incluse le versioni), ma possono essere configurate e utilizzate in modo indipendente.
|
||||
|
||||
#### 2. Isolamento del database
|
||||
Le sotto-applicazioni possono essere configurate con database indipendenti. Se desidera condividere dati tra le applicazioni, può farlo tramite fonti dati esterne.
|
||||
|
||||
#### 3. Backup e migrazione dei dati
|
||||
Attualmente, i backup dei dati nell'applicazione principale non includono i dati delle sotto-applicazioni (solo le informazioni di base delle sotto-applicazioni). È necessario eseguire manualmente il backup e la migrazione dei dati all'interno di ogni sotto-applicazione.
|
||||
|
||||
#### 4. Deployment e aggiornamenti
|
||||
La versione di una sotto-applicazione verrà automaticamente aggiornata insieme all'applicazione principale, garantendo la coerenza della versione tra l'applicazione principale e le sotto-applicazioni.
|
||||
|
||||
#### 5. Gestione delle risorse
|
||||
Il consumo di risorse di ogni sotto-applicazione è sostanzialmente lo stesso dell'applicazione principale. Attualmente, una singola applicazione utilizza circa 500-600 MB di memoria.
|
||||
@@ -0,0 +1,41 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# Gestione multi-applicazione
|
||||
|
||||
## Panoramica
|
||||
|
||||
La gestione multi-applicazione di NocoBase consente di creare e gestire più istanze **fisicamente isolate** in uno o più ambienti runtime. Con **AppSupervisor** tutto viene gestito da un unico ingresso.
|
||||
|
||||
## Applicazione singola
|
||||
|
||||
Nelle fasi iniziali, la maggior parte dei progetti parte da una sola applicazione.
|
||||
|
||||
Con la crescita emergono limiti naturali:
|
||||
|
||||
- Aumento continuo delle funzionalità
|
||||
- Difficoltà di isolamento tra domini business
|
||||
- Costi di manutenzione e scalabilità in crescita
|
||||
|
||||
## Multi-app in memoria condivisa
|
||||
|
||||
In questo modo più applicazioni girano nella stessa istanza NocoBase. Ogni app è indipendente (DB dedicato, ciclo vita separato), ma processo e memoria sono condivisi.
|
||||
|
||||

|
||||
|
||||
Vantaggi:
|
||||
|
||||
- Separazione per applicazione
|
||||
- Configurazione più chiara
|
||||
- Minore consumo di risorse rispetto a multi-processo/multi-container
|
||||
|
||||
Limite: carichi elevati o errori di un'app possono impattare le altre.
|
||||
|
||||
## Deployment ibrido multi-ambiente
|
||||
|
||||
Quando aumentano scala e complessità, il modello shared-memory può non bastare. Il deployment ibrido multi-ambiente introduce un'app di ingresso e più ambienti di esecuzione.
|
||||
|
||||

|
||||
|
||||
Questo approccio è adatto a SaaS, ambienti demo numerosi e scenari multi-tenant.
|
||||
@@ -0,0 +1,62 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# Modalità memoria condivisa
|
||||
|
||||
## Introduzione
|
||||
|
||||
Usa questa modalità per separare i domini business a livello applicativo senza introdurre un'architettura operativa complessa.
|
||||
|
||||
## Guida rapida
|
||||
|
||||
### Variabili ambiente
|
||||
|
||||
```bash
|
||||
APP_DISCOVERY_ADAPTER=local
|
||||
APP_PROCESS_ADAPTER=local
|
||||
```
|
||||
|
||||
### Creazione applicazione
|
||||
|
||||
In **System Settings**, apri **App supervisor** e clicca **Add**.
|
||||
|
||||

|
||||

|
||||
|
||||
### Parametri principali
|
||||
|
||||
- **Application display name**
|
||||
- **Application ID**
|
||||
- **Start mode** (al primo accesso / con app principale)
|
||||
- **Environments** (`local`)
|
||||
- **Database** (nuovo DB, nuova connessione, nuovo schema)
|
||||
- **Upgrade**
|
||||
- **JWT Secret**
|
||||
- **Custom domain**
|
||||
|
||||
### Operazioni
|
||||
|
||||
- **Start**
|
||||
- **Visit**
|
||||
- **Stop**
|
||||
- **Delete**
|
||||
|
||||
Esempio URL:
|
||||
|
||||
```bash
|
||||
http://localhost:13000/apps/a_7zkxoarusnx/admin/
|
||||
```
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
## FAQ
|
||||
|
||||
- Plugin condivisi con app principale, configurazioni isolate
|
||||
- DB indipendente per app
|
||||
- Backup dell'app principale non include i dati delle altre app
|
||||
- Le versioni seguono quella dell'app principale
|
||||
- JWT separato = migliore isolamento sessione
|
||||
@@ -0,0 +1,75 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# Modalità multi-ambiente
|
||||
|
||||
## Introduzione
|
||||
|
||||
Quando shared-memory non è sufficiente in termini di isolamento e stabilità, usa il modello ibrido multi-ambiente.
|
||||
|
||||
## Deployment
|
||||
|
||||
- **Supervisor**: gestione centralizzata
|
||||
- **Worker**: esecuzione reale delle app
|
||||
- **Redis**: cache configurazione e canale comandi
|
||||
|
||||
La creazione automatica degli ambienti non è ancora disponibile.
|
||||
|
||||
### Variabili Supervisor
|
||||
|
||||
```bash
|
||||
APP_MODE=supervisor
|
||||
APP_DISCOVERY_ADAPTER=remote
|
||||
APP_PROCESS_ADAPTER=remote
|
||||
APP_SUPERVISOR_REDIS_URL=
|
||||
APP_COMMAND_ADPATER=redis
|
||||
APP_COMMAND_REDIS_URL=
|
||||
```
|
||||
|
||||
### Variabili Worker
|
||||
|
||||
```bash
|
||||
APP_MODE=worker
|
||||
APP_DISCOVERY_ADAPTER=remote
|
||||
APP_PROCESS_ADAPTER=local
|
||||
APP_SUPERVISOR_REDIS_URL=
|
||||
APP_COMMAND_ADPATER=redis
|
||||
APP_COMMAND_REDIS_URL=
|
||||
ENVIRONMENT_NAME=
|
||||
ENVIRONMENT_URL=
|
||||
ENVIRONMENT_PROXY_URL=
|
||||
```
|
||||
|
||||
### Esempio Docker Compose
|
||||
|
||||
```yaml
|
||||
services:
|
||||
redis:
|
||||
image: redis/redis-stack-server:latest
|
||||
supervisor:
|
||||
image: nocobase/nocobase:alpha
|
||||
environment:
|
||||
- APP_MODE=supervisor
|
||||
- APP_DISCOVERY_ADAPTER=remote
|
||||
- APP_PROCESS_ADAPTER=remote
|
||||
- APP_SUPERVISOR_REDIS_URL=redis://redis:6379/0
|
||||
- APP_COMMAND_ADAPTER=redis
|
||||
- APP_COMMAND_REDIS_URL=redis://redis:6379/0
|
||||
```
|
||||
|
||||
## Uso
|
||||
|
||||
Per le operazioni base vedi [modalità memoria condivisa](./local.md).
|
||||
|
||||
- Lista ambienti in **Environment**
|
||||
- Selezione ambiente in creazione app
|
||||
- Avvio in coda per evitare race condition
|
||||
- Accesso proxy via `/apps/:appName/admin`
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
@@ -1,118 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
---
|
||||
:::tip Avviso di traduzione IA
|
||||
Questa documentazione è stata tradotta automaticamente dall'IA.
|
||||
:::
|
||||
|
||||
|
||||
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
---
|
||||
|
||||
# Multi-spazio
|
||||
|
||||
|
||||
|
||||
## Introduzione
|
||||
|
||||
Il **plugin Multi-spazio** consente di creare più spazi dati indipendenti all'interno di una singola istanza dell'applicazione, tramite isolamento logico.
|
||||
|
||||
#### Casi d'uso
|
||||
- **Negozi o fabbriche multiple**: I processi aziendali e le configurazioni di sistema sono altamente coerenti (ad esempio, gestione unificata dell'inventario, pianificazione della produzione, strategie di vendita e modelli di report), ma è necessario garantire che i dati di ciascuna unità aziendale non interferiscano tra loro.
|
||||
- **Gestione di più organizzazioni o filiali**: Diverse organizzazioni o filiali di un gruppo aziendale condividono la stessa piattaforma, ma ogni marchio ha dati indipendenti per clienti, prodotti e ordini.
|
||||
|
||||
|
||||
## Installazione
|
||||
|
||||
Nel gestore dei **plugin**, trovi il **plugin Multi-spazio** e lo abiliti.
|
||||
|
||||

|
||||
|
||||
|
||||
## Manuale Utente
|
||||
|
||||
### Gestione Multi-spazio
|
||||
|
||||
Dopo aver abilitato il **plugin**, vada alla pagina delle impostazioni **"Utenti e Permessi"** e passi al pannello **Spazi** per gestire gli spazi.
|
||||
|
||||
> Inizialmente, è presente uno **Spazio non assegnato** integrato, utilizzato principalmente per visualizzare i dati meno recenti non associati ad alcuno spazio.
|
||||
|
||||

|
||||
|
||||
#### Creare uno Spazio
|
||||
|
||||
Clicchi sul pulsante "Aggiungi spazio" per creare un nuovo spazio:
|
||||
|
||||
.png)
|
||||
|
||||
#### Assegnare Utenti
|
||||
|
||||
Dopo aver selezionato uno spazio creato, può impostare gli utenti appartenenti a quello spazio sulla destra:
|
||||
|
||||
> **Suggerimento:** Dopo aver assegnato gli utenti a uno spazio, è necessario **aggiornare manualmente la pagina** affinché l'elenco di selezione dello spazio nell'angolo in alto a destra si aggiorni e mostri lo spazio più recente.
|
||||
|
||||

|
||||
|
||||
|
||||
### Cambiare e Visualizzare Multi-spazio
|
||||
|
||||
Nell'angolo in alto a destra, può cambiare lo spazio corrente.
|
||||
Quando clicca sull'**icona a forma di occhio** sulla destra (nello stato evidenziato), può visualizzare contemporaneamente i dati di più spazi.
|
||||
|
||||

|
||||
|
||||
### Gestione Dati Multi-spazio
|
||||
|
||||
Dopo aver abilitato il **plugin**, il sistema aggiungerà automaticamente un **campo Spazio** quando crea una **collezione**.
|
||||
**Solo le collezioni che contengono questo campo saranno incluse nella logica di gestione dello spazio.**
|
||||
|
||||

|
||||
|
||||
Per le **collezioni** esistenti, può aggiungere manualmente un campo Spazio per abilitare la gestione dello spazio:
|
||||
|
||||

|
||||
|
||||
#### Logica Predefinita
|
||||
|
||||
Nelle **collezioni** che contengono il campo Spazio, il sistema applicherà automaticamente la seguente logica:
|
||||
|
||||
1. Quando crea dati, questi vengono automaticamente associati allo spazio attualmente selezionato;
|
||||
2. Quando filtra i dati, questi vengono automaticamente limitati ai dati dello spazio attualmente selezionato.
|
||||
|
||||
|
||||
### Classificazione dei Dati Meno Recenti nel Multi-spazio
|
||||
|
||||
Per i dati esistenti prima dell'abilitazione del **plugin Multi-spazio**, può classificarli negli spazi seguendo questi passaggi:
|
||||
|
||||
#### 1. Aggiungere il campo Spazio
|
||||
|
||||
Aggiunga manualmente il campo Spazio alla **collezione** meno recente:
|
||||
|
||||

|
||||
|
||||
#### 2. Assegnare gli utenti allo Spazio non assegnato
|
||||
|
||||
Associ gli utenti che gestiscono i dati meno recenti a tutti gli spazi, includendo lo **Spazio non assegnato**, per visualizzare i dati che non sono ancora stati assegnati a uno spazio:
|
||||
|
||||

|
||||
|
||||
#### 3. Passare alla visualizzazione di tutti i dati dello spazio
|
||||
|
||||
In alto, selezioni la visualizzazione dei dati da tutti gli spazi:
|
||||
|
||||

|
||||
|
||||
#### 4. Configurare una pagina per l'assegnazione dei dati meno recenti
|
||||
|
||||
Crei una nuova pagina per l'assegnazione dei dati meno recenti. Visualizzi il "campo Spazio" nella **pagina elenco** e nella **pagina di modifica** per regolare manualmente l'assegnazione dello spazio.
|
||||
|
||||

|
||||
|
||||
Renda il campo Spazio modificabile
|
||||
|
||||

|
||||
|
||||
#### 5. Assegnare manualmente i dati agli spazi
|
||||
|
||||
Tramite la pagina creata sopra, modifichi manualmente i dati per assegnare gradualmente lo spazio corretto ai dati meno recenti (può anche configurare l'editing in blocco autonomamente).
|
||||
@@ -0,0 +1,38 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
---
|
||||
|
||||
# Multi-space
|
||||
|
||||
<PluginInfo name="multi-space" licenseBundled="professional"></PluginInfo>
|
||||
|
||||
## Introduzione
|
||||
|
||||
Il plugin **Multi-space** consente di isolare logicamente più spazi dati nella stessa istanza.
|
||||
|
||||
## Installazione
|
||||
|
||||
Abilita **Multi-Space** dal plugin manager.
|
||||
|
||||

|
||||
|
||||
## Guida
|
||||
|
||||
- Gestione spazi in **Users & Permissions** > **Spaces**
|
||||
- Creazione spazio con **Add space**
|
||||
- Assegnazione utenti per spazio
|
||||
- Switch spazio in alto a destra
|
||||
- Campo **Space** necessario nelle collection
|
||||
|
||||

|
||||
.png)
|
||||

|
||||

|
||||
|
||||
Per dati legacy:
|
||||
|
||||
1. Aggiungi campo Space
|
||||
2. Includi utenti in **Unassigned Space**
|
||||
3. Mostra tutti gli spazi
|
||||
4. Configura pagina di assegnazione
|
||||
5. Assegna manualmente (o batch)
|
||||
@@ -1,17 +1,28 @@
|
||||
[
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "概要",
|
||||
"link": "/multi-app/"
|
||||
"label": "マルチアプリ",
|
||||
"items": [
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "概要",
|
||||
"link": "/multi-app/multi-app"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "共有メモリモード",
|
||||
"link": "/multi-app/multi-app/local"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "マルチ環境モード",
|
||||
"link": "/multi-app/multi-app/remote"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "複数アプリ",
|
||||
"link": "/multi-app/multi-app"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "複数スペース",
|
||||
"label": "マルチスペース",
|
||||
"link": "/multi-app/multi-space"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-app-manager"
|
||||
---
|
||||
:::tip
|
||||
このドキュメントはAIによって翻訳されました。不正確な情報については、[英語版](/en)をご参照ください
|
||||
:::
|
||||
|
||||
|
||||
|
||||
# マルチアプリ
|
||||
|
||||
## はじめに
|
||||
@@ -1,122 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-app-manager"
|
||||
---
|
||||
:::tip
|
||||
このドキュメントはAIによって翻訳されました。不正確な情報については、[英語版](/en)をご参照ください
|
||||
:::
|
||||
|
||||
|
||||
# マルチアプリ
|
||||
|
||||
## はじめに
|
||||
|
||||
**マルチアプリプラグイン** を使うと、複数の独立したアプリケーションを個別にデプロイすることなく、動的に作成・管理できます。各子アプリは完全に独立したインスタンスであり、独自のデータベース、プラグイン、設定を持っています。
|
||||
|
||||
#### 利用シーン
|
||||
- **マルチテナンシー**:独立したアプリケーションインスタンスを提供し、各顧客が独自のデータ、プラグイン設定、権限システムを持つことができます。
|
||||
- **異なるビジネス領域におけるメインシステムとサブシステム**:大規模なシステムを、複数の独立してデプロイされた小規模なアプリケーションで構成できます。
|
||||
|
||||
:::warning
|
||||
マルチアプリプラグイン自体は、ユーザー共有機能を提供していません。
|
||||
複数のアプリ間でユーザーを連携させたい場合は、**[認証プラグイン](/auth-verification)** と組み合わせて使用できます。
|
||||
:::
|
||||
|
||||
## インストール
|
||||
|
||||
プラグイン管理画面で **マルチアプリ** プラグインを見つけて有効にしてください。
|
||||
|
||||

|
||||
|
||||
## 利用ガイド
|
||||
|
||||
### 子アプリの作成
|
||||
|
||||
システム設定メニューで「マルチアプリ」をクリックすると、マルチアプリ管理ページに移動します。
|
||||
|
||||

|
||||
|
||||
「新規追加」ボタンをクリックして、新しい子アプリを作成します。
|
||||
|
||||

|
||||
|
||||
#### フォームフィールドの説明
|
||||
|
||||
* **名前**:子アプリの識別子です。グローバルで一意である必要があります。
|
||||
* **表示名**:子アプリがインターフェースに表示される名前です。
|
||||
* **起動モード**:
|
||||
* **初回アクセス時に起動**:ユーザーがURL経由で初めて子アプリにアクセスしたときにのみ起動します。
|
||||
* **メインアプリと同時に起動**:メインアプリの起動時に子アプリも同時に起動します(メインアプリの起動時間が増加します)。
|
||||
* **ポート**:子アプリが実行時に使用するポート番号です。
|
||||
* **カスタムドメイン**:子アプリ用に独立したサブドメインを設定します。
|
||||
* **メニューに固定**:子アプリのエントリをトップナビゲーションバーの左側に固定表示します。
|
||||
* **データベース接続**:子アプリのデータソースを設定するために使用します。以下の3つの方法をサポートしています。
|
||||
* **新しいデータベース**:現在のデータサービスを再利用し、独立したデータベースを作成します。
|
||||
* **新しいデータ接続**:完全に新しいデータベースサービスを設定します。
|
||||
* **スキーマモード**:PostgreSQLで子アプリ用に独立したスキーマを作成します。
|
||||
* **アップグレード**:接続されたデータベースに古いバージョンのNocoBaseデータ構造が存在する場合、現在のバージョンに自動的にアップグレードされます。
|
||||
|
||||
### 子アプリの起動と停止
|
||||
|
||||
**起動** ボタンをクリックすると、子アプリを起動できます。
|
||||
> 作成時に *「初回アクセス時に起動」* を選択した場合、初回アクセス時に自動的に起動します。
|
||||
|
||||
**表示** ボタンをクリックすると、新しいタブで子アプリが開きます。
|
||||
|
||||

|
||||
|
||||
### 子アプリの実行状態とログ
|
||||
|
||||
リストで各アプリケーションが使用しているメモリとCPUを確認できます。
|
||||
|
||||

|
||||
|
||||
**ログ** ボタンをクリックすると、子アプリの実行ログを表示できます。
|
||||
> 子アプリが起動後にアクセスできない場合(例:データベースの破損など)、ログを確認してトラブルシューティングを行えます。
|
||||
|
||||

|
||||
|
||||
### 子アプリの削除
|
||||
|
||||
**削除** ボタンをクリックすると、子アプリを削除できます。
|
||||
> 削除時には、データベースも一緒に削除するかどうかを選択できます。この操作は元に戻せませんので、慎重に進めてください。
|
||||
|
||||
### 子アプリへのアクセス
|
||||
デフォルトでは、`/_app/:appName/admin/` を使用して子アプリにアクセスします。例:
|
||||
```
|
||||
http://localhost:13000/_app/a_7zkxoarusnx/admin/
|
||||
```
|
||||
また、子アプリ用に独立したサブドメインを設定することも可能です。その場合、ドメインを現在のIPに解決する必要があり、Nginxを使用している場合は、Nginxの設定にもドメインを追加する必要があります。
|
||||
|
||||
### コマンドラインからの子アプリ管理
|
||||
|
||||
プロジェクトのルートディレクトリで、コマンドラインから **PM2** を介して子アプリのインスタンスを管理できます。
|
||||
|
||||
```bash
|
||||
yarn nocobase pm2 list # 現在実行中のインスタンスリストを表示
|
||||
yarn nocobase pm2 stop [appname] # 特定の子アプリプロセスを停止
|
||||
yarn nocobase pm2 delete [appname] # 特定の子アプリプロセスを削除
|
||||
yarn nocobase pm2 kill # 起動中のすべてのプロセスを強制終了(メインアプリのインスタンスを含む場合があります)
|
||||
```
|
||||
|
||||
### 以前のマルチアプリからのデータ移行
|
||||
|
||||
以前のマルチアプリ管理ページに移動し、**新しいマルチアプリにデータを移行** ボタンをクリックしてデータを移行します。
|
||||
|
||||

|
||||
|
||||
## よくある質問
|
||||
|
||||
#### 1. プラグイン管理
|
||||
子アプリが使用できるプラグインは、メインアプリと同じです(バージョンも含む)。ただし、プラグインは個別に設定・使用できます。
|
||||
|
||||
#### 2. データベースの分離
|
||||
子アプリは独立したデータベースを設定できます。アプリ間でデータを共有したい場合は、外部データソースを介して実現できます。
|
||||
|
||||
#### 3. データバックアップと移行
|
||||
現在、メインアプリでのデータバックアップは子アプリのデータを含みません(子アプリの基本情報のみが含まれます)。子アプリ内で手動でデータをバックアップおよび移行する必要があります。
|
||||
|
||||
#### 4. デプロイと更新
|
||||
子アプリのバージョンは、メインアプリのアップグレードに自動的に追従します。これにより、メインアプリと子アプリのバージョンの一貫性が自動的に保証されます。
|
||||
|
||||
#### 5. リソース管理
|
||||
各子アプリのリソース消費量は、メインアプリとほぼ同じです。現在、単一のアプリケーションあたりのメモリ使用量は約500〜600MBです。
|
||||
@@ -0,0 +1,66 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# マルチアプリ管理
|
||||
|
||||
## 機能概要
|
||||
|
||||
マルチアプリ管理は、NocoBase が提供する統合アプリケーション管理ソリューションです。1 つまたは複数の実行環境で、物理的に分離された複数の NocoBase アプリインスタンスを作成・管理できます。AppSupervisor により、単一の入口から複数アプリを作成・運用でき、業務要件や成長段階の違いに対応できます。
|
||||
|
||||
## 単一アプリ
|
||||
|
||||
プロジェクト初期は、多くのユーザーが単一アプリから開始します。
|
||||
|
||||
このモードでは、1 つの NocoBase インスタンスのみをデプロイします。すべての業務機能、データ、ユーザーが同一アプリ内で動作します。デプロイが簡単で設定コストも低く、PoC、小規模プロジェクト、社内ツールに適しています。
|
||||
|
||||
ただし、業務が複雑化すると、単一アプリには次のような制約が生じます。
|
||||
|
||||
- 機能が積み上がり、システムが肥大化する
|
||||
- 業務ドメイン間の分離が難しい
|
||||
- 拡張・保守コストが継続的に増える
|
||||
|
||||
この段階では、保守性と拡張性を高めるために、業務を複数アプリへ分割するのが一般的です。
|
||||
|
||||
## 共有メモリ型マルチアプリ
|
||||
|
||||
業務を分割したい一方で、複雑なデプロイ/運用構成を導入したくない場合は、共有メモリ型マルチアプリモードに移行できます。
|
||||
|
||||
このモードでは、1 つの NocoBase インスタンス内で複数アプリを同時に実行できます。各アプリは独立しており、独自 DB に接続でき、個別に作成・起動・停止できます。一方で同一プロセス/メモリ空間を共有するため、運用対象は 1 つの NocoBase インスタンスのままです。
|
||||
|
||||

|
||||
|
||||
この方式の主な利点は次の通りです。
|
||||
|
||||
- 業務をアプリ単位で分割できる
|
||||
- アプリ間の機能・設定がより明確になる
|
||||
- マルチプロセス/マルチコンテナ方式よりリソース消費が少ない
|
||||
|
||||
ただし、すべてのアプリが同一プロセスで動作するため、CPU・メモリを共有します。単一アプリの障害や高負荷が他アプリの安定性に影響する場合があります。
|
||||
|
||||
アプリ数が増加し続ける場合や、より高い分離性・安定性が必要な場合は、さらに上位のアーキテクチャへ進む必要があります。
|
||||
|
||||
## マルチ環境ハイブリッドデプロイ
|
||||
|
||||
業務規模と複雑性が高まり、アプリを大規模に拡張する必要が出ると、共有メモリ型はリソース競合、安定性、セキュリティの課題に直面します。この段階では、より複雑なシナリオに対応するために、マルチ環境ハイブリッドデプロイを採用できます。
|
||||
|
||||
このアーキテクチャの核は、入口アプリを導入することです。1 つの NocoBase を統合管理センターとして配置し、複数の NocoBase をアプリ実行環境として配置して、実際の業務アプリを稼働させます。
|
||||
|
||||
入口アプリの役割:
|
||||
|
||||
- アプリの作成、設定、ライフサイクル管理
|
||||
- 管理コマンドの配信と状態集約
|
||||
|
||||
実行環境側の役割:
|
||||
|
||||
- 共有メモリ型マルチアプリ方式で業務アプリを実際にホスト・実行
|
||||
|
||||
ユーザー視点では、複数アプリを 1 つの入口から作成・管理できますが、内部的には次のように分離されます。
|
||||
|
||||
- アプリごとに異なるノード/クラスタで実行できる
|
||||
- 各アプリが独立した DB とミドルウェアを利用できる
|
||||
- 高負荷アプリを個別に分離・スケールできる
|
||||
|
||||

|
||||
|
||||
この方式は、SaaS、大量のデモ環境、マルチテナントなどに適しており、柔軟性を保ちながら安定性と運用性を高めます。
|
||||
@@ -0,0 +1,106 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# 共有メモリモード
|
||||
|
||||
## 紹介
|
||||
|
||||
業務をアプリ単位で分割したい一方で、複雑なデプロイ/運用構成を導入したくない場合は、共有メモリ型マルチアプリモードを利用できます。
|
||||
|
||||
このモードでは、1 つの NocoBase インスタンス内で複数アプリを同時に実行できます。各アプリは独立しており、独自 DB に接続でき、個別に作成・起動・停止できます。一方で同一プロセス/メモリ空間を共有するため、運用対象は 1 つの NocoBase インスタンスのみです。
|
||||
|
||||
## 利用ガイド
|
||||
|
||||
### 環境変数設定
|
||||
|
||||
マルチアプリ機能を使用する前に、NocoBase 起動時に次の環境変数が設定されていることを確認してください。
|
||||
|
||||
```bash
|
||||
APP_DISCOVERY_ADAPTER=local
|
||||
APP_PROCESS_ADAPTER=local
|
||||
```
|
||||
|
||||
### アプリ作成
|
||||
|
||||
システム設定メニューで「App supervisor」をクリックし、アプリ管理ページに入ります。
|
||||
|
||||

|
||||
|
||||
「Add」をクリックして新しいアプリを作成します。
|
||||
|
||||

|
||||
|
||||
#### 設定項目
|
||||
|
||||
| 項目 | 説明 |
|
||||
| --- | --- |
|
||||
| **表示名** | UI 上に表示されるアプリ名 |
|
||||
| **アプリ ID** | グローバル一意のアプリ識別子 |
|
||||
| **起動モード** | - 初回アクセス時に起動: URL で初めてアクセスしたときに起動<br>- メインアプリと同時に起動: メインアプリ起動時に同時起動(メインの起動時間は増加) |
|
||||
| **環境** | 共有メモリモードでは `local` のみ利用可能 |
|
||||
| **データベース接続** | メインデータソースを設定します。以下 3 方式をサポート:<br>- 新規データベース: 現在の DB サービスを再利用し、独立 DB を作成<br>- 新規データ接続: 他の DB サービスへ接続<br>- Schema モード: メインデータソースが PostgreSQL の場合、独立 Schema を作成 |
|
||||
| **アップグレード** | 接続先 DB に旧バージョンの NocoBase データがある場合、現行バージョンへの自動アップグレードを許可するか |
|
||||
| **JWT シークレット** | 独立した JWT シークレットを自動生成し、メインアプリ/他アプリとセッションを分離 |
|
||||
| **カスタムドメイン** | アプリ専用のアクセスドメインを設定 |
|
||||
|
||||
### アプリ起動
|
||||
|
||||
**Start** ボタンでアプリを起動します。
|
||||
|
||||
> 作成時に「初回アクセス時に起動」を選択した場合、初回アクセス時に自動で起動します。
|
||||
|
||||

|
||||
|
||||
### アプリへのアクセス
|
||||
|
||||
**Visit** ボタンで新しいタブにアプリを開きます。
|
||||
|
||||
デフォルトでは `/apps/:appName/admin/` でアクセスします。例:
|
||||
|
||||
```bash
|
||||
http://localhost:13000/apps/a_7zkxoarusnx/admin/
|
||||
```
|
||||
|
||||
また、専用ドメインも設定できます。ドメインを現在の IP に解決し、Nginx を使用している場合は Nginx 設定にもそのドメインを追加してください。
|
||||
|
||||
### アプリ停止
|
||||
|
||||
**Stop** ボタンでアプリを停止します。
|
||||
|
||||

|
||||
|
||||
### アプリ状態
|
||||
|
||||
一覧で各アプリの現在状態を確認できます。
|
||||
|
||||

|
||||
|
||||
### アプリ削除
|
||||
|
||||
**Delete** ボタンでアプリを削除します。
|
||||
|
||||

|
||||
|
||||
## よくある質問
|
||||
|
||||
### 1. プラグイン管理
|
||||
|
||||
他アプリで利用できるプラグイン(およびバージョン)はメインアプリと同一ですが、設定と利用はアプリごとに分離されます。
|
||||
|
||||
### 2. データベース分離
|
||||
|
||||
他アプリは独立 DB を利用できます。アプリ間でデータ共有したい場合は、外部データソースを利用してください。
|
||||
|
||||
### 3. データバックアップと移行
|
||||
|
||||
現時点では、メインアプリのバックアップには他アプリのデータは含まれません(アプリ基本情報のみ)。他アプリのバックアップと移行は各アプリ内で個別に実施してください。
|
||||
|
||||
### 4. デプロイとアップグレード
|
||||
|
||||
共有メモリモードでは、他アプリのバージョンはメインアプリのバージョンに自動追従し、バージョン整合性が保たれます。
|
||||
|
||||
### 5. アプリセッション
|
||||
|
||||
- アプリが独立 JWT シークレットを使う場合、セッションはメインアプリ/他アプリから分離されます。同一ドメイン配下のサブパスで複数アプリへアクセスすると、LocalStorage 上のトークン管理により切り替え時に再ログインが必要です。より良い分離のため、アプリごとに独立ドメインを推奨します。
|
||||
- 独立 JWT シークレットを使わない場合、メインアプリのセッションを共有します。同一ブラウザで再ログインなしに切り替えできますが、セキュリティリスクがあります。異なるアプリ間でユーザー ID が重複すると、越権アクセスが発生する可能性があります。
|
||||
@@ -0,0 +1,229 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# マルチ環境モード
|
||||
|
||||
## 紹介
|
||||
|
||||
共有メモリ型マルチアプリは、デプロイと運用の面で大きな利点がありますが、アプリ数や業務の複雑性が増すにつれ、単一インスタンスはリソース競合や安定性低下などの課題に直面する可能性があります。こうしたシナリオでは、より複雑な要件を支えるためにマルチ環境ハイブリッドデプロイを採用できます。
|
||||
|
||||
このモードでは、システムは 1 つの入口アプリを統合管理・スケジューリングセンターとして配置し、複数の NocoBase インスタンスを独立した実行環境として配置して業務アプリを実際にホストします。各環境は相互に分離されつつ連携し、単一インスタンスの負荷を効果的に分散し、安定性・拡張性・障害分離性を大幅に向上させます。
|
||||
|
||||
デプロイ形態としては、各環境を独立プロセス、Docker コンテナ、または複数の Kubernetes Deployment として実行でき、さまざまな規模・アーキテクチャの基盤に柔軟に適応できます。
|
||||
|
||||
## デプロイ
|
||||
|
||||
マルチ環境ハイブリッドデプロイでは:
|
||||
|
||||
- 入口アプリ(Supervisor)がアプリと環境情報を一元管理
|
||||
- ワーカーアプリ(Worker)が実際の業務実行環境として動作
|
||||
- アプリ/環境設定は Redis にキャッシュ
|
||||
- Supervisor と Worker 間の命令配信・状態同期は Redis 通信を利用
|
||||
|
||||
現時点では環境作成機能は提供されていません。各 Worker アプリを手動でデプロイし、対応する環境情報を設定した後に、Supervisor から認識されます。
|
||||
|
||||
### アーキテクチャ依存関係
|
||||
|
||||
デプロイ前に次のサービスを準備してください。
|
||||
|
||||
- Redis
|
||||
- アプリと環境設定のキャッシュ
|
||||
- Supervisor と Worker 間のコマンド通信チャネル
|
||||
|
||||
- データベース
|
||||
- Supervisor と Worker が接続する DB サービス
|
||||
|
||||
### 入口アプリ (Supervisor)
|
||||
|
||||
入口アプリは統合管理センターとして、アプリ作成、起動・停止、環境スケジューリング、アクセスプロキシを担います。
|
||||
|
||||
Supervisor の環境変数:
|
||||
|
||||
```bash
|
||||
# アプリモード
|
||||
APP_MODE=supervisor
|
||||
# アプリ検出アダプタ
|
||||
APP_DISCOVERY_ADAPTER=remote
|
||||
# アプリプロセス管理アダプタ
|
||||
APP_PROCESS_ADAPTER=remote
|
||||
# アプリ・環境設定キャッシュ用 redis
|
||||
APP_SUPERVISOR_REDIS_URL=
|
||||
# アプリコマンド通信方式
|
||||
APP_COMMAND_ADPATER=redis
|
||||
# アプリコマンド通信 redis
|
||||
APP_COMMAND_REDIS_URL=
|
||||
```
|
||||
|
||||
### ワーカーアプリ (Worker)
|
||||
|
||||
ワーカーアプリは実際の業務実行環境として、具体的な NocoBase アプリインスタンスをホストして実行します。
|
||||
|
||||
Worker の環境変数:
|
||||
|
||||
```bash
|
||||
# アプリモード
|
||||
APP_MODE=worker
|
||||
# アプリ検出アダプタ
|
||||
APP_DISCOVERY_ADAPTER=remote
|
||||
# アプリプロセス管理アダプタ
|
||||
APP_PROCESS_ADAPTER=local
|
||||
# アプリ・環境設定キャッシュ用 redis
|
||||
APP_SUPERVISOR_REDIS_URL=
|
||||
# アプリコマンド通信方式
|
||||
APP_COMMAND_ADPATER=redis
|
||||
# アプリコマンド通信 redis
|
||||
APP_COMMAND_REDIS_URL=
|
||||
# 環境識別子
|
||||
ENVIRONMENT_NAME=
|
||||
# 環境アクセス URL
|
||||
ENVIRONMENT_URL=
|
||||
# 環境プロキシアクセス URL
|
||||
ENVIRONMENT_PROXY_URL=
|
||||
```
|
||||
|
||||
### Docker Compose 例
|
||||
|
||||
以下は Docker コンテナを実行単位とするマルチ環境ハイブリッドデプロイ例です。Docker Compose で 1 つの Supervisor と 2 つの Worker を同時にデプロイします。
|
||||
|
||||
```yaml
|
||||
networks:
|
||||
nocobase:
|
||||
driver: bridge
|
||||
|
||||
services:
|
||||
redis:
|
||||
networks:
|
||||
- nocobase
|
||||
image: redis/redis-stack-server:latest
|
||||
supervisor:
|
||||
container_name: nocobase-supervisor
|
||||
image: nocobase/nocobase:alpha
|
||||
restart: always
|
||||
platform: linux/amd64
|
||||
networks:
|
||||
- nocobase
|
||||
depends_on:
|
||||
- redis
|
||||
environment:
|
||||
- DB_DIALECT=postgres
|
||||
- DB_HOST=postgres
|
||||
- DB_PORT=5432
|
||||
- DB_DATABASE=nocobase_supervisor
|
||||
- DB_USER=postgres
|
||||
- DB_PASSWORD=postgres
|
||||
- TZ=Asia/Shanghai
|
||||
- APP_MODE=supervisor
|
||||
- APP_DISCOVERY_ADAPTER=remote
|
||||
- APP_PROCESS_ADAPTER=remote
|
||||
- APP_SUPERVISOR_REDIS_URL=redis://redis:6379/0
|
||||
- APP_COMMAND_ADAPTER=redis
|
||||
- APP_COMMAND_REDIS_URL=redis://redis:6379/0
|
||||
- APPEND_PRESET_BUILT_IN_PLUGINS=@nocobase/plugin-app-supervisor
|
||||
volumes:
|
||||
- ./storage-supervisor:/app/nocobase/storage
|
||||
ports:
|
||||
- '14000:80'
|
||||
worker_a:
|
||||
container_name: nocobase-worker-a
|
||||
image: nocobase/nocobase:alpha
|
||||
restart: always
|
||||
platform: linux/amd64
|
||||
networks:
|
||||
- nocobase
|
||||
depends_on:
|
||||
- redis
|
||||
environment:
|
||||
- DB_DIALECT=postgres
|
||||
- DB_HOST=postgres
|
||||
- DB_PORT=5432
|
||||
- DB_DATABASE=nocobase_worker_a
|
||||
- DB_USER=postgres
|
||||
- DB_PASSWORD=postgres
|
||||
- TZ=Asia/Shanghai
|
||||
- APP_MODE=worker
|
||||
- APP_DISCOVERY_ADAPTER=remote
|
||||
- APP_PROCESS_ADAPTER=local
|
||||
- APP_SUPERVISOR_REDIS_URL=redis://redis:6379/0
|
||||
- APP_COMMAND_ADAPTER=redis
|
||||
- APP_COMMAND_REDIS_URL=redis://redis:6379/0
|
||||
- ENVIRONMENT_NAME=env_a
|
||||
- ENVIRONMENT_URL=http://localhost:15000
|
||||
- ENVIRONMENT_PROXY_URL=http://worker_a
|
||||
- APPEND_PRESET_BUILT_IN_PLUGINS=@nocobase/plugin-app-supervisor
|
||||
volumes:
|
||||
- ./storage-worker-a:/app/nocobase/storage
|
||||
ports:
|
||||
- '15000:80'
|
||||
worker_b:
|
||||
container_name: nocobase-worker-b
|
||||
image: nocobase/nocobase:alpha
|
||||
restart: always
|
||||
platform: linux/amd64
|
||||
networks:
|
||||
- nocobase
|
||||
depends_on:
|
||||
- redis
|
||||
environment:
|
||||
- DB_DIALECT=postgres
|
||||
- DB_HOST=postgres
|
||||
- DB_PORT=5432
|
||||
- DB_DATABASE=nocobase_worker_b
|
||||
- DB_USER=postgres
|
||||
- DB_PASSWORD=postgres
|
||||
- TZ=Asia/Shanghai
|
||||
- APP_MODE=worker
|
||||
- APP_DISCOVERY_ADAPTER=remote
|
||||
- APP_PROCESS_ADAPTER=local
|
||||
- APP_SUPERVISOR_REDIS_URL=redis://redis:6379/0
|
||||
- APP_COMMAND_ADAPTER=redis
|
||||
- APP_COMMAND_REDIS_URL=redis://redis:6379/0
|
||||
- ENVIRONMENT_NAME=env_b
|
||||
- ENVIRONMENT_URL=http://localhost:16000
|
||||
- ENVIRONMENT_PROXY_URL=http://worker_b
|
||||
- APPEND_PRESET_BUILT_IN_PLUGINS=@nocobase/plugin-app-supervisor
|
||||
volumes:
|
||||
- ./storage-worker-b:/app/nocobase/storage
|
||||
ports:
|
||||
- '16000:80'
|
||||
```
|
||||
|
||||
## 利用ガイド
|
||||
|
||||
アプリの基本管理操作は共有メモリモードと同じです。[共有メモリモード](./local.md)を参照してください。ここではマルチ環境設定に関連する内容のみ説明します。
|
||||
|
||||
### 環境一覧
|
||||
|
||||
デプロイ完了後、入口アプリの「App supervisor」ページで「Environment」タブを開くと、登録済みワーカー環境の一覧を確認できます。環境識別子、ワーカーアプリのバージョン、アクセス URL、状態などが表示されます。ワーカーアプリは 2 分ごとにハートビートを送信し、環境可用性を担保します。
|
||||
|
||||

|
||||
|
||||
### アプリ作成
|
||||
|
||||
アプリ作成時に、1 つ以上の実行環境を選択できます。通常は 1 つの環境を選べば十分です。ワーカーアプリを[サービス分割](/cluster-mode/services-splitting)しており、同一アプリを複数環境へ配置して負荷分散や機能分離を行う場合のみ、複数環境を選択してください。
|
||||
|
||||

|
||||
|
||||
### アプリ一覧
|
||||
|
||||
アプリ一覧ページには、各アプリの実行環境と状態が表示されます。1 つのアプリが複数環境に配置されている場合は、複数の実行状態が表示されます。通常、同一アプリは複数環境で同一状態を保つため、起動・停止は一括で制御します。
|
||||
|
||||

|
||||
|
||||
### アプリ起動
|
||||
|
||||
アプリ起動時には DB へ初期データを書き込む可能性があるため、マルチ環境での競合を避ける目的で、複数環境へ配置されたアプリは起動時にキュー処理されます。
|
||||
|
||||

|
||||
|
||||
### アクセスプロキシ
|
||||
|
||||
ワーカーアプリは、入口アプリのサブパス `/apps/:appName/admin` を通じてプロキシアクセスできます。
|
||||
|
||||

|
||||
|
||||
アプリが複数環境に配置されている場合は、プロキシアクセス先の対象環境を指定する必要があります。
|
||||
|
||||

|
||||
|
||||
デフォルトでは、プロキシアクセス先にはワーカーアプリのアクセスアドレス(環境変数 `ENVIRONMENT_URL`)を使います。入口アプリ側ネットワークからその URL に到達できる必要があります。別のプロキシアドレスを使う場合は、環境変数 `ENVIRONMENT_PROXY_URL` で上書きしてください。
|
||||
@@ -1,111 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
---
|
||||
:::tip
|
||||
このドキュメントはAIによって翻訳されました。不正確な情報については、[英語版](/en)をご参照ください
|
||||
:::
|
||||
|
||||
|
||||
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
|
||||
# マルチスペース
|
||||
|
||||
## はじめに
|
||||
|
||||
**マルチスペースプラグイン**は、単一のアプリケーションインスタンス内で、論理的な分離によって複数の独立したデータスペースを実現します。
|
||||
|
||||
#### 利用シーン
|
||||
- **複数店舗や工場**: 業務プロセスやシステム設定が高度に統一されており、例えば、統一された在庫管理、生産計画、販売戦略、レポートテンプレートなどを使用している場合。ただし、各事業単位のデータが互いに干渉しないようにする必要があります。
|
||||
- **複数組織や子会社の管理**: グループ企業傘下の複数の組織や子会社が同じプラットフォームを共有しているが、各ブランドが独立した顧客、製品、注文データを持っている場合。
|
||||
|
||||
## インストール
|
||||
|
||||
プラグイン管理で **マルチスペース(Multi-Space)** プラグインを見つけて、有効化します。
|
||||
|
||||

|
||||
|
||||
## 利用ガイド
|
||||
|
||||
### マルチスペースの管理
|
||||
|
||||
プラグインを有効化したら、**「ユーザーと権限」** 設定ページに移動し、**スペース** パネルに切り替えることでスペースを管理できます。
|
||||
|
||||
> 最初は、組み込みの **未割り当てスペース(Unassigned Space)** が存在します。これは主に、どのスペースにも関連付けられていない古いデータを表示するために使用されます。
|
||||
|
||||

|
||||
|
||||
#### スペースの作成
|
||||
|
||||
「スペースを追加」ボタンをクリックして、新しいスペースを作成します。
|
||||
|
||||
.png)
|
||||
|
||||
#### ユーザーの割り当て
|
||||
|
||||
作成済みのスペースを選択したら、右側でそのスペースに所属するユーザーを設定できます。
|
||||
|
||||
> **ヒント:** スペースにユーザーを割り当てた後、**手動でページを更新する** 必要があります。そうすることで、右上のスペース切り替えリストが更新され、最新のスペースが表示されます。
|
||||
|
||||

|
||||
|
||||
### マルチスペースの切り替えと表示
|
||||
|
||||
右上隅で現在のスペースを切り替えることができます。
|
||||
右側の**目のアイコン**(ハイライト表示されている状態)をクリックすると、複数のスペースのデータを同時に表示できます。
|
||||
|
||||

|
||||
|
||||
### マルチスペースのデータ管理
|
||||
|
||||
プラグインを有効化すると、コレクションを作成する際にシステムが自動的に **スペースフィールド** を追加します。
|
||||
**このフィールドを含むコレクションのみが、スペース管理のロジックに組み込まれます。**
|
||||
|
||||

|
||||
|
||||
既存のコレクションについては、手動でスペースフィールドを追加することでスペース管理を有効にできます。
|
||||
|
||||

|
||||
|
||||
#### デフォルトのロジック
|
||||
|
||||
スペースフィールドを含むコレクションでは、システムが以下のロジックを自動的に適用します。
|
||||
|
||||
1. データを新規作成する際、現在選択されているスペースに自動的に関連付けられます。
|
||||
2. データをフィルタリングする際、現在選択されているスペースのデータに自動的に限定されます。
|
||||
|
||||
### 既存データのマルチスペースへの分類
|
||||
|
||||
マルチスペースプラグインを有効にする前に存在していたデータについては、以下の手順でスペースに分類できます。
|
||||
|
||||
#### 1. スペースフィールドの追加
|
||||
|
||||
既存のコレクションにスペースフィールドを手動で追加します。
|
||||
|
||||

|
||||
|
||||
#### 2. 未割り当てスペースへのユーザー割り当て
|
||||
|
||||
既存データを管理するユーザーをすべてのスペースに関連付けます。まだスペースに割り当てられていないデータを表示できるように、**未割り当てスペース(Unassigned Space)** も含める必要があります。
|
||||
|
||||

|
||||
|
||||
#### 3. すべてのスペースデータの表示に切り替える
|
||||
|
||||
上部で、すべてのスペースのデータを表示するように選択します。
|
||||
|
||||

|
||||
|
||||
#### 4. 既存データ割り当てページの構成
|
||||
|
||||
既存データ割り当て用の新しいページを作成します。**リストページ** と **編集ページ** に「スペースフィールド」を表示し、手動で所属スペースを調整できるようにします。
|
||||
|
||||

|
||||
|
||||
スペースフィールドを編集可能にする
|
||||
|
||||

|
||||
|
||||
#### 5. データのスペースへの手動割り当て
|
||||
|
||||
上記のページを通じて、データを手動で編集し、既存データに正しいスペースを段階的に割り当てます。(一括編集を自分で設定することも可能です)。
|
||||
@@ -0,0 +1,104 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
---
|
||||
|
||||
# マルチスペース
|
||||
|
||||
<PluginInfo name="multi-space" licenseBundled="professional"></PluginInfo>
|
||||
|
||||
## 紹介
|
||||
|
||||
**マルチスペースプラグイン**は、単一アプリインスタンス内で論理分離により複数の独立データスペースを実現します。
|
||||
|
||||
#### 適用シナリオ
|
||||
- **複数店舗・工場**: 在庫管理、生産計画、販売戦略、帳票テンプレートなど業務プロセスとシステム設定は高い共通性を持つが、各事業単位のデータは相互干渉させたくない場合。
|
||||
- **複数組織・子会社管理**: グループ配下の複数組織/子会社が同一プラットフォームを共有しつつ、ブランドごとに顧客、商品、注文データを独立管理したい場合。
|
||||
|
||||
## インストール
|
||||
|
||||
プラグイン管理で **Multi-Space** プラグインを有効化します。
|
||||
|
||||

|
||||
|
||||
## 利用ガイド
|
||||
|
||||
### マルチスペース管理
|
||||
|
||||
プラグイン有効化後、**Users & Permissions** 設定ページで **Spaces** パネルに切り替えるとスペースを管理できます。
|
||||
|
||||
> 初期状態では組み込みの **Unassigned Space** が存在し、スペース未関連の既存データ確認に利用されます。
|
||||
|
||||

|
||||
|
||||
#### スペース作成
|
||||
|
||||
「Add space」をクリックして新しいスペースを作成します。
|
||||
|
||||
.png)
|
||||
|
||||
#### ユーザー割り当て
|
||||
|
||||
作成済みスペースを選択後、右側でそのスペース所属ユーザーを設定できます。
|
||||
|
||||
> **注意:** スペースにユーザーを割り当てた後は、右上のスペース切替リストに最新内容を反映するため、**手動でページ更新** が必要です。
|
||||
|
||||

|
||||
|
||||
### スペース切替と閲覧
|
||||
|
||||
右上で現在スペースを切り替えられます。右側の **目アイコン**(ハイライト状態)をクリックすると、複数スペースのデータを同時表示できます。
|
||||
|
||||

|
||||
|
||||
### マルチスペースデータ管理
|
||||
|
||||
プラグイン有効化後、コレクション作成時にシステムが **Space フィールド** を自動追加します。**このフィールドを含むコレクションのみ** がスペース管理ロジックの対象になります。
|
||||
|
||||

|
||||
|
||||
既存コレクションでは、Space フィールドを手動追加することでスペース管理を有効化できます。
|
||||
|
||||

|
||||
|
||||
#### デフォルト動作
|
||||
|
||||
Space フィールドを含むコレクションでは、次のロジックが自動適用されます。
|
||||
|
||||
1. データ作成時に、現在選択中スペースへ自動関連付け。
|
||||
2. データ絞り込み時に、現在選択中スペースのデータに自動限定。
|
||||
|
||||
### 既存データのスペース分類
|
||||
|
||||
マルチスペースプラグイン有効化前に存在していたデータは、次の手順でスペース分類できます。
|
||||
|
||||
#### 1. Space フィールド追加
|
||||
|
||||
既存テーブルに Space フィールドを手動追加します。
|
||||
|
||||

|
||||
|
||||
#### 2. 未割り当てスペースへユーザー割り当て
|
||||
|
||||
既存データ管理ユーザーを全スペースに関連付けます。未分類データ閲覧のため、**Unassigned Space** を含める必要があります。
|
||||
|
||||

|
||||
|
||||
#### 3. 全スペースデータを表示
|
||||
|
||||
画面上部で全スペースのデータ表示を選択します。
|
||||
|
||||

|
||||
|
||||
#### 4. 既存データ割り当てページ作成
|
||||
|
||||
既存データ割り当て用の新規ページを作成し、**一覧ページ** と **編集ページ** の両方で Space フィールドを表示して、手動で所属スペースを調整できるようにします。
|
||||
|
||||

|
||||
|
||||
Space フィールドを編集可能に設定します。
|
||||
|
||||

|
||||
|
||||
#### 5. データのスペース手動割り当て
|
||||
|
||||
上記ページからデータを手動編集し、既存データへ正しいスペースを段階的に割り当てます(必要に応じて一括編集も可能)。
|
||||
@@ -1,17 +1,28 @@
|
||||
[
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "개요",
|
||||
"link": "/multi-app/"
|
||||
"label": "멀티 애플리케이션",
|
||||
"items": [
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "개요",
|
||||
"link": "/multi-app/multi-app"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "공유 메모리 모드",
|
||||
"link": "/multi-app/multi-app/local"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "멀티 환경 모드",
|
||||
"link": "/multi-app/multi-app/remote"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "다중 앱",
|
||||
"link": "/multi-app/multi-app"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "다중 스페이스",
|
||||
"label": "멀티 스페이스",
|
||||
"link": "/multi-app/multi-space"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-app-manager"
|
||||
---
|
||||
:::tip
|
||||
이 문서는 AI로 번역되었습니다. 부정확한 내용이 있을 경우 [영어 버전](/en)을 참조하세요
|
||||
:::
|
||||
|
||||
|
||||
|
||||
# 멀티 앱
|
||||
|
||||
## 소개
|
||||
@@ -1,122 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-app-manager"
|
||||
---
|
||||
:::tip
|
||||
이 문서는 AI로 번역되었습니다. 부정확한 내용이 있을 경우 [영어 버전](/en)을 참조하세요
|
||||
:::
|
||||
|
||||
|
||||
# 다중 앱
|
||||
|
||||
## 소개
|
||||
|
||||
**다중 앱 플러그인**은 여러 독립적인 애플리케이션을 개별적으로 배포할 필요 없이 동적으로 생성하고 관리할 수 있도록 지원합니다. 각 서브 앱은 완전히 독립적인 인스턴스이며, 고유한 데이터베이스, 플러그인, 설정을 가집니다.
|
||||
|
||||
#### 활용 사례
|
||||
- **멀티 테넌시**: 독립적인 애플리케이션 인스턴스를 제공하여, 각 고객이 고유한 데이터, 플러그인 설정, 권한 시스템을 가질 수 있도록 합니다.
|
||||
- **서로 다른 비즈니스 도메인을 위한 주/서브 시스템**: 하나의 대규모 시스템이 여러 독립적으로 배포된 소규모 애플리케이션으로 구성될 때 유용합니다.
|
||||
|
||||
:::warning
|
||||
다중 앱 플러그인 자체는 사용자 공유 기능을 제공하지 않습니다.
|
||||
여러 앱 간에 사용자를 연동해야 하는 경우, **[인증 플러그인](/auth-verification)**과 함께 사용할 수 있습니다.
|
||||
:::
|
||||
|
||||
## 설치
|
||||
|
||||
플러그인 관리에서 **다중 앱(Multi-app)** 플러그인을 찾아 활성화합니다.
|
||||
|
||||

|
||||
|
||||
## 사용 가이드
|
||||
|
||||
### 서브 앱 생성
|
||||
|
||||
시스템 설정 메뉴에서 「다중 앱」을 클릭하여 다중 앱 관리 페이지로 이동합니다.
|
||||
|
||||

|
||||
|
||||
「새로 추가」 버튼을 클릭하여 새로운 서브 앱을 생성합니다.
|
||||
|
||||

|
||||
|
||||
#### 폼 필드 설명
|
||||
|
||||
* **이름**: 서브 앱 식별자로, 전역적으로 고유합니다.
|
||||
* **표시 이름**: 서브 앱이 인터페이스에 표시되는 이름입니다.
|
||||
* **시작 방식**:
|
||||
* **첫 방문 시 시작**: 사용자가 URL을 통해 해당 서브 앱에 처음 접근할 때만 시작됩니다.
|
||||
* **메인 앱과 함께 시작**: 메인 앱이 시작될 때 서브 앱도 동시에 시작됩니다. (이 경우 메인 앱의 시작 시간이 길어질 수 있습니다.)
|
||||
* **포트**: 서브 앱이 실행될 때 사용되는 포트 번호입니다.
|
||||
* **사용자 지정 도메인**: 서브 앱에 독립적인 서브 도메인을 설정합니다.
|
||||
* **메뉴에 고정**: 서브 앱 진입점을 상단 탐색 바 왼쪽에 고정하여 표시합니다.
|
||||
* **데이터베이스 연결**: 서브 앱의 데이터 소스를 설정하는 데 사용되며, 다음 세 가지 방식을 지원합니다.
|
||||
* **새 데이터베이스**: 현재 데이터 서비스를 재사용하여 독립적인 데이터베이스를 생성합니다.
|
||||
* **새 데이터 연결**: 완전히 새로운 데이터베이스 서비스를 설정합니다.
|
||||
* **스키마 모드**: PostgreSQL에서 서브 앱을 위한 독립적인 스키마를 생성합니다.
|
||||
* **업그레이드**: 연결된 데이터베이스에 이전 버전의 NocoBase 데이터 구조가 있는 경우, 현재 버전으로 자동 업그레이드됩니다.
|
||||
|
||||
### 서브 앱 실행 및 중지
|
||||
|
||||
**시작** 버튼을 클릭하여 서브 앱을 시작할 수 있습니다.
|
||||
> 서브 앱 생성 시 *“첫 방문 시 시작”*을 선택했다면, 첫 방문 시 자동으로 시작됩니다.
|
||||
|
||||
**보기** 버튼을 클릭하면 새 탭에서 해당 서브 앱이 열립니다.
|
||||
|
||||

|
||||
|
||||
### 서브 앱 실행 상태 및 로그
|
||||
|
||||
목록에서 각 애플리케이션이 사용하는 메모리 및 CPU를 확인할 수 있습니다.
|
||||
|
||||

|
||||
|
||||
**로그** 버튼을 클릭하면 서브 앱의 실행 로그를 확인할 수 있습니다.
|
||||
> 서브 앱 시작 후 접근할 수 없는 경우(예: 데이터베이스 손상 등), 로그를 통해 원인을 파악할 수 있습니다.
|
||||
|
||||

|
||||
|
||||
### 서브 앱 삭제
|
||||
|
||||
**삭제** 버튼을 클릭하여 서브 앱을 제거할 수 있습니다.
|
||||
> 삭제 시 데이터베이스도 함께 삭제할지 선택할 수 있습니다. 신중하게 진행해 주십시오. 이 작업은 되돌릴 수 없습니다.
|
||||
|
||||
### 서브 앱 접근
|
||||
기본적으로 `/_app/:appName/admin/` 경로를 사용하여 서브 앱에 접근합니다. 예시:
|
||||
```
|
||||
http://localhost:13000/_app/a_7zkxoarusnx/admin/
|
||||
```
|
||||
또한, 서브 앱에 독립적인 서브 도메인을 설정할 수도 있습니다. 이 경우 도메인을 현재 IP로 해석해야 하며, Nginx를 사용하는 경우 Nginx 설정에 도메인을 추가해야 합니다.
|
||||
|
||||
### 명령줄을 통한 서브 앱 관리
|
||||
|
||||
프로젝트 루트 디렉터리에서 명령줄을 통해 **PM2**로 서브 앱 인스턴스를 관리할 수 있습니다.
|
||||
|
||||
```bash
|
||||
yarn nocobase pm2 list # 현재 실행 중인 인스턴스 목록 보기
|
||||
yarn nocobase pm2 stop [appname] # 특정 서브 앱 프로세스 중지
|
||||
yarn nocobase pm2 delete [appname] # 특정 서브 앱 프로세스 삭제
|
||||
yarn nocobase pm2 kill # 시작된 모든 프로세스 강제 종료 (메인 앱 인스턴스 포함 가능)
|
||||
```
|
||||
|
||||
### 이전 다중 앱 데이터 마이그레이션
|
||||
|
||||
이전 다중 앱 관리 페이지로 이동하여 「새 다중 앱으로 데이터 마이그레이션」 버튼을 클릭하여 데이터를 마이그레이션합니다.
|
||||
|
||||

|
||||
|
||||
## 자주 묻는 질문
|
||||
|
||||
#### 1. 플러그인 관리
|
||||
서브 앱은 메인 앱과 동일한 플러그인을 사용할 수 있으며(버전 포함), 플러그인을 독립적으로 설정하고 사용할 수 있습니다.
|
||||
|
||||
#### 2. 데이터베이스 격리
|
||||
서브 앱은 독립적인 데이터베이스를 설정할 수 있습니다. 앱 간에 데이터를 공유하려면 외부 데이터 소스를 통해 구현할 수 있습니다.
|
||||
|
||||
#### 3. 데이터 백업 및 마이그레이션
|
||||
현재 메인 앱의 데이터 백업은 서브 앱 데이터를 포함하지 않습니다(서브 앱의 기본 정보만 포함됩니다). 각 서브 앱 내에서 수동으로 데이터를 백업하고 마이그레이션해야 합니다.
|
||||
|
||||
#### 4. 배포 및 업데이트
|
||||
서브 앱의 버전은 메인 앱과 함께 자동으로 업그레이드됩니다. 이를 통해 메인 앱과 서브 앱 간의 버전 일관성이 자동으로 유지됩니다.
|
||||
|
||||
#### 5. 리소스 관리
|
||||
각 서브 앱의 리소스 사용량은 메인 앱과 거의 동일합니다. 현재 단일 애플리케이션의 메모리 사용량은 약 500-600MB 정도입니다.
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# 멀티 애플리케이션 관리
|
||||
|
||||
## 개요
|
||||
|
||||
NocoBase의 멀티 애플리케이션 관리는 하나 이상의 런타임 환경에서 여러 개의 **물리적으로 격리된** 애플리케이션 인스턴스를 생성/운영할 수 있게 해줍니다. **AppSupervisor**를 통해 단일 진입점에서 통합 관리할 수 있습니다.
|
||||
|
||||
## 단일 애플리케이션
|
||||
|
||||
프로젝트 초기에는 보통 단일 애플리케이션으로 시작합니다.
|
||||
|
||||
규모가 커지면 다음 한계가 나타납니다.
|
||||
|
||||
- 기능 누적으로 인한 복잡도 증가
|
||||
- 도메인 간 격리 어려움
|
||||
- 운영/확장 비용 상승
|
||||
|
||||
## 공유 메모리 멀티 애플리케이션
|
||||
|
||||
복잡한 인프라 도입 없이 앱 단위 분리가 필요할 때 사용하는 모드입니다.
|
||||
|
||||
여러 앱이 하나의 NocoBase 인스턴스에서 실행되며, 앱별 독립 DB/생성/시작/중지는 가능하지만 프로세스와 메모리는 공유합니다.
|
||||
|
||||

|
||||
|
||||
장점:
|
||||
|
||||
- 앱 단위 분리
|
||||
- 설정과 기능 경계가 명확
|
||||
- 멀티 프로세스/컨테이너 대비 리소스 절감
|
||||
|
||||
단점: 한 앱의 장애/고부하가 다른 앱에 영향 가능.
|
||||
|
||||
## 멀티 환경 하이브리드 배포
|
||||
|
||||
규모와 복잡도가 높아지면 공유 메모리 모델만으로는 한계가 생길 수 있습니다. 이때 진입 앱 + 다수 실행 환경으로 구성된 하이브리드 배포를 사용합니다.
|
||||
|
||||

|
||||
|
||||
SaaS, 대규모 데모 환경, 멀티테넌트 시나리오에 적합합니다.
|
||||
@@ -0,0 +1,62 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# 공유 메모리 모드
|
||||
|
||||
## 소개
|
||||
|
||||
복잡한 운영 구조 없이 앱 단위 분리를 원할 때 사용합니다.
|
||||
|
||||
## 사용 가이드
|
||||
|
||||
### 환경 변수
|
||||
|
||||
```bash
|
||||
APP_DISCOVERY_ADAPTER=local
|
||||
APP_PROCESS_ADAPTER=local
|
||||
```
|
||||
|
||||
### 앱 생성
|
||||
|
||||
**System Settings**에서 **App supervisor**로 이동 후 **Add**를 클릭합니다.
|
||||
|
||||

|
||||

|
||||
|
||||
### 주요 설정
|
||||
|
||||
- **Application display name**
|
||||
- **Application ID**
|
||||
- **Start mode**
|
||||
- **Environments (`local`)**
|
||||
- **Database**
|
||||
- **Upgrade**
|
||||
- **JWT Secret**
|
||||
- **Custom domain**
|
||||
|
||||
### 앱 운영
|
||||
|
||||
- **Start**: 시작
|
||||
- **Visit**: 접속
|
||||
- **Stop**: 중지
|
||||
- **Delete**: 삭제
|
||||
|
||||
예시 URL:
|
||||
|
||||
```bash
|
||||
http://localhost:13000/apps/a_7zkxoarusnx/admin/
|
||||
```
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
## FAQ
|
||||
|
||||
- 플러그인은 메인 앱과 동일 버전 사용 가능(설정은 앱별 분리)
|
||||
- 앱별 독립 DB 사용 가능
|
||||
- 메인 앱 백업에 타 앱 데이터는 포함되지 않음
|
||||
- 앱 버전은 메인 앱 버전 추종
|
||||
- JWT 분리 여부에 따라 세션 격리/편의성 트레이드오프 존재
|
||||
@@ -0,0 +1,75 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# 멀티 환경 모드
|
||||
|
||||
## 소개
|
||||
|
||||
공유 메모리 모드가 안정성/격리/확장 요구를 충족하기 어려운 경우 멀티 환경 하이브리드 배포를 사용합니다.
|
||||
|
||||
## 배포
|
||||
|
||||
- **Supervisor**: 앱/환경 통합 관리
|
||||
- **Worker**: 실제 앱 실행
|
||||
- **Redis**: 설정 캐시 및 명령 통신
|
||||
|
||||
환경 생성 기능은 아직 자동 제공되지 않으며 Worker는 수동 배포/설정이 필요합니다.
|
||||
|
||||
### Supervisor 환경 변수
|
||||
|
||||
```bash
|
||||
APP_MODE=supervisor
|
||||
APP_DISCOVERY_ADAPTER=remote
|
||||
APP_PROCESS_ADAPTER=remote
|
||||
APP_SUPERVISOR_REDIS_URL=
|
||||
APP_COMMAND_ADPATER=redis
|
||||
APP_COMMAND_REDIS_URL=
|
||||
```
|
||||
|
||||
### Worker 환경 변수
|
||||
|
||||
```bash
|
||||
APP_MODE=worker
|
||||
APP_DISCOVERY_ADAPTER=remote
|
||||
APP_PROCESS_ADAPTER=local
|
||||
APP_SUPERVISOR_REDIS_URL=
|
||||
APP_COMMAND_ADPATER=redis
|
||||
APP_COMMAND_REDIS_URL=
|
||||
ENVIRONMENT_NAME=
|
||||
ENVIRONMENT_URL=
|
||||
ENVIRONMENT_PROXY_URL=
|
||||
```
|
||||
|
||||
### Docker Compose 예시
|
||||
|
||||
```yaml
|
||||
services:
|
||||
redis:
|
||||
image: redis/redis-stack-server:latest
|
||||
supervisor:
|
||||
image: nocobase/nocobase:alpha
|
||||
environment:
|
||||
- APP_MODE=supervisor
|
||||
- APP_DISCOVERY_ADAPTER=remote
|
||||
- APP_PROCESS_ADAPTER=remote
|
||||
- APP_SUPERVISOR_REDIS_URL=redis://redis:6379/0
|
||||
- APP_COMMAND_ADAPTER=redis
|
||||
- APP_COMMAND_REDIS_URL=redis://redis:6379/0
|
||||
```
|
||||
|
||||
## 사용
|
||||
|
||||
기본 앱 관리는 [공유 메모리 모드](./local.md)와 동일합니다.
|
||||
|
||||
- **Environment** 탭에서 등록된 환경 확인
|
||||
- 앱 생성 시 실행 환경 선택
|
||||
- 다중 환경 시작 시 큐 처리
|
||||
- `/apps/:appName/admin` 프록시 접속
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
@@ -1,112 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
---
|
||||
:::tip
|
||||
이 문서는 AI로 번역되었습니다. 부정확한 내용이 있을 경우 [영어 버전](/en)을 참조하세요
|
||||
:::
|
||||
|
||||
|
||||
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
---
|
||||
|
||||
# 멀티 스페이스
|
||||
|
||||
## 소개
|
||||
|
||||
**멀티 스페이스 플러그인**은 단일 애플리케이션 인스턴스 내에서 논리적 격리를 통해 여러 개의 독립적인 데이터 공간을 생성할 수 있도록 지원합니다.
|
||||
|
||||
#### 활용 사례
|
||||
- **여러 매장 또는 공장**: 통합 재고 관리, 생산 계획, 판매 전략, 보고서 템플릿 등 비즈니스 프로세스와 시스템 구성이 매우 일관적이지만, 각 비즈니스 단위의 데이터가 서로 간섭하지 않도록 보장해야 하는 경우에 활용할 수 있습니다.
|
||||
- **여러 조직 또는 자회사 관리**: 그룹 회사 산하의 여러 조직 또는 자회사가 동일한 플랫폼을 공유하지만, 각 브랜드가 독립적인 고객, 제품, 주문 데이터를 관리해야 하는 경우에 유용합니다.
|
||||
|
||||
## 설치
|
||||
|
||||
플러그인 관리에서 **멀티 스페이스(Multi-Space)** 플러그인을 찾아서 활성화합니다.
|
||||
|
||||

|
||||
|
||||
## 사용 설명서
|
||||
|
||||
### 멀티 스페이스 관리
|
||||
|
||||
플러그인을 활성화한 후, **「사용자 및 권한」** 설정 페이지로 이동하여 **공간** 패널로 전환하면 공간을 관리할 수 있습니다.
|
||||
|
||||
> 초기 상태에서는 내장된 **할당되지 않은 공간(Unassigned Space)**이 존재하며, 주로 어떤 공간과도 연결되지 않은 이전 데이터를 확인하는 데 사용됩니다.
|
||||
|
||||

|
||||
|
||||
#### 공간 생성
|
||||
|
||||
「공간 추가」 버튼을 클릭하여 새로운 공간을 생성합니다.
|
||||
|
||||
.png)
|
||||
|
||||
#### 사용자 할당
|
||||
|
||||
생성된 공간을 선택한 후, 오른쪽에서 해당 공간에 속할 사용자를 설정할 수 있습니다.
|
||||
|
||||
> **팁:** 공간에 사용자를 할당한 후에는 **수동으로 페이지를 새로고침**해야 오른쪽 상단의 공간 전환 목록에 최신 공간이 업데이트되어 표시됩니다.
|
||||
|
||||

|
||||
|
||||
### 멀티 스페이스 전환 및 보기
|
||||
|
||||
오른쪽 상단에서 현재 공간을 전환할 수 있습니다.
|
||||
오른쪽의 **눈 아이콘**(하이라이트된 상태)을 클릭하면 여러 공간의 데이터를 동시에 확인할 수 있습니다.
|
||||
|
||||

|
||||
|
||||
### 멀티 스페이스 데이터 관리
|
||||
|
||||
플러그인을 활성화하면 컬렉션 생성 시 시스템이 자동으로 **공간 필드**를 미리 추가합니다.
|
||||
**이 필드를 포함하는 컬렉션만 공간 관리 로직에 포함됩니다.**
|
||||
|
||||

|
||||
|
||||
기존 컬렉션의 경우, 공간 필드를 수동으로 추가하여 공간 관리를 활성화할 수 있습니다.
|
||||
|
||||

|
||||
|
||||
#### 기본 로직
|
||||
|
||||
공간 필드를 포함하는 컬렉션에서는 시스템이 자동으로 다음 로직을 적용합니다.
|
||||
|
||||
1. 데이터를 생성할 때 현재 선택된 공간에 자동으로 연결됩니다.
|
||||
2. 데이터를 필터링할 때 현재 선택된 공간의 데이터로 자동으로 제한됩니다.
|
||||
|
||||
### 이전 데이터의 멀티 스페이스 분류
|
||||
|
||||
멀티 스페이스 플러그인을 활성화하기 전에 이미 존재했던 데이터의 경우, 다음 단계를 통해 공간을 분류할 수 있습니다.
|
||||
|
||||
#### 1. 공간 필드 추가
|
||||
|
||||
이전 컬렉션에 공간 필드를 수동으로 추가합니다.
|
||||
|
||||

|
||||
|
||||
#### 2. 할당되지 않은 공간에 사용자 할당
|
||||
|
||||
이전 데이터를 관리하는 사용자를 모든 공간에 연결해야 하며, 아직 공간에 할당되지 않은 데이터를 확인할 수 있도록 **할당되지 않은 공간(Unassigned Space)**을 포함해야 합니다.
|
||||
|
||||

|
||||
|
||||
#### 3. 모든 공간 데이터 보기로 전환
|
||||
|
||||
상단에서 모든 공간의 데이터를 볼 수 있도록 선택합니다.
|
||||
|
||||

|
||||
|
||||
#### 4. 이전 데이터 할당 페이지 구성
|
||||
|
||||
이전 데이터 할당을 위한 새 페이지를 생성합니다. **목록 페이지**와 **편집 페이지**에 「공간 필드」를 표시하여 수동으로 할당 공간을 조정할 수 있도록 합니다.
|
||||
|
||||

|
||||
|
||||
공간 필드를 편집 가능하도록 설정
|
||||
|
||||

|
||||
|
||||
#### 5. 데이터 공간 수동 할당
|
||||
|
||||
위에서 생성한 페이지를 통해 데이터를 수동으로 편집하여 이전 데이터에 올바른 공간을 점진적으로 할당합니다(일괄 편집도 직접 구성할 수 있습니다).
|
||||
@@ -0,0 +1,32 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-space"
|
||||
---
|
||||
|
||||
# 멀티 스페이스
|
||||
|
||||
<PluginInfo name="multi-space" licenseBundled="professional"></PluginInfo>
|
||||
|
||||
## 소개
|
||||
|
||||
**Multi-space** 플러그인은 하나의 인스턴스에서 논리적 격리를 통해 여러 데이터 공간을 제공합니다.
|
||||
|
||||
## 설치
|
||||
|
||||
플러그인 관리자에서 **Multi-Space**를 활성화합니다.
|
||||
|
||||

|
||||
|
||||
## 사용 가이드
|
||||
|
||||
- **Users & Permissions > Spaces**에서 공간 관리
|
||||
- **Add space**로 공간 생성
|
||||
- 공간별 사용자 할당
|
||||
- 우측 상단에서 공간 전환/다중 공간 조회
|
||||
- 컬렉션에 **Space 필드**가 있어야 공간 로직 적용
|
||||
|
||||

|
||||
.png)
|
||||

|
||||

|
||||
|
||||
기존 데이터는 Space 필드 추가 후, Unassigned Space를 포함해 사용자/데이터를 단계적으로 재분류하면 됩니다.
|
||||
@@ -1,13 +1,24 @@
|
||||
[
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Overzicht",
|
||||
"link": "/multi-app/"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Multi-applicatie",
|
||||
"link": "/multi-app/multi-app"
|
||||
"label": "Multi-app",
|
||||
"items": [
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Overzicht",
|
||||
"link": "/multi-app/multi-app"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Gedeeld geheugenmodus",
|
||||
"link": "/multi-app/multi-app/local"
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
"label": "Multi-omgevingsmodus",
|
||||
"link": "/multi-app/multi-app/remote"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "custom-link",
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-app-manager"
|
||||
---
|
||||
:::tip
|
||||
Dit document is vertaald door AI. Voor onnauwkeurigheden, raadpleeg [de Engelse versie](/en)
|
||||
:::
|
||||
|
||||
|
||||
|
||||
# Multi-app
|
||||
|
||||
## Introductie
|
||||
@@ -1,133 +0,0 @@
|
||||
---
|
||||
pkg: "@nocobase/plugin-multi-app-manager"
|
||||
---
|
||||
:::tip
|
||||
Dit document is vertaald door AI. Voor onnauwkeurigheden, raadpleeg [de Engelse versie](/en)
|
||||
:::
|
||||
|
||||
|
||||
# Multi-app
|
||||
|
||||
|
||||
## Introductie
|
||||
|
||||
De **Multi-app plugin** stelt u in staat om dynamisch meerdere onafhankelijke applicaties te creëren en te beheren, zonder dat u deze afzonderlijk hoeft te implementeren. Elke sub-app is een volledig onafhankelijke instantie met een eigen database, plugins en configuratie.
|
||||
|
||||
#### Gebruiksscenario's
|
||||
- **Multi-tenancy**: Biedt onafhankelijke applicatie-instanties, waarbij elke klant beschikt over eigen gegevens, plugin-configuraties en een eigen rechtenstructuur.
|
||||
- **Hoofd- en subsystemen voor verschillende bedrijfsdomeinen**: Een groot systeem dat bestaat uit meerdere afzonderlijk geïmplementeerde kleinere applicaties.
|
||||
|
||||
|
||||
:::warning
|
||||
De Multi-app plugin zelf biedt geen functionaliteit voor het delen van gebruikers.
|
||||
Als u gebruikers tussen meerdere apps wilt koppelen, kunt u dit combineren met de **[Authenticatie plugin](/auth-verification)**.
|
||||
:::
|
||||
|
||||
|
||||
## Installatie
|
||||
|
||||
Ga in het pluginbeheer naar de **Multi-app plugin** en schakel deze in.
|
||||
|
||||

|
||||
|
||||
|
||||
## Gebruikershandleiding
|
||||
|
||||
|
||||
### Een sub-app aanmaken
|
||||
|
||||
Klik in het menu Systeeminstellingen op ‘Multi-app’ om de Multi-app beheerpagina te openen:
|
||||
|
||||

|
||||
|
||||
Klik op de knop ‘Nieuw toevoegen’ om een nieuwe sub-app aan te maken:
|
||||
|
||||

|
||||
|
||||
#### Beschrijving van de formuliervelden
|
||||
|
||||
* **Naam**: De identificatie van de sub-app, globaal uniek.
|
||||
* **Weergavenaam**: De naam van de sub-app zoals deze in de interface wordt weergegeven.
|
||||
* **Opstartmodus**:
|
||||
* **Start bij eerste bezoek**: De sub-app start alleen wanneer een gebruiker deze voor het eerst via een URL bezoekt;
|
||||
* **Start met hoofd-app**: De sub-app start tegelijkertijd met de hoofd-app (dit zal de opstarttijd van de hoofd-app verlengen).
|
||||
* **Poort**: Het poortnummer dat de sub-app gebruikt tijdens runtime.
|
||||
* **Aangepast domein**: Configureer een onafhankelijk subdomein voor de sub-app.
|
||||
* **Vastmaken aan menu**: Maak de ingang van de sub-app vast aan de linkerkant van de bovenste navigatiebalk.
|
||||
* **Databaseverbinding**: Wordt gebruikt om de gegevensbron voor de sub-app te configureren, met ondersteuning voor de volgende drie methoden:
|
||||
* **Nieuwe database**: Hergebruik de huidige gegevensservice om een onafhankelijke database aan te maken;
|
||||
* **Nieuwe gegevensverbinding**: Configureer een volledig nieuwe databaseservice;
|
||||
* **Schema-modus**: Maak een onafhankelijk schema voor de sub-app aan in PostgreSQL.
|
||||
* **Upgraden**: Als de verbonden database een oudere versie van de NocoBase-gegevensstructuur bevat, wordt deze automatisch geüpgraded naar de huidige versie.
|
||||
|
||||
|
||||
### Een sub-app starten en stoppen
|
||||
|
||||
Klik op de knop **Starten** om de sub-app te starten;
|
||||
> Als *“Start bij eerste bezoek”* was aangevinkt tijdens het aanmaken, zal de sub-app automatisch starten bij het eerste bezoek.
|
||||
|
||||
Klik op de knop **Bekijken** om de sub-app in een nieuw tabblad te openen.
|
||||
|
||||

|
||||
|
||||
|
||||
### Sub-app status en logs
|
||||
|
||||
In de lijst kunt u het geheugen- en CPU-gebruik van elke applicatie bekijken.
|
||||
|
||||

|
||||
|
||||
Klik op de knop **Logs** om de runtime logs van de sub-app te bekijken.
|
||||
> Als de sub-app na het starten niet toegankelijk is (bijv. door een beschadigde database), kunt u de logs gebruiken voor probleemoplossing.
|
||||
|
||||

|
||||
|
||||
|
||||
### Een sub-app verwijderen
|
||||
|
||||
Klik op de knop **Verwijderen** om de sub-app te verwijderen.
|
||||
> Bij het verwijderen kunt u kiezen of u de database ook wilt verwijderen. Ga voorzichtig te werk, want deze actie is onomkeerbaar.
|
||||
|
||||
|
||||
### Een sub-app openen
|
||||
Standaard opent u sub-apps via `/_app/:appName/admin/`, bijvoorbeeld:
|
||||
```
|
||||
http://localhost:13000/_app/a_7zkxoarusnx/admin/
|
||||
```
|
||||
U kunt ook een onafhankelijk subdomein voor de sub-app configureren. U moet het domein naar het huidige IP-adres laten verwijzen, en als u Nginx gebruikt, moet u het domein ook toevoegen aan de Nginx-configuratie.
|
||||
|
||||
|
||||
### Sub-apps beheren via de commandoregel
|
||||
|
||||
In de hoofdmap van het project kunt u via de commandoregel **PM2** gebruiken om sub-app-instanties te beheren:
|
||||
|
||||
```bash
|
||||
yarn nocobase pm2 list # Toont de lijst met momenteel actieve instanties
|
||||
yarn nocobase pm2 stop [appname] # Stopt een specifiek sub-app proces
|
||||
yarn nocobase pm2 delete [appname] # Verwijdert een specifiek sub-app proces
|
||||
yarn nocobase pm2 kill # Forceert het beëindigen van alle gestarte processen (kan ook instanties van de hoofd-app omvatten)
|
||||
```
|
||||
|
||||
### Gegevensmigratie van oude Multi-app
|
||||
|
||||
Ga naar de oude Multi-app beheerpagina en klik op de knop **Gegevens migreren naar nieuwe Multi-app** om de gegevensmigratie uit te voeren.
|
||||
|
||||

|
||||
|
||||
|
||||
## Veelgestelde vragen
|
||||
|
||||
#### 1. Pluginbeheer
|
||||
Sub-apps kunnen dezelfde plugins gebruiken als de hoofd-app (inclusief versies), maar ze kunnen plugins onafhankelijk configureren en gebruiken.
|
||||
|
||||
#### 2. Database-isolatie
|
||||
Sub-apps kunnen worden geconfigureerd met onafhankelijke databases. Als u gegevens tussen apps wilt delen, kan dit via externe gegevensbronnen worden gerealiseerd.
|
||||
|
||||
#### 3. Gegevensback-up en -migratie
|
||||
Momenteel ondersteunt gegevensback-up in de hoofd-app geen gegevens van sub-apps (alleen basisinformatie van de sub-app). U moet handmatig een back-up maken en gegevens migreren binnen elke sub-app.
|
||||
|
||||
#### 4. Implementatie en updates
|
||||
De versie van een sub-app wordt automatisch geüpgraded samen met de hoofd-app, wat zorgt voor versieconsistentie tussen de hoofd- en sub-apps.
|
||||
|
||||
#### 5. Resourcebeheer
|
||||
Het resourceverbruik van elke sub-app is in principe hetzelfde als dat van de hoofd-app. Momenteel verbruikt één applicatie ongeveer 500-600MB geheugen.
|
||||
@@ -0,0 +1,22 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# Multi-appbeheer
|
||||
|
||||
## Overzicht
|
||||
|
||||
NocoBase ondersteunt beheer van meerdere geïsoleerde apps via één toegangspunt met AppSupervisor.
|
||||
|
||||
|
||||
In het begin volstaat één app. Bij groei nemen complexiteit, kosten en isolatiebehoefte toe.
|
||||
|
||||
|
||||
In deze modus draaien meerdere apps in één NocoBase-instantie. Elke app kan eigen DB hebben, maar proces en geheugen worden gedeeld.
|
||||
|
||||

|
||||
|
||||
|
||||
Voor grotere schaal gebruik je een hybride model met Supervisor en meerdere Worker-omgevingen.
|
||||
|
||||

|
||||
@@ -0,0 +1,65 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# Gedeeld geheugenmodus
|
||||
|
||||
## Introductie
|
||||
|
||||
Gebruik deze modus voor app-splitsing zonder zware operationele architectuur.
|
||||
|
||||
## Gebruikershandleiding
|
||||
|
||||
### Omgevingsvariabelen
|
||||
|
||||
```bash
|
||||
APP_DISCOVERY_ADAPTER=local
|
||||
APP_PROCESS_ADAPTER=local
|
||||
```
|
||||
|
||||
### Applicatie maken
|
||||
|
||||
In **System Settings**, open **App supervisor**.
|
||||
|
||||

|
||||
|
||||
Click **Add** to create a new application.
|
||||
|
||||

|
||||
|
||||
### Applicatie starten
|
||||
|
||||
Click **Start**.
|
||||
|
||||

|
||||
|
||||
### Applicatie bezoeken
|
||||
|
||||
Default path:
|
||||
|
||||
```bash
|
||||
http://localhost:13000/apps/a_7zkxoarusnx/admin/
|
||||
```
|
||||
|
||||
### Applicatie stoppen
|
||||
|
||||
Click **Stop**.
|
||||
|
||||

|
||||
|
||||
### Applicatiestatus
|
||||
|
||||

|
||||
|
||||
### Applicatie verwijderen
|
||||
|
||||
Click **Delete**.
|
||||
|
||||

|
||||
|
||||
## FAQ
|
||||
|
||||
- Plugin config is isolated per app.
|
||||
- Database can be isolated per app.
|
||||
- Main app backup does not include data from other apps.
|
||||
- App version follows main app version in shared-memory mode.
|
||||
@@ -0,0 +1,70 @@
|
||||
---
|
||||
pkg: '@nocobase/plugin-app-supervisor'
|
||||
---
|
||||
|
||||
# Multi-omgevingsmodus
|
||||
|
||||
## Introductie
|
||||
|
||||
Gebruik deze modus wanneer hogere stabiliteit, isolatie en schaal nodig zijn.
|
||||
|
||||
## Implementatie
|
||||
|
||||
- Supervisor: central control plane
|
||||
- Worker: runtime environment
|
||||
- Redis: config cache and command channel
|
||||
|
||||
### Architectuurafhankelijkheden
|
||||
|
||||
- Redis
|
||||
- Database service for Supervisor and Workers
|
||||
|
||||
### Entry-applicatie (Supervisor)
|
||||
|
||||
```bash
|
||||
APP_MODE=supervisor
|
||||
APP_DISCOVERY_ADAPTER=remote
|
||||
APP_PROCESS_ADAPTER=remote
|
||||
APP_SUPERVISOR_REDIS_URL=
|
||||
APP_COMMAND_ADPATER=redis
|
||||
APP_COMMAND_REDIS_URL=
|
||||
```
|
||||
|
||||
### Worker-applicatie (Worker)
|
||||
|
||||
```bash
|
||||
APP_MODE=worker
|
||||
APP_DISCOVERY_ADAPTER=remote
|
||||
APP_PROCESS_ADAPTER=local
|
||||
APP_SUPERVISOR_REDIS_URL=
|
||||
APP_COMMAND_ADPATER=redis
|
||||
APP_COMMAND_REDIS_URL=
|
||||
ENVIRONMENT_NAME=
|
||||
ENVIRONMENT_URL=
|
||||
ENVIRONMENT_PROXY_URL=
|
||||
```
|
||||
|
||||
## Gebruikershandleiding
|
||||
|
||||
### Omgevingslijst
|
||||
|
||||

|
||||
|
||||
### Applicatie maken
|
||||
|
||||

|
||||
|
||||
### Applicatielijst
|
||||
|
||||

|
||||
|
||||
### Applicatie starten
|
||||
|
||||

|
||||
|
||||
### Toegangsproxy
|
||||
|
||||
Use `/apps/:appName/admin` via Supervisor.
|
||||
|
||||

|
||||

|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user