اپلیکیشنهای همراه
تصویرهای Docker مربوط به Antimatter با مجموعهای از اپلیکیشنها (که در کنسول سیستم بهعنوان افزونهها شناخته میشوند) همراه هستند. این صفحه فهرست آنها را ارائه میدهد، مشخص میکند کدامیک پس از نصب فعال هستند، و تنظیماتی را که هر اپلیکیشن از یک مدیر نیاز دارد پوشش میدهد.
اپلیکیشنهای همراه
برنامهها در کنسول سیستم بهعنوان پلاگین ها فهرست میشوند. این برنامهها در تصویر (در مسیر /antimatter/prepackaged_plugins) قرار دارند و با کلید امضای برنامههای Antimatter امضا شدهاند، بنابراین بدون نیاز به اتصال به اینترنت نصب میشوند.
بایگانی انتشار و بستههای .deb و .rpm شامل برنامههای کمتری هستند؛ برای جزئیات به برنامههای موجود در بستهها و بایگانی مراجعه کنید.
| اپلیکیشن | شناسه اپلیکیشن | تصویر | فعال پس از نصب |
|---|---|---|---|
| گفتگوی هوش مصنوعی | mattermost-ai | هر دو | بله |
| مکالمهها | com.mattermost.calls | هر دو | بله |
| GitHub | github | هر دو | خیر |
| GitLab | com.github.manland.mattermost-plugin-gitlab | هر دو | خیر |
| Jira | jira | هر دو | خیر |
| Metrics | 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 | memes | antimatter-next | خیر |
| کارهای در انتظار | com.mattermost.plugin-todo | antimatter-next | خیر |
برنامههایی که بهطور پیشفرض فعال هستند، در هر شروع اگر نصب نشده باشند نصب میشوند، یا اگر نسخه جدیدتری در ایمیج وجود داشته باشد، بهروزرسانی میشوند. اگر یکی از آنها را غیرفعال کنید، غیرفعال باقی میماند: حالت پیشفرض فقط برای برنامههایی اعمال میشود که در پیکربندی ذکر نشدهاند. برنامههایی که شناسه Mattermost خود را حفظ میکنند (گفتگوی هوش مصنوعی، مکالمه و یکپارچهسازیها) نسخههای اختصاصی Antimatter هستند.
Kanban (focalboard) و Playbooks (playbooks) دیگر با سرور یا هیچیک از ایمیجها بهصورت پیشفرض ارائه نمیشوند: هرکدام را که میخواهید از انتشار GitHub اختصاصی آن نصب کنید (به برنامهها در بستهها و آرشیو مراجعه کنید)، مانند هر برنامه دیگری که بهطور پیشفرض ارائه نشده است. سروری که یکی از آنها را از قبل نصب دارد، پس از بهروزرسانی نیز آن را حفظ میکند. هر دو نسخه اختصاصی Antimatter باقی میمانند: نسخههای اصلی آنها در Marketplace هرگز جایگزین نسخههای Antimatter نمیشوند.
فعال، غیرفعال و پیکربندی اپلیکیشنها
به مسیر کنسول سیستم › پلاگین ها › مدیریت پلاگین بروید. در بخش پلاگین های نصب شده، برای هر برنامه گزینههای فعال کردن یا غیر فعال کردن، تنظیمات و حذف وجود دارد و وضعیت آن (در حال اجرا، در حال اجرا نیست، خطا در راهاندازی…) نمایش داده میشود. هر برنامهای که تنظیمات دارد، صفحهای اختصاصی در مسیر کنسول سیستم › پلاگین ها نیز دارد.
برنامههای همراه که بهطور پیشفرض غیرفعال هستند، از کپی موجود در تصویر (image) نصب میشوند: روی عکس خود در بالای نوار برنامهها کلیک کنید و بازارچه برنامه را انتخاب کنید (در رابط کاربری کلاسیک، این گزینه در منوی محصول قرار دارد)، برنامه مورد نظر را پیدا کرده و روی نصب کلیک کنید، سپس آن را در مدیریت افزونهها فعال کنید. از خط فرمان:
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
این همچنین روش نصب کارهای در انتظار (Todo) است که در دیالوگ بازار اپلیکیشنها ارائه نمیشود. متغیر AM_PLUGINSETTINGS_PLUGINSTATES نیز کار میکند، اما کل نقشه را جایگزین میکند: تمام اپلیکیشنهایی که میخواهید فعال باشند را فهرست کنید.
تنظیمات اپلیکیشن
تنظیمات اپلیکیشن در PluginSettings.Plugins.<app id> ذخیره میشوند و کلیدها با حروف کوچک نوشته شدهاند. آنها را در صفحه کنسول سیستم اپلیکیشن تغییر دهید یا با استفاده از amctl config patch مطابق با آنچه در بخش پیکربندی آمده است. AM_PLUGINSETTINGS_PLUGINS تنظیمات همه اپلیکیشنها را یکجا جایگزین و قفل میکند، بنابراین از آن پرهیز کنید.
GIFs
برنامه GIFها یک تب برای GIF و استیکر به انتخابگر ایموجی اضافه میکند که پشتوانه آن سرویس GIF از Antimatter (gifs-server) است و از API Tenor استفاده میکند. فایل compose سایت این سرویس را اجرا کرده و برنامه را از طریق متغیرها پیکربندی میکند. تنظیمات آن در مسیر کنسول سیستم › پلاگین ها › GIFها قرار دارد:
| تنظیم | متغیر (پیشفرض) | مقدار پیشفرض | عملکرد |
|---|---|---|---|
| آدرس سرویس GIF | AM_GIFS_SERVICE_URL | خالی | آدرس پایه API سرویس، برای مثال http://gifs:8080/v2. تا زمانی که این فیلد خالی باشد، GIFها غیرفعال هستند. |
| کلید API | AM_GIFS_API_KEY | خالی | یکی از AM_GIFS_API_KEYS سرویس. |
| کلید بارگذاری | AM_GIFS_UPLOAD_KEY | خالی | یکی از کلیدهای AM_GIFS_UPLOAD_KEYS سرویس. به کاربران اجازه میدهد GIF و استیکر از طریق انتخابگر اضافه کنند و مواردی که به این روش اضافه شدهاند را حذف کنند. اگر این فیلد خالی باشد، بارگذاری غیرفعال میشود. |
| چه کسانی میتوانند GIF و استیکر اضافه کنند | مدیران سیستم | مدیران سیستم یا همه. مهمانان هرگز نمیتوانند این کار را انجام دهند، همانطور که برای ایموجیهای سفارشی نیز صدق میکند. مواردی که افراد اضافه میکنند برای همه در دسترس است؛ شخص اضافهکننده و مدیران سیستم میتوانند آن را حذف کنند. | |
| فعالسازی استیکرها | روشن | تب استیکر را نمایش میدهد. | |
| فیلتر محتوا | متوسط | بالا، متوسط، پایین یا خاموش. | |
| ارسال رسانه از طریق آنتیمتر | روشن | مرورگرها GIFها را از آنتیمتر بارگذاری میکنند که آنها را از سرویس دریافت میکند. اگر سرویس فقط در شبکه داخلی شما باشد، این گزینه را روشن نگه دارید. | |
| آدرس رسانه | /media/ سرویس | محل قرارگیری رسانهها در صورت ارسال مستقیم. | |
| حجم کش (مگابایت) | 64 مگابایت | کش حافظه اپلیکیشن. |
برای این اپلیکیشن، متغیرها فقط به عنوان مقادیر جایگزین عمل میکنند: مقداری که در کنسول سیستم تنظیم شده باشد، بر آنها اولویت دارد. اگر انتخابگر GIF خالی بماند، آدرس سرویس و کلید API را در آن صفحه بررسی کنید.
در حالی که برنامه GIFها پیکربندی شده است، تب آن جایگزین انتخابگر Giphy داخلی میشود (کنسول سیستم › ادغام ها › GIF (بتا) › فعال کردن GIF Picker، ServiceSettings.EnableGifPicker).
سرویس GIF
سرویس همه چیز را در دایرکتوری داده خود (/data، حجم gifs) نگه میدارد: یک شاخص جستجو و رسانهها. متغیرهای اصلی آن:
| متغیر | مقدار پیشفرض | عملکرد |
|---|---|---|
AM_GIFS_API_KEYS | هیچکدام | کلیدهای API جدا شده با ویرگول. بدون کلید، API برای هر کسی که به آن دسترسی داشته باشد باز است. چند کلید به شما امکان میدهد آنها را چرخش دهید. |
AM_GIFS_UPLOAD_KEYS | هیچکدام | کلیدهای مجاز برای بارگذاری و حذف موارد بارگذاریشده. بدون یکی از این کلیدها، بارگذاری امکانپذیر نیست. |
AM_GIFS_RATE_LIMIT | 20 | درخواست در ثانیه برای هر کلاینت (کلید API و آدرس)؛ 0 آن را غیرفعال میکند. فایل compose مقدار 0 را تنظیم میکند، زیرا تمام درخواستهای آنتیمتر از یک کلید و آدرس مشترک استفاده میکنند. |
AM_GIFS_LISTEN | :8080 | آدرس شنود. |
AM_GIFS_PUBLIC_URL | از درخواستها | نشانی اینترنتی خارجی، در صورتی که سرویس را در دسترس قرار میدهید. |
AM_GIFS_TRUST_PROXY | false | اعتماد به هدرهای X-Forwarded-*، فقط در پشت یک پروکسی. |
AM_GIFS_UPLOAD_MAX_MB | 16 | بزرگترین فایل بارگذاریشده. |
برای افزودن GIFهای خودتان به صورت انبوه، آنها را با یک فهرست (manifest) از یک پوشه که به یک کانتینر یکبار مصرف (one-off) متصل شده، وارد کنید:
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) | ۲۵ مگابایت | محدودیت حجم برای پیامهای ارسالی و دریافتی. |
| تقویم | ارسال یادآوریها (EnableReminders) | روشن | ربات تقویم پیش از رویدادها یک پیام مستقیم ارسال میکند (۱۰ دقیقه پیش از رویدادهایی که آلارم اختصاصی ندارند). |
برای اینکه کاربران بتوانند به جای رمز عبور، با حساب کاربری خود به صندوقهای Gmail یا Microsoft 365 وارد شوند، یک کلاینت OAuth بسازید و فیلدهای Google یا Microsoft در برنامه ایمیل را پر کنید:
- گوگل: یک کلاینت OAuth وب با API Gmail و دامنه
https://mail.google.com/. - Microsoft: یک برنامه Entra ID با مجوزهای تفویضشده (delegated)
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، یادداشتها، تخته سفید، نظرسنجیها و پلیبوکها
- تخته کانبان (
focalboard) در پنل کناری کنار مکالمه باز میشود، همانطور که پلیبوکها نیز این کار را انجام میدهند. پیوندهای قدیمی به صفحات/kanban/…و/boards/…همان تخته یا کارت را در یک جامعه (community) باز میکنند. تنها تنظیم آن، فعالسازی تختههای به اشتراکگذاری عمومی (EnablePublicSharedBoards، غیرفعال)، به ویرایشگران تخته اجازه میدهد تخته را با هر کسی که پیوند را دارد به اشتراک بگذارند، بدون نیاز به ورود به سیستم. - یادداشتها و نظرسنجیها تنظیماتی ندارند.
- تخته سفید: مدیران سیستم میتوانند کتابخانههای شکل (فایلهای Excalidraw با پسوند
.excalidrawlib، حداکثر ۵ مگابایت برای هر فایل) را برای کل سرور در صفحه تنظیمات بارگذاری کنند. مدیران جامعه، کتابخانههای جامعه خود را مدیریت میکنند. - پلیبوکها در پنل کناری باز میشود. پیوندهای قدیمی به صفحات
/playbooks/…همان اجرا (run) یا پلیبوک را در یک جامعه باز میکنند. این برنامه چند تنظیم دارد که بیشتر ویژگیهای آزمایشی هستند؛ مقادیر پیشفرض برای اکثر سرورها مناسب است. - میمها: چه کسانی میتوانند قالب میم اضافه کنند: همه (پیشفرض)، مدیران سیستم، یا هیچکس (قالبهای سفارشی غیرفعال) که افزودن قالبهای جدید را متوقف میکند، در حالی که قالبهای قبلاً اضافهشده همچنان قابل استفاده میمانند. مهمانان هرگز قالب اضافه نمیکنند. شخص اضافهکننده قالب و مدیران سیستم میتوانند آن را حذف کنند.
- کارهای در انتظار تنظیمات سروری ندارد.
GitHub، GitLab و Jira
این اپلیکیشنها Antimatter را به میزبان کد و ردیاب مشکلات شما متصل میکنند. هر کدام به یک اپلیکیشن OAuth در طرف مقابل و یک وبهوک که به Antimatter اشاره میکند نیاز دارند. اپلیکیشن را فعال کنید، سپس دستور راهاندازی آن را در هر کانالی اجرا کنید تا شما را گامبهگام راهنمایی کند: /github setup، /gitlab setup یا /jira setup.
| اپلیکیشن | آدرس URL هدایت OAuth | آدرس URL وبهوک |
|---|---|---|
| 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 آدرسهای URL وبهوک را نمایش میدهد. | |
اپلیکیشنهای GitHub و GitLab، راز وبهوک و کلید رمزنگاری خود را هنگام اولین ذخیرهسازی تولید میکنند. اپلیکیشن GitHub میتواند به سازمانها (GithubOrg) و اپلیکیشن GitLab به یک گروه (GitlabGroup) محدود شود؛ برای GitHub Enterprise یا GitLab خودمیزبان، آدرس URL پایه آن را تنظیم کنید.
Metrics
اپلیکیشن Metrics، شاخصهای عملکرد سرور را در یک پایگاه داده سری زمانی کوچک داخل Antimatter جمعآوری میکند، بنابراین میتوانید آنها را دانلود کنید یا در یک بسته پشتیبانی گنجانده، بدون اجرای Prometheus. هنگام راهاندازی، نقطه پایانی شاخصهای سرور (MetricsSettings.Enable) را فعال میکند. به عملیات مراجعه کنید.
نصب اپلیکیشنهای دیگر
Antimatter اپلیکیشنهای Mattermost (افزونهها) را اجرا میکند. سه راه برای افزودن یکی:
- از یک بازارچه از راه دور. فعال کردن Remote Marketplace (
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را اجرا کنید. - از یک نشانی:
amctl plugin install-url <url>، این هم با فعال بودن بارگذاری.
Antimatter امضای برنامهها را با کلیدهای مورد اعتمادش بررسی میکند: کلید Antimatter، کلیدی که Mattermost, Inc. برای امضای برنامههای منتشرشدهاش استفاده میکند (به همین دلیل برنامههای Mattermost که خودتان دانلود میکنید، نصب میشوند) و هر کلیدی که در PluginSettings.SignaturePublicKeyFiles اضافه کنید. اگر نیاز به امضای افزونه (PluginSettings.RequirePluginSignature، بهطور پیشفرض غیرفعال) فعال باشد، برنامههای بدون امضا رد میشوند و بارگذاری غیرفعال میشود.
برخی برنامههای ساختهشده برای نسخههای پولی Mattermost خودشان برای یک مجوز Mattermost بررسی میکنند و از اجرا خودداری میکنند؛ Antimatter برای آنها ادعای داشتن مجوز نمیکند.