แอปที่รวมมาให้
Docker images ของ Antimatter มาพร้อมชุดแอป (ปลั๊กอิน, ในคอนโซลระบบ) หน้างานน้ีจะลิสต์แอปเหล่าน้ี, ระบุท่ีใดเปิดใช้งานหลังจากตดิตัง, และครอบคลุมการตั้งค่าท่ีแต่ละแอปตองการจากผู้ดูลแลระบบ
แอปท่ีรวมมาให้
แอปจะแสดงในรปูของ ปลั๊กอิน ในคอนโซลระบบ. ท่ีอยู้ใน image (ใน /antimatter/prepackaged_plugins), เซ็นด้วยคีย์เซ็นแอปของ Antimatter, ดงัน้ันท่ีตดิตังไดโ์ห้ไม่ตองการการเชอืมตอ่อินเตอรเ์นต
ไฟล์เก็บถาวรของเวอร์ชันที่ปล่อยออกมา และแพ็กเกจ .deb และ .rpm มีแอปน้อยกว่า: ดู แอปในแพ็กเกจและไฟล์เก็บถาวร
| แอป | App id | ภาพ | เปิดใช้งานหลังจากตดิตัง |
|---|---|---|---|
| Agents (AI) | mattermost-ai | ทังสอง | ใช่ |
| Calls | com.mattermost.calls | ทังสอง | ใช่ |
| Kanban | focalboard | ทังสอง | ใช่ |
| เพลยบุ๊ก | playbooks | ทังสอง | ใช่ |
| GitHub | github | ทังสอง | ไม่ |
| GitLab | com.github.manland.mattermost-plugin-gitlab | ทังสอง | ไม่ |
| Jira | jira | ทังสอง | ไม่ |
| ตัวชี้วัด | com.mattermost.mattermost-plugin-metrics | ทังสอง | ไม่ |
| Voice Channels | 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 | ไม่ |
แอปท่ีเปิดใช้งานโดยพื้้นฐานจะตดิตังในแต่ละครังท่ีสตารตถา้ยังไม่ตดิตัง, หรืออัปเกรดถา้ image มีเวอร์ชัันท่ีใหม่มากกวา้. ถา้คุณปิดใช้งานแอปใด, ท่ีจะปิดอยู้ดงัน้ี: พื้้นฐานน้ีจะใช้กับแอปท่ีการตั้งค่ายังไม่ได้อ้างถงิ่. แอปท่ีคง id ของ Mattermost (Agents, Calls, Kanban, Playbooks และ integrations) เปน็ build ของ Antimatter เอง
เปิด, ปิด และตั้งค่าแอป
ไปท่ี คอนโซลระบบ › ปลั๊กอิน › การจัดการปลั๊กอิน. ใต ปลั๊กอินท่ีตดิตัง, แอปแต่ละแอปมมี เปิดใช้งาน หรือ ปิดใช้งาน, การตั้งค่า และ นำออก, และแสดงสถานะ (Running, Not running, Failed to start…). แอปแต่ละแอปท่ีมี การตั้งค่าจะมมีหน้างานของท่ีเองใต คอนโซลระบบ › ปลั๊กอิน
แอปที่ถูกรวมไว้แต่ปิดไว้โดยค่าเริ่มต้น จะติดตั้งจากสำเนาของภาพ (image) เอง: คลิกที่รูปของคุณที่ด้านบนของแถบแอป แล้วเลือก App Marketplace (ในอินเทอร์เฟซแบบคลาสสิก จะอยู่ในเมนูผลิตภัณฑ์) ค้นหาแอปแล้วคลิก ติดตั้ง จากนั้นเปิดใช้งานใน Plugin Management จากบรรทัดคำสั่ง:
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, map ของ app ids. คุณสามารถ merge entries เข้าไปดวย 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, ท่ีไม่ได้นำเสนอใน Marketplace dialog. ตัวแปร AM_PLUGINSETTINGS_PLUGINSTATES กท็ ำงาน, แต่มันจะแทนท่ี map ทังหมด: ลิสต์แอปทังหมดท่ีคุณตองการใหเปิดใช้งาน
การตั้งค่าแอป
การตั้งค่าแอปถูกเก็บไว้ภายใต้ PluginSettings.Plugins.<app id> โดยคีย์จะเป็นตัวพิมพ์เล็ก คุณสามารถแก้ไขได้บนหน้า System Console ของแอป หรือด้วยคำสั่ง amctl config patch ตามที่แสดงใน Configuration AM_PLUGINSETTINGS_PLUGINS จะแทนที่การตั้งค่าของทุกแอปพร้อมกันและล็อกทั้งหมดไว้ ดังนั้นควรหลีกเลี่ยงการใช้อย่า
GIFs
แอป GIFs เพิ่มแท็บ GIF และสติกเกอร์ลงในตัวเลือกอิโมจิ โดยอาศัยบริการ GIF ของ Antimatter (gifs-server) ซึ่งทำงานผ่าน Tenor API ไฟล์ compose ของไซต์จะรันบริการและตั้งค่าแอปผ่านตัวแปร การตั้งค่าของแอปใน System Console › Plugins › GIFs:
| การตั้งค่า | ตัวแปร (ค่าสำรอง) | ค่าเริ่มต้น | สิ่งที่ทำ |
|---|---|---|---|
| URL ของบริการ GIF | AM_GIFS_SERVICE_URL | ว่าง | API base ของบริการ ตัวอย่างเช่น http://gifs:8080/v2 GIF จะถูกปิดใช้งานเมื่อฟิลด์นี้ว่างอยู่ |
| API key | AM_GIFS_API_KEY | ว่าง | หนึ่งใน AM_GIFS_API_KEYS ของบริการ |
| คีย์สำหรับอัปโหลด | AM_GIFS_UPLOAD_KEY | ว่าง | หนึ่งใน AM_GIFS_UPLOAD_KEYS ของบริการ ช่วยให้ผู้ใช้เพิ่ม GIF และสติ๊กเกอร์จากตัวเลือก (picker) และลบสิ่งเหล่านี้ที่เพิ่มด้วยวิธีนี้ หากเว้นว่างไว้ การอัปโหลดจะถูกปิด |
| ใครสามารถเพิ่ม GIF และสติกเกอร์ได้ | ผู้ดูลำระบบ | ผู้ดูแลระบบ หรือ ทุกคน แขกไม่สามารถทำได้เสมอไป เช่นเดียวกับอิโมจิกำกับเอง สิ่งที่ผู้ใช้เพิ่มจะพร้อมใช้งานสำหรับทุกคน; ผู้ที่เพิ่มและผู้ดูแลระบบสามารถลบได้ | |
| เปิดใช้งานสติกเกอร์ | เปิด | แสดงแท็บสติกเกอร์ | |
| ตัวกรองเนื้อหา | medium | high, medium, low หรือ off | |
| ส่งสื่อผ่าน Antimatter | เปิด | เบราว์เซอร์จะโหลด GIF จาก Antimatter ซึ่งจะไปดึงข้อมูลจากบริการ 应保持เปิดใช้งานเมื่อบริการอยู่บนเครือข่ายภายในเท่านั้น | |
| URL ของสื่อ | /media/ ของบริการ | ตำแหน่งของสื่อ เมื่อส่งโดยตรง | |
| ขนาดแคช (MB) | 64 MB | แคชหน่วยความจำของแอป |
สำหรับแอปนี้ ตัวแปรเป็นเพียงค่าสำรอง: ค่าที่ตั้งไว้ใน System Console จะมีผลเหนือกว่าตัวแปรเหล่านั้น หากตัวเลือกรูป GIF ว่างเปล่า ให้ตรวจสอบ URL ของบริการและ API key บนหน้าดังกล่าว
เมื่อตั้งค่าแอป GIFs แล้ว แท็บของมันจะแทนที่ตัวเลือกรูป Giphy ที่มีอยู่ในตัว (System Console › Integrations › GIF › Enable GIF Picker, ServiceSettings.EnableGifPicker)
บริการ GIF
บริการจะเก็บทุกอย่างไว้ในไดเรกทอรีข้อมูล (/data, โวลุ่ม gifs): ดัชนีการค้นหาและสื่อ ตัวแปรหลักของมัน:
| ตัวแปร | ค่าเริ่มต้น | สิ่งที่ทำ |
|---|---|---|
AM_GIFS_API_KEYS | none | คีย์ API ที่คั่นด้วยเครื่องหมายจุลภาค หากไม่มีคีย์ API จะเปิดกว้างสำหรับทุกคนที่เข้าถึงได้ การมีหลายคีย์ช่วยให้คุณสามารถหมุนเวียนคีย์ได้ |
AM_GIFS_UPLOAD_KEYS | none | คีย์ที่อนุญาตให้อัปโหลด และลบสิ่งที่อัปโหลดแล้ว หากไม่มีคีย์เหล่านี้จะไม่สามารถอัปโหลดได้ |
AM_GIFS_RATE_LIMIT | 20 | จำนวนคำขอต่อวินาทีต่อไคลเอนต์ (API key และที่อยู่); 0 ปิดใช้งาน ไฟล์ compose ตั้งค่าเป็น 0 เนื่องจากคำขอทั้งหมดของ Antimatter ใช้คีย์และที่อยู่เดียวกัน |
AM_GIFS_LISTEN | :8080 | ที่อยู่สำหรับรับฟัง |
AM_GIFS_PUBLIC_URL | from requests | URL ภายนอก หากคุณเปิดใช้งานบริการ |
AM_GIFS_TRUST_PROXY | false | เชื่อถือเฮดเดอร์ X-Forwarded-* เฉพาะเมื่ออยู่เบื้องหลังพร็อกซีเท่านั้น |
AM_GIFS_UPLOAD_MAX_MB | 16 | ขนาดไฟล์ที่อัปโหลดได้สูงสุด |
เพื่อเพิ่ม GIF ของคุณเองจำนวนมาก ให้ใช้ manifest นำเข้าจากไดเรกทอรีที่ mount เข้าไปในคอนเทนเนอร์แบบ one-off:
docker compose run --rm -v "$PWD/my-gifs:/import:ro" gifs import -manifest /import/manifest.json
เพื่อ import สติกเกอร์เริ่มต้นใหม่หลังอัปเกรด: docker compose run --rm gifs stickers รูปแบบของ manifest และคำสั่งอื่น ๆ อยู่ใน README ของ gifs-server
อีเมลและปฏิทิน
อีเมลและปฏิทินจะเชื่อมต่อแต่ละคนไปยังกล่องจดหมาย (IMAP และ SMTP) และปฏิทิน (CalDAV) ของพวกเขาเอง ผู้ใช้จะกรอกรหัสผ่านและเซิร์ฟเวอร์ในแอป รหัสผ่านจะถูกเก็บอย่างเข้ารหัส คุณไม่ต้องตั้งค่าเซิร์ฟเวอร์อีเมลหรือปฏิทินให้พวกเขา แต่คุณเป็นผู้กำหนดว่าพวกเขาสามารถเชื่อมต่อได้กับอะไรบ้าง:
| แอป | การตั้งค่า | ค่าเริ่มต้น | สิ่งที่ทำ |
|---|---|---|---|
| อีเมล, ปฏิทิน | อนุญาตเซิร์ฟเวอร์อีเมลบนเครือข่ายส่วนตัว, อนุญาตเซิร์ฟเวอร์ปฏิทินบนเครือข่ายส่วนตัว (AllowPrivateNetworks) | ปิด | เมื่อปิดอยู่ เซิร์ฟเวอร์จะปฏิเสธการเชื่อมต่อไปยัง loopback, private และ link-local addresses เพื่อป้องกันไม่ให้แอปถูกใช้เพื่อเข้าถึงเครือข่ายภายในของคุณ เปิดใช้งานหากเซิร์ฟเวอร์อีเมลหรือปฏิทินของคุณอยู่บน private address |
| อีเมล, ปฏิทิน | อนุญาตการเชื่อมต่อที่ไม่มีการเข้ารหัส (AllowInsecureConnections) | ปิด | เมื่อปิดอยู่ การเชื่อมต่อต้องใช้ TLS (อีเมล: TLS หรือ STARTTLS; ปฏิทิน: HTTPS) |
| อีเมล | ช่วงเวลาตรวจสอบข้อความที่ยังไม่ได้อ่าน (นาที) (UnreadCheckMinutes) | 2 นาที | ความถี่ในการตรวจสอบจำนวนข้อความที่ยังไม่ได้อ่าน เมื่อเซิร์ฟเวอร์อีเมลไม่สามารถ push ได้ |
| อีเมล | ขนาดข้อความสูงสุด (MB) (MaxMessageSizeMB) | 25 MB | ขีดจำกัดขนาดของข้อความที่ส่งและอ่าน |
| ปฏิทิน | ส่งการแจ้งเตือน (EnableReminders) | เปิด | บอทปฏิทินจะส่งข้อความส่วนตัวก่อนกิจกรรม (10 นาทีก่อน สำหรับกิจกรรมที่ไม่มี alarm ของตัวเอง) |
เพื่อให้ผู้ใช้สามารถเข้าสู่ระบบกล่องจดหมาย Gmail หรือ Microsoft 365 ด้วยบัญชีของพวกเขาแทนรหัสผ่าน ให้สร้าง OAuth client และกรอกฟิลด์ Google หรือ Microsoft ในแอปอีเมล:
- Google: Web OAuth client ที่ใช้ Gmail API และ scope
https://mail.google.com/ - Microsoft: แอป Entra ID ที่มี delegated permissions
IMAP.AccessAsUser.All,SMTP.Send,offline_access,openid,emailและprofileโดยค่าเริ่มต้น tenant คือcommon - ในทั้งสองกรณี redirect URI คือ
https://chat.example.com/plugins/com.antimatterchat.mail/oauth/callback(URL ของเว็บไซต์คุณ)
Kanban, โน้ต, ไวท์บอรด์, โพล และเพลย์บุ๊ก
- Kanban (
focalboard) จะเปิดในแผงด้านข้างถัดจากการสนทนา เช่นเดียวกับ Playbooks ลิงก์เก่าไปยังหน้า/kanban/…และ/boards/…จะเปิดบอร์ดหรือการด์เดียวกันในชุมชน การตั้งค่าเพียงอย่างเดียวของมันคือ Enable Publicly-Shared Boards (EnablePublicSharedBoards, ปิด) ซึ่งช่วยให้ผู้แก้ไขบอร์ดสามารถแชร์บอร์ดกับทุกคนที่มีลิงก์ โดยไม่ต้องเข้าสู่ระบบ - Notes และ Polls ไม่มีตัวเลือกการตั้งค่า
- Whiteboard: ผู้ดูแลระบบสามารถอัปโหลดไลบรารีรูปทรง (ไฟล์ Excalidraw
.excalidrawlib, แต่ละไฟล์ไม่เกิน 5 MB) สำหรับทั้งเซิร์ฟเวอร์ในหน้าการตั้งค่า ส่วนผู้ดูแลชุมชนจะจัดการไลบรารีของชุมชนตนเอง - Playbooks จะเปิดในแผงด้านข้าง ลิงก์เก่าไปยังหน้า
/playbooks/…จะเปิดรันหรือเพลย์บุ๊กเดียวกันในชุมชน มีหลายการตั้้งค่า ส่วนใหญ่เป็นคุณลักษณะทดลอง; ค่าเริ่มต้นเหมาะสมกับเซิร์ฟเวอร์ส่วนใหญ่ - Memes: ใครสามารถเพิ่มเทมเพลตมีมได้: ทุกคน (ค่าเริ่มต้น), ผู้ดูแลระบบ หรือ ไม่มีใคร (ปิดเทมเพลตกำกับเอง) ซึ่งหยุดการเพิ่มเทมเพลตใหม่ แต่เทมเพลตที่เพิ่มไว้แล้วยังคงใช้งานได้ตามปกติ แขกไม่สามารถเพิ่มเทมเพลตได้ ผู้ที่เพิ่มเทมเพลตและผู้ดูแลระบบสามารถลบได้
- Todo ไม่มีตัวเลือกการตั้งค่าระดับเซิร์ฟเวอร์
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 จะรวบรวมข้อมูลประสิทธิภาพของเซิร์ฟเวอร์ลงในฐานข้อมูลอนุกรมเวลาขนาดเล็กภายใน Antimatter เพื่อให้คุณดาวน์โหลดข้อมูลเหล่านั้นหรือรวมไว้ในแพ็กเก็ตการสนับสนุนได้โดยไม่ต้องรัน Prometheus เมื่อแอปเริ่มทำงาน จะเปิดใช้งานจุดปลายทางเมตริกของเซิร์ฟเวอร์ (MetricsSettings.Enable) ดู Operations
การติดตั้งแอปอื่นๆ
Antimatter รันแอปของ Mattermost (ปลั๊กอิน) มีสามวิธีในการเพิ่มแอป:
- จาก Remote Marketplace เปิดใช้งาน Remote Marketplace (
PluginSettings.EnableRemoteMarketplace) ปิดอยู่โดยปริยาย และ URL ของ Marketplace (PluginSettings.MarketplaceURL) ว่างเปล่า: Antimatter ไม่ใช้ Marketplace ของ Mattermost และจะเพิกเฉยต่อที่อยู่ดังกล่าวหากการตั้งค่าจาก Mattermost ยังมีอยู่ เพื่อแสดงรายการแอปของเซิร์ฟเวอร์ Marketplace ที่คุณเชื่อถือ ให้เปิดการตั้งค่านี้และกำหนด URL การสร้างแอปของ Marketplace นั้นสำหรับแอปที่ Antimatter จัดส่ง (Calls, Playbooks, Kanban และอื่นๆ) จะถูกซ่อนไว้ จึงไม่สามารถแทนที่ของ Antimatter ได้: อนุญาตให้ Marketplace สร้างปลั๊กอินของ 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 จะไม่ปลอมตัวว่ามีใบอนุญาตสำหรับแอปเหล่านั้น