התאמה
איפה Antimatter שומר את ההגדרות שלו, שלושת הדרכים לשנות אותן (קונסולת המערכת, משתני סביבה, amctl), ואיפה נמצאים הקבצים.
איפה נמצאות ההגדרות
לכל הגדרת שרת יש שם המורכב מקטע ומפתח, למשל ServiceSettings.SiteURL או EmailSettings.SMTPServer. יחד הם יוצרים התאמה אחת, שמאוחסנת באחד משני מקומות:
- במסד הנתונים. קובץ ה־compose של האתר מגדיר את
AM_CONFIGכתקן חיבור ל־PostgreSQL, כך שההתאמה היא שורה במסד הנתונים והמכל לא שומר כלום על המדיה. כמה שרתים ששותפים מסד נתונים אחד שותפים גם את ההתאמה שלהם. - בקובץ. ללא
AM_CONFIG, השרת קורא אתconfig/config.jsonהסמוך לספרייתbin/שלו (/antimatter/config/config.jsonבתמונת Docker). ארכיון ההפצה והקבצי compose לייצור של antimatter-docker עובדים כך, וכך גם חבילות ה־.deb וה־.rpm, שבהן הקובץ נמצא ב־/etc/antimatter/config/config.json. יש להשאיר את הקובץ קריא רק על ידי משתמש השרת: הוא מכיל סיסמאות ומפתחות.
AM_CONFIG (או הדגל --config של פקודת antimatter) מקבל נתיב לקובץ או כתובת postgres://. הגדרות שאתם משאירים בחוץ מקבלות את הערך המוגדר כברירת מחדל.
כדי להעביר התאמה קיימת מקובץ למסד הנתונים, הרצו את הפקודה הבאה על השרת, ואז הפעילו את השרת עם AM_CONFIG מוגדר לאותה כתובת:
amctl --local config migrate /opt/antimatter/config/config.json \
"postgres://antimatter:PASSWORD@localhost:5432/antimatter?sslmode=disable&connect_timeout=10"
משתני סביבה
כל הגדרה יכולה גם להינתן כמשתנה סביבה. משתנים גולשים על ההתאמה האגורה, מה שהופך אותם מתאימים במיוחד למה ששייך לפרסום: מסד הנתונים, כתובת האתר, אחסון הקבצים, הפורטים.
כלל שם
כתבו AM_, ואז את הקטע, ואז את המפתח, באותיות גדולות ומפוצלים ב־underscores. המילים בתוך שם קטע או מפתח אינן מפוצלות:
| הגדרה | משתנה |
|---|---|
ServiceSettings.SiteURL | AM_SERVICESETTINGS_SITEURL |
SqlSettings.DataSource | AM_SQLSETTINGS_DATASOURCE |
EmailSettings.SMTPServer | AM_EMAILSETTINGS_SMTPSERVER |
PrivacySettings.EnableUserBlocking | AM_PRIVACYSETTINGS_ENABLEUSERBLOCKING |
- הגדרות של אמת ושקר מקבלות
trueאוfalse; מספרים הם מספרים רגילים. - הגדרות רשימה מקבלות את הערכים שלהן מפוצלים במרווחים, למשל
AM_SERVICESETTINGS_TRUSTEDPROXYIPHEADER="X-Forwarded-For X-Real-IP". - הגדרות שהן אובייקטים מקבלות JSON. המשתנה היחיד כזה לאפליקציות הוא
AM_PLUGINSETTINGS_PLUGINS, והוא מחליף את ההגדרות של כל האפליקציות בבת אחת: הגדירו את הגדרות האפליקציה בקונסולת המערכת או עםamctlבמקום (ראו להלן). - התקנות Mattermost הישנות משתמשות בקידומת
MM_, לדוגמהMM_SQLSETTINGS_DATASOURCE. זה עדיין עובד ככינוי מורש. כאשר שני המשתנים מוגדרים, משתנהAM_זוכה.
הגדרה שניתנה באמצעות משתנה נעולה בקונסולת המערכת, עם ההערה "הגדרה זו הוגדרה באמצעות משתן סביבה. אינה ניתנת לשינוי דרך קונסולת המערכת." היא אינה נכתבת להגדרה השמורה: הסירו את המשתנה והערך השמור יחול שוב.
עם Docker Compose
הוסיפו משתנים תחת environment: של השירות antimatter, או בקובץ compose.override.yaml ליד compose.yaml (Compose קורא אותו אוטומטית, והוא שורד עדכונים של הקובץ שהורד):
services:
antimatter:
environment:
AM_EMAILSETTINGS_SMTPSERVER: smtp.example.com
AM_EMAILSETTINGS_SMTPPORT: "587"
AM_LOGSETTINGS_CONSOLELEVEL: INFO
החילו שינויים עם docker compose up -d, שיוצר מחדש את המיכל.
משתנים שנקראים על ידי האפליקציות
כמה משתנים אינם הגדרות ואין להם שדה בקונסולת מערכת: AM_CONFIG (מיקום ההגדרות), וAM_AI_ENCRYPTION_KEY וAM_AI_ENCRYPTION_PREVIOUS_KEYS, המפתח שמצפין את מפתחות ה-API של חיבורי הדגמים (ראו AI).
כמה אפליקציות קוראות משתנים משלהן, המוגדרים בשירות antimatter: אפליקציית השיחות קוראת AM_CALLS_* (ראו שיחות וקול), ואפליקציית ה-GIFs קוראת AM_GIFS_SERVICE_URL, AM_GIFS_API_KEY ו-AM_GIFS_UPLOAD_KEY (ראו אפליקציות מובנות).
קונסולת המערכת
קונסולת מערכת היא אזור הניהול של אפליקציית ה-Web, המיועד למנהלי מערכת. כדי לפתוח אותה, יש ללחוץ על התמונה שלך בראש סרגל הצד של האפליקציה ולבחור קונסולת מערכת, או לעבור לhttps://chat.example.com/admin_console. בסרגל הצד שלה יש תיבת חיפוש הגדרות שמחפשת בכל הדפים.

הסקציות שלה הן:
- דיווחים: סטטיסטיקות ויומני השרת.
- ניהול משתמשים: משתמשים, קבוצות, קהילות (מפורטות כצוותים), ערוצים, הרשאות וניהול מופקד.
- מאפייני מערכת: מאפייני פרופיל מותאמים אישית וגישה מבוססת מאפיינים.
- סביבה: שרת Web, בסיס נתונים, אחסון קבצים, פרוקסי תמונות, SMTP, התראות דחיפה, הגבלת קצב, יומנים, אורכי סשנים, ניטור ביצועים.
- הגדרות האתר: מיתוג, משתמשים וצוותים, התראות, פוסטים, שיתוף קבצים וההתנהגויות הרחבות-שרת האחרות.
- אימות: הרשמה, התחברות במייל ובסיסמה, MFA, AD/LDAP, SAML 2.0, OAuth 2.0, OpenID Connect וגישת אורחים.
- AI: חיבורי דגמים והתכונות המובנות של AI (כתיבה מחדש, סיכומים, תרגום אוטומטי, טקסט לקול). ראו AI.
- תוספים: ניהול אפליקציות והגדרות של כל אפליקציה מותקנת.
- אינטגרציות: Webhooks, פקודות לוכסן, חשבונות בוטים, GIFs, טקסט לקול, CORS.
- עמידה בתקנים: שמירת נתונים, ייצוא עמידה בתקנים ומעקב, יומן ביקורת, תנאי שימוש מותאמים אישית.
- ניסויי: תכונות שעשויות להשתנות.
במדריך זה, הגדרה מוצגת כנתיבה שלה בקונסולת המערכת, ואז התווית שלה, ואז מפתח ההגדרה, לדוגמה קונסולת מערכת › הגדרות האתר › משתמשים וצוותים › הפעלת התעלמות, חסימה ובקשות הודעה (PrivacySettings.EnableUserBlocking).
רוב השינויים נכנסים לתוקף מיד עם לחיצה על שמירה. כמה מהם (כתובת האזנה, מספר הגדרות בסיס נתונים ומטמון) דורשים הפעלה מחדש, והעמוד מצין זאת.
מקום עבודה או קהילה
לכל קהילה יש סוג, שקובע חלק מההגדרות המוקדמות שלה:
- קהילה, לקהילה ציבורית או להובי: שיחות כבויות בערוצים שלה (האנשים מדברים בערוצי קול), ורק המנהלים שלה, וכן התפקידים שמנהלים ערוצים, מעבירים ערוצים לארכיון.
- מקום עבודה, לחברה או לארגון: שיחות דלוקות בערוצים שלו, וגם מנהלי הערוץ (מי שפתח אותו, ואלה שהעניק להם סמכויות מנהל) מעבירים אותו לארכיון.
קונסולת מערכת › הגדרות האתר › משתמשים וצוותים › סוג הקהילות החדשות (TeamSettings.DefaultCommunityKind, AM_TEAMSETTINGS_DEFAULTCOMMUNITYKIND) הוא סוג הקהילות שיוצרו מנקודה זו ואילך: community (הברירת המחדל) או workplace. תבנית פריסה שנבחרת בעת יצירת קהילה קובעת את סוגה. מנהלי כל קהילה יכולים לשנות את סוגה מאוחר יותר, בהגדרות צוות › ערוצים › סוג הקהילה.
כלי שורת הפקודה amctl
amctl מנהל שרת משורת הפקודה: משתמשים, קהילות, ערוצים, אפליקציות, הגדרות, משימות ועוד. הוא מתקשר עם השרת באחת משתי דרכים.
מצב מקומי, על השרת
מצב מקומי מאפשר לamctl לתקשר עם השרת דרך שקע Unix, ללא התחברות. המצב מופעל בתמונת Docker ובחבילות .deb ו-.rpm. בשרת שהותקן מארכיון, יש להפעיל אותו באמצעות ServiceSettings.EnableLocalMode (AM_SERVICESETTINGS_ENABLELOCALMODE=true). השקע הוא /var/tmp/antimatter_local.socket כברירת מחדל (ServiceSettings.LocalModeSocketLocation).
# with Docker Compose
docker compose exec antimatter amctl --local system status
# with a release archive
sudo -u antimatter /opt/antimatter/bin/amctl --local system status
# with the .deb or .rpm package
sudo -u antimatter amctl --local system status
docker compose exec על המארח, זוכה לזכויות מנהל מערכת מלאות.מרחוק, עם חשבון
מכל מכשיר, התחברו עם חשבון מנהל מערכת (או עם אישור גישה אישי), ואז הריצו פקודות מול השרת הזה:
amctl auth login https://chat.example.com --name prod --username admin
amctl system status
פקודות הגדרה
| פקודה | מה היא עושה |
|---|---|
amctl config get ServiceSettings.SiteURL | מציגה הגדרה אחת. |
amctl config set TeamSettings.EnableOpenServer false | משנה הגדרה אחת. הגדרות רשימה מקבלות כמה ערכים. |
amctl config patch settings.json | ממזג קובץ JSON של הגדרות לתוך ההגדרה. |
amctl config show | מציג את כל ההגדרה כ-JSON. |
amctl config edit | פותח את ההגדרה בעורך שלך ($EDITOR). |
amctl config reset | מאתר הגדרות לערכי ברירת המחדל שלהן. |
amctl config reload | טוען מחדש את ההגדרה ממקום שמירתה, לאחר שינוי שבוצע מחוץ לשרת. |
הגדרות אפליקציות נמצאות תחת PluginSettings.Plugins.<app id>, עם מפתחות באותיות קטנות. לדוגמה, להגדרת כתובת השירות והמפתח של אפליקציית GIFs ממארח Docker:
docker compose exec -T antimatter amctl --local config patch /dev/stdin <<'EOF'
{"PluginSettings": {"Plugins": {"com.antimatterchat.gifs": {
"serviceurl": "http://gifs:8080/v2",
"apikey": "the GIFS_API_KEY of your .env"
}}}}
EOF
פקודות שימושיות נוספות: amctl user create, amctl user deactivate, amctl team create, amctl plugin list, amctl plugin enable, amctl system supportpacket ו-amctl logs. הריצו amctl help <command> עבור אפשרויות של כל אחת מהן.
יומנים
השרת כותב את היומן שלו בשני מקומות, כל אחד עם רמת יומן משלו (DEBUG, INFO, WARN או ERROR), המוגדרת בקונסולת מערכת › סביבה › לוגים:
| יעד | הגדרות | ברירת מחדל |
|---|---|---|
| הקונסולה (פלט סטנדרטי) | הפגת יומנים לקונסול (LogSettings.EnableConsole), רמת יומן קונסולה (LogSettings.ConsoleLevel), הפגת יומני קונסול כ-JSON (LogSettings.ConsoleJson) | דלוק, DEBUG, JSON |
קובץ, antimatter.log | פלט יומנים לקובץ (LogSettings.EnableFile), רמת יומן קבצים (LogSettings.FileLevel), ספריית יומן קבצים (LogSettings.FileLocation) | דלוק, INFO, תיקיית logs/ לצד bin/ |
קבצי יומן ממוחזרים ב־100 MB והקבצים הישנים נדחוסים.
קובץ ה־compose של האתר מכבה את יומן הקובץ (AM_LOGSETTINGS_ENABLEFILE=false), כך שהיומן נמצא רק בפלט המכל (container):
docker compose logs -f antimatter
docker compose logs --since 1h antimatter | grep -i error
רמת הקונסול נמצאת כברירת מחדל על DEBUG, שהיא מפורטת מאוד. בשרת עמוס, יש להגדיר AM_LOGSETTINGS_CONSOLELEVEL=INFO. קובץ config.json של ארכיון השחרור ושל החבילות כבר מוגדר לINFO. עם ארכיון שחרור תחת systemd, פלט הקונסול נשלח ליומן (journalctl -u antimatter) והקובץ ל/opt/antimatter/logs/antimatter.log. החבילות מכבות את רישום הקבצים, כך שהיומן הוא המקור היחיד ליומנים.
כשהפלט ליומן קבצים מופעל, מנהלי מערכת יכולים גם לקרוא את שורות היומן האחרונות בקונסולת מערכת › דיווחים › לוגי שרת, או באמצעות amctl logs.