التطبيقات المدمجة

تأتي صور Docker الخاصة بـ Antimatter مع مجموعة من التطبيقات (الإضافات، في وحدة التحكم بالنظام). تدرج هذه القائمة التطبيقات، وتوضح أيها مفعّل بعد التثبيت، وتغطي الإعدادات التي يحتاجها كل تطبيق من المدير.

التطبيقات المدمجة

تظهر التطبيقات في وحدة التحكم بالنظام على أنها إضافات. وهي موجودة في الصورة (في /antimatter/prepackaged_plugins)، وموقّعة بمفتاح توقيع تطبيقات Antimatter، لذا تُثبَّت دون الحاجة إلى اتصال بالإنترنت.

يتضمن أرشيف الإصدار، وحزم ‎.deb و‎.rpm، عددًا أقل من التطبيقات؛ راجع التطبيقات في الحزم والأرشيف.

التطبيقمعرّف التطبيقالصورةمفعّل بعد التثبيت
الدردشة بالذكاء الاصطناعيmattermost-aiكلاهمانعم
المكالماتcom.mattermost.callsكلاهمانعم
GitHubgithubكلاهمالا
GitLabcom.github.manland.mattermost-plugin-gitlabكلاهمالا
Jirajiraكلاهمالا
المقاييسcom.mattermost.mattermost-plugin-metricsكلاهمالا
القنوات الصوتيةcom.antimatterchat.voice-channelsantimatter-nextنعم
الاستطلاعاتcom.antimatterchat.pollsantimatter-nextنعم
الملاحظاتcom.antimatterchat.notesantimatter-nextنعم
السبورة البيضاءcom.antimatterchat.whiteboardantimatter-nextنعم
البريدcom.antimatterchat.mailantimatter-nextنعم
التقويمcom.antimatterchat.calendarantimatter-nextنعم
GIFscom.antimatterchat.gifsantimatter-nextنعم
الميماتmemesantimatter-nextلا
قائمة المهامcom.mattermost.plugin-todoantimatter-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:

الإعدادالمتغير (القيمة الافتراضية)الافتراضيوظيفته
عنوان خدمة GIFsAM_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_LIMIT20عدد الطلبات في الثانية لكل عميل (مفتاح API والعنوان)؛ 0 يعطّلها. يضبط ملف Compose القيمة 0، لأن جميع طلبات Antimatter تشترك في مفتاح وعنوان واحد.
AM_GIFS_LISTEN:8080عنوان الاستماع.
AM_GIFS_PUBLIC_URLمن الطلباترابط URL خارجي، إذا كنت تُعرّض الخدمة.
AM_GIFS_TRUST_PROXYfalseالثقة في رؤوس X-Forwarded-*، خلف وكيل فقط.
AM_GIFS_UPLOAD_MAX_MB16أكبر ملف تم رفعه.

لإضافة الرموز التعبيرية 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رابط خطاف الويب
GitHubhttps://chat.example.com/plugins/github/oauth/completehttps://chat.example.com/plugins/github/webhook
GitLabhttps://chat.example.com/plugins/com.github.manland.mattermost-plugin-gitlab/oauth/completehttps://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 روابط خطاف الويب.
اترك خيار استخدام تطبيق OAuth المسجَّل مسبقًا غير مفعّل في تطبيقَي GitHub وGitLab: فهو يعتمد على خدمة في Mattermost لا تتوفر في Antimatter، ويرفض التطبيق البدء إذا كان الخيار مفعّلًا. سجّل تطبيق OAuth خاصًا بك.

ينشئ تطبيقا 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 لا يدّعي امتلاك ترخيص لها.