التطبيقات المدمجة
تأتي صور Docker الخاصة بـ Antimatter مع مجموعة من التطبيقات (الإضافات، في وحدة التحكم بالنظام). تدرج هذه القائمة التطبيقات، وتوضح أيها مفعّل بعد التثبيت، وتغطي الإعدادات التي يحتاجها كل تطبيق من المدير.
التطبيقات المدمجة
تظهر التطبيقات في وحدة التحكم بالنظام على أنها إضافات. وهي موجودة في الصورة (في /antimatter/prepackaged_plugins)، وموقّعة بمفتاح توقيع تطبيقات Antimatter، لذا تُثبَّت دون الحاجة إلى اتصال بالإنترنت.
يتضمن أرشيف الإصدار، وحزم .deb و.rpm، عددًا أقل من التطبيقات؛ راجع التطبيقات في الحزم والأرشيف.
| التطبيق | معرّف التطبيق | الصورة | مفعّل بعد التثبيت |
|---|---|---|---|
| الدردشة بالذكاء الاصطناعي | mattermost-ai | كلاهما | نعم |
| المكالمات | com.mattermost.calls | كلاهما | نعم |
| GitHub | github | كلاهما | لا |
| GitLab | com.github.manland.mattermost-plugin-gitlab | كلاهما | لا |
| Jira | jira | كلاهما | لا |
| المقاييس | com.mattermost.mattermost-plugin-metrics | كلاهما | لا |
| القنوات الصوتية | com.antimatterchat.voice-channels | antimatter-next | نعم |
| الاستطلاعات | com.antimatterchat.polls | antimatter-next | نعم |
| الملاحظات | com.antimatterchat.notes | antimatter-next | نعم |
| السبورة البيضاء | com.antimatterchat.whiteboard | antimatter-next | نعم |
| البريد | com.antimatterchat.mail | antimatter-next | نعم |
| التقويم | com.antimatterchat.calendar | antimatter-next | نعم |
| GIFs | com.antimatterchat.gifs | antimatter-next | نعم |
| الميمات | memes | antimatter-next | لا |
| قائمة المهام | com.mattermost.plugin-todo | antimatter-next | لا |
تُثبَّت التطبيقات المفعّلة افتراضيًا عند كل بدء تشغيل إذا لم تكن مثبتة بعد، أو تُحدَّث إذا كانت الصورة تحتوي على إصدار أحدث. وإذا عطّلت أحد التطبيقات، يبقى معطّلًا: ينطبق الوضع الافتراضي فقط على التطبيقات التي لا يذكرها الإعداد بعد. التطبيقات التي تحتفظ بمعرّف Mattermost الخاص بها (الدردشة بالذكاء الاصطناعي، والمكالمات، والتكاملات) هي إصدارات Antimatter الخاصة.
لم يعد Kanban (focalboard) وPlaybooks (playbooks) مضمّنين مع الخادم أو أي من الصور: ثبّت ما تريد من إصدار GitHub الخاص به (انظر التطبيقات في الحزم والأرشيف)، مثل أي تطبيق آخر غير مضمّن افتراضيًا. الخادم الذي يحتوي على أحد هذه التطبيقات مثبتًا مسبقًا يحافظ عليه أثناء الترقية. كلاهما يبقى من إصدارات Antimatter الخاصة: إصدارات Marketplace الأصلية منهما لا تستبدل أبدًا إصدارات Antimatter.
تفعيل التطبيقات وتعطيلها وإعدادها
انتقل إلى وحدة التحكم بالنظام › الإضافات › إدارة الإضافات. تحت الإضافات المثبّتة، لكل تطبيق تفعيل أو تعطيل، الإعدادات وإزالة، ويعرض حالته (يعمل، غير عامل، فشل في البدء…). لكل تطبيق يحتوي على إعدادات صفحة خاصة به تحت وحدة التحكم بالنظام › الإضافات.
تُثبَّت التطبيقات المضمّنة التي تكون معطّلةً افتراضيًا من النسخة الخاصة بالصورة: انقر على صورتك في أعلى شريط التطبيقات واختر سوق التطبيقات (في الواجهة الكلاسيكية، يكون في قائمة المنتج)، ثم ابحث عن التطبيق وانقر تثبيت، ثم فعّله في إدارة الإضافات. من سطر الأوامر:
docker compose exec antimatter amctl --local plugin marketplace install github
docker compose exec antimatter amctl --local plugin enable github
أوامر أخرى: amctl plugin list، amctl plugin disable <id>، amctl plugin delete <id>.
تفعيل التطبيقات عبر الإعداد
التطبيقات المفعّلة هي الإعداد PluginSettings.PluginStates، وهو خريطة معرّفات التطبيقات. يمكنك دمج إدخالات فيه باستخدام amctl؛ ومع تفعيل تفعيل الإضافات المُجمّعة مسبقًا تلقائيًا (وهو الافتراضي)، يُثبَّت التطبيق المدمج المفعّل عند بدء التشغيل التالي:
docker compose exec -T antimatter amctl --local config patch /dev/stdin <<'EOF'
{"PluginSettings": {"PluginStates": {"com.mattermost.plugin-todo": {"Enable": true}}}}
EOF
docker compose restart antimatter
هذه هي الطريقة أيضًا لتثبيت قائمة المهام، التي لا تُقدَّم في مربع حوار سوق التطبيقات. المتغير AM_PLUGINSETTINGS_PLUGINSTATES يعمل أيضًا، لكنه يستبدل الخريطة بأكملها: اذكر كل تطبيق تريده مفعّلًا.
إعدادات التطبيقات
تُخزَّن إعدادات التطبيق تحت PluginSettings.Plugins.<app id>، مع مفاتيح بأحرف صغيرة. يمكنك تغييرها في صفحة وحدة التحكم بالنظام الخاصة بالتطبيق، أو باستخدام amctl config patch كما هو موضح في الإعدادات. يُستبدل AM_PLUGINSETTINGS_PLUGINS بإعدادات كل التطبيقات دفعة واحدة ويقفلها جميعًا، لذا تجنّب استخدامه.
GIFs
يضيف تطبيق GIFs تبويبًا للصور المتحركة (GIF) والملصقات إلى منتقي الرموز التعبيرية، مدعومًا بخدمة GIFs الخاصة بـ Antimatter (gifs-server)، والتي تتحدث بلغة واجهة برمجة تطبيقات Tenor. ينفّذ ملف Compose الخاص بالموقع الخدمة ويضبط التطبيق عبر المتغيرات. إعداداته، في وحدة التحكم بالنظام › الإضافات › GIFs:
| الإعداد | المتغير (القيمة الافتراضية) | الافتراضي | وظيفته |
|---|---|---|---|
| عنوان خدمة GIFs | AM_GIFS_SERVICE_URL | فارغ | عنوان API الأساسي للخدمة، على سبيل المثال http://gifs:8080/v2. تبقى الصور المتحركة (GIF) معطلة طالما كان هذا الحقل فارغًا. |
| مفتاح الواجهة البرمجية | AM_GIFS_API_KEY | فارغ | أحد مفاتيح AM_GIFS_API_KEYS الخاصة بالخدمة. |
| مفتاح الرفع | AM_GIFS_UPLOAD_KEY | فارغ | إحدى مفاتيح AM_GIFS_UPLOAD_KEYS الخاصة بالخدمة. تتيح للأشخاص إضافة صور GIF وملصقات من منتقي الصور، وحذف ما أُضيف بهذه الطريقة. إذا تُرك فارغًا، تُعطَّل عمليات الرفع. |
| من يمكنه إضافة صور GIF وملصقات | مديرو النظام | مديرو النظام، أو الجميع. لا يستطيع الضيوف ذلك أبدًا، تمامًا كما هو الحال مع الرموز التعبيرية المخصصة. ما يضيفه الأشخاص يكون متاحًا للجميع؛ ويمكن للشخص الذي أضافه وللمشرفين النظاميين حذفه. | |
| تفعيل الملصقات | مفعّل | يعرض تبويب الملصقات. | |
| مرشّح المحتوى | متوسط | مرتفع، متوسط، منخفض، أو معطّل. | |
| تقديم الوسائط عبر Antimatter | مفعّل | تحمّل المتصفحات صور GIF من Antimatter، التي تستعيدها من الخدمة. اتركه مفعّلًا إذا كانت الخدمة موجودة على شبكتك الداخلية فقط. | |
| عنوان الوسائط | /media/ الخاص بالخدمة | موقع الوسائط عند تقديمها مباشرة. | |
| حجم ذاكرة التخزين المؤقت (ميجابايت) | 64 ميجابايت | ذاكرة التخزين المؤقت للتطبيق. |
في هذا التطبيق، المتغيرات هي قيم احتياطية فقط: القيمة المُعيّنة في وحدة التحكم بالنظام تتفوق عليها. إذا بقي منتقي GIFs فارغًا، تحقق من عنوان الخدمة ومفتاح API في تلك الصفحة.
بينما يكون تطبيق GIFs مُعدًا، يستبدل تبويبه منتقي Giphy المدمج (وحدة التحكم بالنظام › التكاملات › GIF › تفعيل منتقي GIF، ServiceSettings.EnableGifPicker).
خدمة GIFs
تحتفظ الخدمة بكل شيء في مجلد بياناتها (/data، مجلد gifs): فهرس بحث والوسائط. متغيراتها الرئيسية:
| المتغير | الافتراضي | وظيفته |
|---|---|---|
AM_GIFS_API_KEYS | لا شيء | مفاتيح API مفصولة بفواصل. بدون مفتاح، تكون واجهة برمجة التطبيقات مفتوحة لأي شخص يصل إليها. تتيح لك عدة مفاتيح تدويرها. |
AM_GIFS_UPLOAD_KEYS | لا شيء | المفاتيح المسموح بها للرفع، ولحذف ما تم رفعه. لا يتم أي رفع بدون مفتاح. |
AM_GIFS_RATE_LIMIT | 20 | عدد الطلبات في الثانية لكل عميل (مفتاح API والعنوان)؛ 0 يعطّلها. يضبط ملف Compose القيمة 0، لأن جميع طلبات Antimatter تشترك في مفتاح وعنوان واحد. |
AM_GIFS_LISTEN | :8080 | عنوان الاستماع. |
AM_GIFS_PUBLIC_URL | من الطلبات | رابط URL خارجي، إذا كنت تُعرّض الخدمة. |
AM_GIFS_TRUST_PROXY | false | الثقة في رؤوس X-Forwarded-*، خلف وكيل فقط. |
AM_GIFS_UPLOAD_MAX_MB | 16 | أكبر ملف تم رفعه. |
لإضافة الرموز التعبيرية GIF الخاصة بك دفعةً واحدة، استوردها باستخدام قائمة (manifest) من مجلد مُثبَّت في حاوية لمرة واحدة:
docker compose run --rm -v "$PWD/my-gifs:/import:ro" gifs import -manifest /import/manifest.json
لإعادة استيراد ملصقات البداية بعد ترقية: docker compose run --rm gifs stickers. صيغة القائمة والأوامر الأخرى موجودة في README الخاص بـ gifs-server.
البريد والتقويم
يربط البريد والتقويم كل شخص بصندوق بريده الخاص (IMAP و SMTP) وتقويمه الخاص (CalDAV). يدخل الأشخاص خادمهم وكلمة مرورهم في التطبيق؛ وتُخزَّن كلمات المرور مشفّرة. لا تضبط خوادم البريد أو التقويم نيابةً عنهم، لكنك تحدد ما يمكنهم الاتصال به:
| التطبيق | الإعداد | الافتراضي | وظيفته |
|---|---|---|---|
| البريد، التقويم | السماح بخوادم البريد على الشبكات الخاصة، السماح بخوادم التقويم على الشبكات الخاصة (AllowPrivateNetworks) | معطّل | معطّل، يرفض الخادم الاتصال بعنوانات الحلقة (loopback) والعناوين الخاصة والعناوين المحلية للربط (link-local)، فلا يمكن استخدام التطبيقات للوصول إلى شبكتك الداخلية. فعّله إذا كان خادم بريدك أو تقويمك على عنوان خاص. |
| البريد، التقويم | السماح بالاتصالات غير المشفّرة (AllowInsecureConnections) | معطّل | معطّل، يجب أن تستخدم الاتصالات TLS (البريد: TLS أو STARTTLS؛ التقويم: HTTPS). |
| البريد | فاصل فحص الرسائل غير المقروءة (دقائق) (UnreadCheckMinutes) | دقيقتان | تكرار فحص عدد الرسائل غير المقروءة عندما لا يستطيع خادم البريد إرسالها. |
| البريد | أقصى حجم للرسالة (ميغابايت) (MaxMessageSizeMB) | 25 ميغابايت | حد حجم الرسائل المرسلة والمقروءة. |
| التقويم | إرسال التذكيرات (EnableReminders) | مفعّل | يرسل بوت التقويم رسالة مباشرة قبل الأحداث (10 دقائق قبل، للأحداث التي لا تحمل تذكيرًا خاصًا بها). |
لتمكين الأشخاص من تسجيل الدخول إلى صناديق بريد Gmail أو Microsoft 365 باستخدام حساباتهم بدلاً من كلمة المرور، أنشئ عميل OAuth واملأ حقول Google أو Microsoft في تطبيق البريد:
- Google: عميل OAuth ويب مع Gmail API والنطاق
https://mail.google.com/. - Microsoft: تطبيق Entra ID مع الأذونات المفوّضة
IMAP.AccessAsUser.All،SMTP.Send،offline_access،openid،emailوprofile. المستأجر (tenant) هوcommonافتراضيًا. - في الحالتين، عنوان إعادة التوجيه (redirect URI) هو
https://chat.example.com/plugins/com.antimatterchat.mail/oauth/callback(رابط موقعك).
Kanban، الملاحظات، السبورة البيضاء، الاستطلاعات، أدلة التشغيل
- يفتح Kanban (
focalboard) في اللوحة الجانبية بجانب المحادثة، تمامًا كما تفعل أدلة التشغيل. الروابط القديمة إلى صفحات/kanban/…و/boards/…تفتح نفس اللوحة أو البطاقة في مجتمع. إعدادها الوحيد، تفعيل اللوحات المشاركة علنًا (EnablePublicSharedBoards، معطّل)، يتيح لمحرري اللوحة مشاركتها مع أي شخص لديه الرابط، دون تسجيل الدخول. - لا توجد إعدادات لتطبيقَي الملاحظات والاستطلاعات.
- السبورة البيضاء: يمكن لمديري النظام رفع مكتبات الأشكال (ملفات Excalidraw بصيغة
.excalidrawlib، بحد أقصى 5 ميجابايت لكل ملف) لجميع الخوادم من صفحة الإعدادات. أما مديرو المجتمعات فيديرون مكتبات مجتمعاتهم الخاصة. - يفتح أدلة التشغيل في اللوحة الجانبية. الروابط القديمة إلى صفحات
/playbooks/…تفتح نفس التشغيل أو دليل التشغيل في مجتمع. يحتوي على بعض الإعدادات، معظمها ميزات تجريبية؛ الإعدادات الافتراضية تناسب معظم الخوادم. - الميمات: من يمكنه إضافة قوالب الميمات: الجميع (الافتراضي)، مديرو النظام، أو لا أحد (إيقاف القوالب المخصصة)، مما يمنع إضافة قوالب جديدة بينما تبقى القوالب المضافة مسبقًا قابلة للاستخدام. لا يضيف الضيوف قوالب أبدًا. يمكن للشخص الذي أضاف قالبًا وللمشرفين النظاميين حذفه.
- لا توجد إعدادات خادم لتطبيق قائمة المهام.
GitHub وGitLab وJira
ترتبط هذه التطبيقات بين Antimatter ومضيف الكود ونظام تتبع المشكلات. يتطلب كل تطبيق إنشاء تطبيق OAuth على الطرف الآخر، وخطاف ويب (webhook) يشير إلى Antimatter. فعّل التطبيق، ثم نفّذ أمر الإعداد الخاص به في أي قناة، والذي يوجهك خطوة بخطوة: /github setup أو /gitlab setup أو /jira setup.
| التطبيق | رابط إعادة التوجيه الخاص بـ OAuth | رابط خطاف الويب |
|---|---|---|
| GitHub | https://chat.example.com/plugins/github/oauth/complete | https://chat.example.com/plugins/github/webhook |
| GitLab | https://chat.example.com/plugins/com.github.manland.mattermost-plugin-gitlab/oauth/complete | https://chat.example.com/plugins/com.github.manland.mattermost-plugin-gitlab/webhook |
| Jira | /jira instance install server <url> أو /jira instance install cloud-oauth <url>؛ يطبع الأمر /jira webhook روابط خطاف الويب. | |
ينشئ تطبيقا GitHub وGitLab سر خطاف الويب ومفتاح التشفير عند الحفظ الأول. يمكن تقييد تطبيق GitHub بالتنظيمات (GithubOrg) وتقييد تطبيق GitLab بمجموعة (GitlabGroup)؛ ولخوادم GitHub Enterprise أو GitLab المستضافة ذاتيًا، اضبط الرابط الأساسي (base URL).
المقاييس
يجمع تطبيق Metrics مقاييس أداء الخادم في قاعدة بيانات زمنية صغيرة داخل Antimatter، مما يتيح لك تنزيلها أو تضمينها في حزمة دعم دون تشغيل Prometheus. عند بدء التشغيل، يفعّل نقطة نهاية مقاييس الخادم (MetricsSettings.Enable). راجع العمليات.
تثبيت تطبيقات أخرى
تشغّل Antimatter تطبيقات Mattermost (الإضافات). ثلاث طرق لإضافة تطبيق:
- من متجر بعيد. تفعيل المتجر البعيد (
PluginSettings.EnableRemoteMarketplace) معطّل افتراضيًا، وعنوان URL للمتجر (PluginSettings.MarketplaceURL) فارغ: Antimatter لا يستخدم متجر Mattermost، ويتجاهل عنوانه إذا كان لا يزال موجودًا في إعدادات من Mattermost. لعرض تطبيقات خادم متجر تثق به، فعّل الإعداد وعرّف عنوان URL الخاص به. تُخفى نسخ المتجر من التطبيقات التي توفرها Antimatter (المكالمات، أدلة التشغيل، لوحات Kanban وغيرها) حتى لا تحل محل نسخ Antimatter: السماح للسوق بتقديم نسخ من إضافات Antimatter (PluginSettings.AllowMarketplaceToReplaceAntimatterPlugins) معطّل افتراضيًا. - عن طريق رفع حزمة (
.tar.gz). الرفع معطّل افتراضيًا ولا يوجد له مفتاح في وحدة التحكم بالنظام: عرّفAM_PLUGINSETTINGS_ENABLEUPLOADS=true، ثم استخدم رفع إضافة في إدارة الإضافات، أوamctl --local plugin add app.tar.gz. - من عنوان URL:
amctl plugin install-url <url>، مع تفعيل الرفع أيضًا.
يتحقق Antimatter من توقيعات التطبيقات مقابل المفاتيح التي يثق بها: مفتاح Antimatter، والمفتاح الذي توقّع به Mattermost, Inc. تطبيقاتها المنشورة (لذا تُثبَّت إضافة Mattermost التي تقوم بتنزيلها بنفسك)، وأي مفتاح تضيفه في PluginSettings.SignaturePublicKeyFiles. عند تفعيل الاشتراط توقيع الإضافة (PluginSettings.RequirePluginSignature، معطّل افتراضيًا)، تُرفض التطبيقات غير الموقّعة ويُعطَّل الرفع.
بعض التطبيقات المصممة للطبعات المدفوعة من Mattermost تتحقق بنفسها من وجود ترخيص Mattermost وترفض التشغيل؛ Antimatter لا يدّعي امتلاك ترخيص لها.