התקנת Antimatter
התקנת Antimatter באמצעות קובץ compose מוכן, מחבילת .deb או .rpm של גרסה, או מארכיון גרסה. לאחר מכן, יצירת חשבון המנהל הראשון.
התקנה באמצעות Docker Compose
זוהי הדרך המומלצת. קובץ compose אחד מריץ את Antimatter, PostgreSQL, אחסון הקבצים ושירות ה-GIF. נדרש שרת Linux עם Docker Engine ותוסף Compose שלו (docker compose), 2 ליבות CPU ו-4 GB זיכרון לפחות.
1. הורדת קובץ ה-compose
mkdir antimatter && cd antimatter
curl -fsSLO https://antimatter.chat/compose.yaml
2. יצירת קובץ .env
קובץ ה-compose קורא את ההגדרות מקובץ .env באותו תיקייה. יש ליצור אותו עם סיסמאות אקראיות:
cat > .env <<EOF
SITE_URL=http://localhost:8065
POSTGRES_PASSWORD=$(openssl rand -hex 24)
S3_SECRET_KEY=$(openssl rand -hex 24)
GIFS_API_KEY=$(openssl rand -hex 24)
AM_AI_ENCRYPTION_KEY=$(openssl rand -base64 32)
EOF
chmod 600 .env
קבעו את SITE_URL לכתובת שישקלו להקליד במדפסת, למשל http://192.168.1.20:8065 ברשת מקומית או https://chat.example.com עם דומיין. שמרו את קובץ .env: הבסיס הנתונים והאחסון משתמשים בסיסמאות אלו מההפעלה הראשונה, מפתחות ה-API של חיבורי מודלי AI מוצפנים עם AM_AI_ENCRYPTION_KEY, ואתם זקוקים לאותו קובץ כדי לשחזר גיבוי.
3. הרצה
docker compose up -d
docker compose ps
ההרצה הראשונה נמשכת דקה או שתיים: PostgreSQL יוצר את בסיס הנתונים, שירות חד-פעמי בשם bucket יוצר את מיכל האחסון, שירות חד-פעמי בשם gifs-stickers יבוא את חבילת המדבקות הראשונית, ו-Antimatter יוצר את הטבלאות. ניתן לעקוב אחרי התהליך עם docker compose logs -f antimatter.
כדי להשתמש בשם דומיין וב-HTTPS מההתחלה, ראו דומיין ו-HTTPS: עם קובץ ה-compose מדובר בשני שורות נוספות ב-.env ובפרופיל https.
משתני ה-.env
| משתנה | ברירת מחדל | מה היא עושה |
|---|---|---|
SITE_URL | נדרש | הכתובת הציבורית של Antimatter (ServiceSettings.SiteURL). |
POSTGRES_PASSWORD | נדרש | סיסמת משתמש הנתונים של antimatter. |
S3_SECRET_KEY | נדרש | מפתח הסודי של אחסון הקבצים. |
GIFS_API_KEY | נדרש | המפתח ש-Antimatter משתמש בו לקריאה לשירות ה-GIF. |
AM_AI_ENCRYPTION_KEY | ריק | המפתח שמצפין את מפתחות ה-API של חיבורי מודלי AI (openssl rand -base64 32). אם השדה ריק, השרת ייצור קובץ מפתח בנפח data. ראו מפתח ההצפנה. |
GIFS_UPLOAD_KEY | ריק | אפשר לאנשים להוסיף GIFs ומדבקות משלהם מהמבחר, ולמחוק אותם. אם השדה ריק, ההעלאה מנוטרלת. |
DOMAIN | ריק | שם הדומיין שלך, עבור פרופיל https. |
HTTP_PORT | 8065 | פורט המארח של שרת ה-Web של Antimatter. |
CALLS_PORT | 8443 | פורט UDP ו-TCP של קול ווידאו בשיחות. |
EDGE_SUBNET | 172.29.71.0/28 | תת-רשת של הרשת שבין Caddy ל-Antimatter. יש לשנות אם היא חופפת לאחת מהרשתות שלך. |
TZ | UTC | אזור הזמן של המכלים. |
ANTIMATTER_IMAGE | ghcr.io/antimatterchat/antimatter-next:latest | התמונה של Antimatter להרצה (ראו להלן). |
מה מורץ
| שירות | תמונה | תפקיד |
|---|---|---|
antimatter | ghcr.io/antimatterchat/antimatter-next | השרת, אפליקציית ה-Web והאפליקציות המובנות. מפרסם את HTTP_PORT ו-CALLS_PORT. תיקיית הנתונים שלו היא נפח data. |
postgres | postgres:17-alpine | בסיס הנתונים, בנפח postgres. |
files | rustfs/rustfs | אחסון תואם S3 לקבצים שהועלו ולאפליקציות שהותקנו, בנפח files. |
bucket | amazon/aws-cli | יוצר את המיכל antimatter ואז יוצא. |
gifs | ghcr.io/antimatterchat/gifs-server | שירות GIF ומדבקות, בנפח gifs. |
gifs-stickers | ghcr.io/antimatterchat/gifs-server | מייבא את חבילת המדבקות ההתחלתית בפעם הראשונה ואז יוצא. |
https | caddy:2-alpine | רק עם הפרופיל https: HTTPS על פורטים 80 ו-443. |
PostgreSQL, האחסון ושירות GIF נמצאים ברשת פנימית (private) ללא גישה לאינטרנט, אליה מצטרף רק Antimatter. אף אחד מהם לא מפרסם פורט.
מכלית Antimatter אינה שומרת כלום על הדיסק: ההגדרות שלה נמצאות בבסיס הנתונים (AM_CONFIG מצביע אליו) והקבצים והאפליקציות שלה נמצאים בשירות האחסון. ניתן להסיר ולשחזר את המכלית בכל עת. נפח data שלה מכיל רק את קובץ מפתח ההצפנה של AI, שהשרת יוצר כאשר AM_AI_ENCRYPTION_KEY ריק. כל מה שצריך לגיבוי נמצא בנפחי postgres, files, gifs ו-data, בנוסף לקובץ .env שלכם.
בחירת תמונה
פורסמו שתי תמונות Antimatter, שתיהן עבור linux/amd64 ו-linux/arm64, ושתיהן נבנו מהענף main של כל אחסון:
| תמונה | אפליקציות מובנות | תגיות |
|---|---|---|
ghcr.io/antimatterchat/antimatter | סוכנים, שיחות, GitHub, GitLab, Jira, Kanban, מדדים ו-Playbooks. | latest, X.Y.Z לגרסאות, sha-<commit> |
ghcr.io/antimatterchat/antimatter-next | אותו דבר, בתוספת ערוצי קול, סקרים, דוא"ל, לוח שנה, פתקים, לוח לבן, GIF, משימות וממס. נבנה מחדש כל לילה. | latest, nightly, nightly-<YYYYMMDD>, sha-<commit> |
קובץ compose של האתר משתמש ב-antimatter-next, משום ששירות GIF ורוב האפליקציות המתוארות באתר נמצאות רק בתמונה זו. כדי לשנות תמונה, הגדירו ANTIMATTER_IMAGE ב-.env והריצו docker compose up -d.
latest משתנה מתחת לרגליים. בייצור, צמדו תגית כמו nightly-20261015 או sha-<commit>, ושינו אותה בכוונה בעת שדרוג. השרת שודרג את מסד הנתונים שלו בעת ההתחלה, כך שאי אפשר לחזור לתמונה ישנה, או מ-antimatter-next ל-antimatter, בלי לשחזר גיבוי שנלקח לפני כן. ראו גיבויים ושדרוגים.בתוך התמונה
- השרת נמצא ב-
/antimatter, עם הקבציםantimatterו-amctlב-/antimatter/bin(ב-PATH). - הוא רץ כמשתמש לא-מורשה
antimatter(uid 2000) על בסיס distroless מינימלי, ללא shell. - פורטים: 8065 (אתר ו-API), 8067 (מדדים), 8074 (קלאסטר), 8443 UDP ו-TCP (שיחות).
- מצב מקומי (
ServiceSettings.EnableLocalMode) מופעל, ולכןamctl --localפועל בתוך המיכל. בדיקת הבריאות מריצה אתamctl system status --local. - האפליקציות המצורפות נמצאות ב-
/antimatter/prepackaged_plugins, חתומות עם מפתח החתימה של אפליקציות Antimatter. - כלי חילוץ טקסט (
pdftotext,wvText,unrtf,tidy) כלולים, כך שאפשר לחפש בתוכן המסמכים שהועלו.
קבצי compose נוספים
מאגר ה-antimatter-docker כולל הגדרה לייצור ב-deploy/compose/: nginx עם תעודות משלך או Let's Encrypt (certbot), PostgreSQL, שירות ה-GIF האופציונלי (פרופיל gifs) ונפחי שם (named volumes) להגדרות, נתונים ויומנים של השרת, כמתואר ב-README שלו. ברירת המחדל היא להשתמש בתמונה היציבה ולשמור קבצים בנפח מקומי במקום באחסון S3. השתמשו בו אם מעדיפים nginx על פני Caddy, או אם כבר יש לכם תעודות.
יצירת המנהל הראשון
פתחו את SITE_URL בדפדפן וצרו חשבון. החשבון הראשון שנוצר על שרת חדש הופך למנהל המערכת, ואז ההגדרה מלווה אתכם ביצירת הקהילה הראשונה (השם שנתנה Antimatter לצוות או למרחב עבודה).
עשו זאת מיד אחרי ההפעלה הראשונה: עד אז, כל מי שמגיע לשרת ראשון הופך למנהל שלו. כדי ליצור את החשבון משורת הפקודה במקום, לפני שהשרת נגיש מבחוץ:
docker compose exec antimatter amctl --local user create --system-admin --email-verified \
--email admin@example.com --username admin --password 'a-long-password'
docker compose exec antimatter amctl --local team create --name main --display-name "Main"
docker compose exec antimatter amctl --local team users add main admin
לאחר מכן, התחברו ב-SITE_URL. התחילו את הפקודה עם רווח כדי שהסיסמה לא תישאר בהיסטוריית ה-shell (עם HISTCONTROL=ignorespace), או שנו את הסיסמה אחרי ההתחברות.
שלבים הבאים אחרי שהתחברתם:
- לחברה או ארגון, קבעו את סוג קהילות חדשות למקום עבודה, ושינו את סוג הקהילה שנוצרה כבר בהגדרות שלה: מקום עבודה או קהילה.
- החליטו谁能 יצור חשבונות: התחברות וחשבונות.
- הגדירו דוא"ל, כדי שהזמנות ואפסות סיסמאות יעבדו: דוא"ל והתראות דחיפה.
- פתחו את פורט השיחות ב-firewall: שיחות וקול.
- בדקו אילו אפליקציות מופעלות: אפליקציות מצורפות.
הורדת גרסה
ללא Docker, התקנת Antimatter מקבצי גרסה ב-GitHub: github.com/AntimatterChat/antimatter/releases. לכל גרסה יש מספר גרסה כמו 0.9.0, והתג שלה הוא אותו מספר עם v לפניו (v0.9.0).
0.9.0-rc.1, מסומנת ב־Pre-release ב־GitHub. זו גרסת בדיקה, שפורסמה לפני הגרסה הסופית.לכל גרסה יש את הקבצים הבאים, עבור שרתים של amd64 ו־arm64:
| קובץ | מה זה |
|---|---|
antimatter_<version>-1_amd64.deb, antimatter_<version>-1_arm64.deb | החבילה עבור Debian, Ubuntu וההפצות המבוססות עליהן. |
antimatter-<version>-1.x86_64.rpm, antimatter-<version>-1.aarch64.rpm | החבילה עבור Fedora, RHEL וההפצות התואמות ל־RHEL. |
antimatter-<version>-linux-amd64.tar.gz, antimatter-<version>-linux-arm64.tar.gz | ארכיון הגרסה, לכל הפצת Linux, להתקנה ידנית. |
SHA256SUMS | סכום ביקורת SHA-256 של כל קובץ בגרסה. |
החבילות והארכיון מכילים את אותו תוכנה: השרת (antimatter), כלי שורת הפקודה (amctl), שתי אפליקציות הרשת (הממשק ברירת המחדל והממשק הקלאסי), האפליקציות המובנות, תבניות המייל והתרגומים. החבילות מוסיפות שירות systemd וקובץ הגדרות, כך שכל אחת מהן היא התקנה כוללת: יש רק להוסיף בסיס נתונים PostgreSQL. אין הורדות בינארי נפרדות: הבינארי נמצאים בארכיון, ב־antimatter/bin/. הם סטטיים, ולכן רצים על כל הפצת Linux בארכיטקטורה המתאימה.
בשמות החבילות, המקף בגרסת pre-release הופך לטילדה, כך שמנהל החבילות ממיין גרסת pre-release לפני הגרסה הסופית: גרסת 0.9.0-rc.1 נותנת antimatter_0.9.0~rc.1-1_amd64.deb ו־antimatter-0.9.0~rc.1-1.x86_64.rpm. בארכיון נשאר המקף.
antimatter version מדפיס את גרסת הגרסה כ־מספר בנייה, עם הקומיט שנוצר ממנו כ־קידוד בנייה. השורה גרסה היא גרסת שורת Mattermost שAntimatter מבוססת עליה.
בדיקת ההורדה
הורידו את הקובץ הנדרש ואת SHA256SUMS לאותו תיקייה, מדף הגרסה או באמצעות curl, ואז בדקו את הקובץ:
curl -fLO https://github.com/AntimatterChat/antimatter/releases/download/v<version>/antimatter_<version>-1_amd64.deb
curl -fLO https://github.com/AntimatterChat/antimatter/releases/download/v<version>/SHA256SUMS
sha256sum --check --ignore-missing SHA256SUMS
כל קובץ שהורדתם חייב להופיע ברשימה עם OK. כל תוצאה אחרת פירושה שהקובץ פגום או לא שלם: הורידו אותו שוב, ואל תתקינו אותו. SHA256SUMS אינו חתום: הוא מזהה הורדה פגומה, ואינו מוכיח יותר ממה שהורדה HTTPS מ־GitHub מוכיחה.
התקנת חבילת .deb או .rpm
החבילה מתקינה את Antimatter כשירות systemd, שדורש רק בסיס נתונים כדי להתחיל. השתמשו בה על שרת 64־ביט של Debian, Ubuntu, Fedora או RHEL־תואם עם systemd.
מה החבילה מתקינה
| נתיב | מה היא מכילה |
|---|---|
/opt/antimatter | התוכנה: bin/antimatter, bin/amctl, אפליקציות ה־web (client/, client-fusion/), האפליקציות המצורפות (prepackaged_plugins/), התבניות, התרגומים והגופנים. כל עדכון מחליף את כל אלה. |
/etc/antimatter/antimatter.env | הגדרות השירות, כמשתני AM_: בסיס הנתונים, כתובת האתר, שירות ה־GIF. קריא על ידי root בלבד. עדכונים שומרים את הקובץ. |
/etc/antimatter/config/config.json | קובץ ההגדרות, שבו שומר השרת את ההגדרות ששונו בקונסולת מערכת. הוא נוצר מ־/opt/antimatter/defaults/config.json בהתקנה הראשונה, ולא מוחלף מעולם אחרי כן. |
/var/lib/antimatter | קבצים שהועלו (data/) ואפליקציות שהותקנו (plugins/, client-plugins/). |
/var/log/antimatter | קבצי יומן, אם מפעילים את רישום היומן לקובץ. ברירת המחדל היא כיבוי: היומן נכתב ליומן המערכת (journal). |
/usr/lib/systemd/system/antimatter.service | השירות. |
/usr/bin/amctl | קישור ל־/opt/antimatter/bin/amctl. |
התיקיות שבהן כותב השרת תחת /opt/antimatter (config, data, plugins, client/plugins ו־logs) הן קישורים ל־/etc/antimatter, /var/lib/antimatter ו־/var/log/antimatter. לכן עדכון, המחליף את /opt/antimatter, לעולם לא פוגע בנתונים שלך. החבילה יוצרת גם משתמש מערכת בשם antimatter, שרץ את השרת ובעל התיקיות האלה.
החבילה תלויה ב־ca-certificates. היא ממליצה על PostgreSQL (postgresql ב־Debian וב־Ubuntu, postgresql-server ב־Fedora וב־RHEL), media-types (mailcap עבור ה־.rpm) ו־gifs-server, שירות ה־GIF, שיש לו שחרור עצמאי (ראו להלן). apt ו־dnf מתקינים חבילות מומלצות כשמוצאים אותן. החבילה מציעה גם poppler-utils, wv, unrtf ו־tidy (ללא wv עבור ה־.rpm): הם מוציאים את הטקסט של מסמכים שהועלו, כדי שהחיפוש ימצא מילים בתוכם. אם רוצים זאת, יש להתקין אותם בעצמכם.
1. התקנת החבילות
מורידים את חבילת Antimatter ואת חבילת שירות ה־GIF של הארכיטקטורה שלכם, בודקים אותן כמתואר לעיל, ומתקינים את שתיהן בפקודה אחת, כדי שההמלצה על gifs-server תתמלא (היא אינה במאגרי ההפצה):
# Debian, Ubuntu
sudo apt install ./antimatter_<version>-1_amd64.deb ./gifs-server_*_amd64.deb
# Fedora, RHEL
sudo dnf install ./antimatter-<version>-1.x86_64.rpm ./gifs-server-*.x86_64.rpm
יש להשאיר את ./: הוא מורה ל־apt ול־dnf להתקין קובץ מקומי. כדי להתקין ללא שירות ה־GIF, יש להשאיר את החבילה שלו בחוץ. החבילה מאפשרת את שירות antimatter אך אינה מפעילה אותו, ומדפיסה את השלבים הבאים.
2. יצירת בסיס הנתונים
Antimatter דורש PostgreSQL 15 או גרסה חדשה יותר, על שרת זה או על שרת אחר. יש לבדוק את גרסת PostgreSQL של ההפצה עם psql --version. אם היא ישנה יותר, יש להתקין גרסה חדשה יותר מהמאגרים הרשמיים של פרויקט PostgreSQL, או להשתמש בנתונים על שרת אחר. ב־Debian וב־Ubuntu, חבילת postgresql מפעילה את בסיס הנתונים. ב־Fedora וב־RHEL, יש ליצור אותו תחילה ולהפעיל אותו:
sudo postgresql-setup --initdb
sudo systemctl enable --now postgresql
לאחר מכן יש ליצור משתמש ובסיס נתונים עבור Antimatter:
sudo -u postgres psql -c "CREATE USER antimatter WITH PASSWORD 'a-long-password'"
sudo -u postgres psql -c "CREATE DATABASE antimatter OWNER antimatter"
PostgreSQL חייב לקבל חיבורי סיסמה מ־127.0.0.1: שורות host בקובץ pg_hba.conf שלו, עם השיטה scram-sha-256.
3. הגדרת בסיס הנתונים וכתובת האתר
יש לערוך את /etc/antimatter/antimatter.env (sudoedit /etc/antimatter/antimatter.env). יש להסיר את # לפני השורות שבהן נעשה שימוש, ולהגדיר את בסיס הנתונים ואת הכתובת שבה יפתחו המשתמשים:
AM_SQLSETTINGS_DRIVERNAME=postgres
AM_SQLSETTINGS_DATASOURCE=postgres://antimatter:a-long-password@localhost:5432/antimatter?sslmode=disable&connect_timeout=10
AM_SERVICESETTINGS_SITEURL=https://chat.example.com
כל הגדרה של התצורה יכולה להימצא בקובץ זה, כ־AM_<SECTION>_<SETTING>: לדוגמה, SqlSettings.DataSource הוא AM_SQLSETTINGS_DATASOURCE. הגדרה שנקבעת כאן אינה ניתנת לשינוי בקונסולת המערכת. ראו תצורה. יש להפעיל מחדש את השרת לאחר כל שינוי: sudo systemctl restart antimatter.
השירות מגדיר גם כמה ברירות מחדל, ששורה ב־antimatter.env יכולה להחליף: כתיבה לקבצים כבוי (AM_LOGSETTINGS_ENABLEFILE=false, AM_NOTIFICATIONLOGSETTINGS_ENABLEFILE=false), ומצב מקומי דלוק (AM_SERVICESETTINGS_ENABLELOCALMODE=true), כך ש־amctl --local עובד על השרת.
4. הפעלה
sudo systemctl start antimatter
journalctl -u antimatter -f
sudo -u antimatter amctl --local system status
בהפעלה הראשונה, השרת יוצר את הטבלאות שלו ואז מקשיב על פורט 8065. פתחו את http://<server>:8065, או את הדומיין שלכם אחרי שהוגדר reverse proxy (ראו דומיין ו־HTTPS), וצרו מיד את החשבון הראשון: הוא יהפוך למנהל המערכת. כדי ליצור אותו משורת הפקודה, השתמשו בפקודות amctl מתחת ליצירת המנהל הראשון, עם sudo -u antimatter amctl --local במקום docker compose exec antimatter amctl --local.
5. הפעלת GIF
אפליקציית GIF מכלולה ומופעלת, ו־antimatter.env כבר מצביע אליה על שירות GIF על אותו שרת (AM_GIFS_SERVICE_URL=http://127.0.0.1:8080/v2). עדיין נדרש מפתח API של השירות. חבילת gifs-server יצרה מפתח כזה בזמן ההתקנה:
sudo systemctl start gifs-server-stickers # imports the sticker pack, about a minute and a half
sudo systemctl start gifs-server
sudo grep -v '^#' /etc/gifs-server/api-keys
הזינו את המפתח ב־antimatter.env כ־AM_GIFS_API_KEY=<key> והפעילו מחדש את Antimatter, או הזינו אותו כמפתח API בקונסולת מערכת › תוספים › GIF. אם שירות GIF רץ על שרת אחר, הגדירו את AM_GIFS_SERVICE_URL לכתובת שלו. כדי לאפשר למשתמשים להוסיף GIF וסטickers משלהם, ראו GIF.
השירות
- הוא רץ כמשתמש
antimatter, ב־/opt/antimatter, וקורא את/etc/antimatter/antimatter.env. systemd מפעיל מחדש את השרת בכל פעם שהוא נסגר, ומעניק לו עד שעה להתחיל, משום שהמigrations של גרסה חדשה יכולים לקחת זמן. - היומנים שלו נמצאים ב־journal:
journalctl -u antimatter. - הוא מחוזק:
/usrו־/etcהם לקריאה בלבד עבור השרת, למעט/etc/antimatter/config, והוא אינו יכול לראות את/home,/rootאו/run/user. אם אתם מעבירים את אחסון הקבצים (FileSettings.Directory), בחרו תיקיה מחוץ לאלה, השייכת ל־antimatter. - שדרוגים מחליפים את קובץ השירות. כדי לשנות אותו, השתמשו ב־
sudo systemctl edit antimatter, ששומר את השינויים שלכם בקובץ נפרד.
שדרוג חבילה
- בצעו גיבוי (ראו גיבויים ושדרוגים).
- הורידו את החבילה החדשה ואת
SHA256SUMS, ובדקו אותם. - עצרו את השרת, התקינו את החבילה החדשה מעל הישנה, והפעילו אותו שוב:
sudo systemctl stop antimatter sudo apt install ./antimatter_<new version>-1_amd64.deb # or: sudo dnf install ./antimatter-<new version>-1.x86_64.rpm sudo systemctl start antimatter journalctl -u antimatter -f
החבילה אינה מאתחלת את השרת בעצמה. לאחר עדכון, היא מציגה את ההודעה Antimatter was upgraded; restart it to run the new version: sudo systemctl restart antimatter: אם לא עצרת את השרת מראש, אתחל אותו מיד. העדכון מחליף את /opt/antimatter ואת קובץ השירות, ושומר את antimatter.env, config.json, /var/lib/antimatter ואת יומני האירועים. בעת ההתחלה, השרת מעדכן את בסיס הנתונים ומתקין את הגרסאות החדשות יותר של האפליקציות המצורפות.
אם גרסה חדשה משנה את קובץ antimatter.env ברירת המחדל, apt שואל אם לשמור את הגרסה שלך: שומר אותה. dnf שומר את הגרסה שלך ושומר את הגרסה החדשה כ/etc/antimatter/antimatter.env.rpmnew. עדכונים מתבצעים רק קדימה: אל תתקין גרסה ישנה מעל גרסה חדשה.
הסרת חבילה
sudo apt remove antimatter או sudo dnf remove antimatter מעצרים ומשתיקים את השירות, ומסירים את התוכנה. ההוראה שומרת את הנתונים (/var/lib/antimatter), את ההגדרות (/etc/antimatter), את בסיס הנתונים ואת המשתמש antimatter: יש למחוק אותם ידנית כדי להסיר את Antimatter לחלוטין.
אפליקציות בחבילות ובארכיון
החבילות והארכיון כוללים את שחרור החתימה האחרון של אפליקציות אלה, בprepackaged_plugins/: Agents, Calls, GIFs, Memes, Notes, Polls, Todo, Voice Channels ו-Whiteboard. אפליקציה שעדיין לא שוחררה בעת בניית שחרור השרת אינה כלולה: ls /opt/antimatter/prepackaged_plugins מציג מה כלול בשחרור שלך. Memes ו-Todo כלולים אך לא מופעלים: אפליקציות מצורפות מסביר כיצד להתקין ולהפעיל אותם.
האפליקציות האחרות של תמונות ה-Docker אינן כלולות בחבילות או בארכיון: Kanban, Playbooks, Mail, Calendar, GitHub, GitLab, Jira ו-Metrics. יש להתקין כל אחת מהן מהשחרורים שלה:
| אפליקציה | שחרורים | מזהה אפליקציה |
|---|---|---|
| Kanban | antimatter-plugin-boards | focalboard |
| Playbooks | antimatter-plugin-playbooks | playbooks |
| דוא"ל | antimatter-plugin-mail | com.antimatterchat.mail |
| לוח שנה | antimatter-plugin-calendar | com.antimatterchat.calendar |
| GitHub | antimatter-plugin-github | github |
| GitLab | antimatter-plugin-gitlab | com.github.manland.mattermost-plugin-gitlab |
| Jira | antimatter-plugin-jira | jira |
| מדידות | Antimatter-plugin-metrics | com.mattermost.mattermost-plugin-metrics |
כל שחרור אפליקציה כולל את חבילת האפליקציה (קובץ .tar.gz), את החתימה עליה (אותו שם עם .sig שנוסף) וקובץ SHA256SUMS. כדי להתקין אפליקציה, יש לאפשר העלאות ואז להוסיף את החבילה באמצעות amctl:
# 1. In /etc/antimatter/antimatter.env, add this line, then restart Antimatter
AM_PLUGINSETTINGS_ENABLEUPLOADS=true
sudo systemctl restart antimatter
# 2. Download the bundle where the antimatter user can read it, and install it
cd /tmp
curl -fLO https://github.com/AntimatterChat/antimatter-plugin-boards/releases/download/v<version>/<bundle>.tar.gz
sudo -u antimatter amctl --local plugin add <bundle>.tar.gz
sudo -u antimatter amctl --local plugin enable focalboard
כדי לשדרג אפליקציה שהותקנה כך, יש להוסיף את החבילה החדשה באמצעות plugin add --force: שדרוגי חבילות משדרגים רק את האפליקציות המצורפות. ניתן להסיר שוב את השורה AM_PLUGINSETTINGS_ENABLEUPLOADS לאחר מכן. ראו התקנת אפליקציות אחרות עבור דרכים אחרות להתקנת אפליקציות.
חתימות אפליקציות
חבילות האפליקציות חתומות עם מפתח החתימה של אפליקציות Antimatter: כל קובץ .tar.gz.sig הוא חתימת GPG מנותקת של החבילה המתאימה. השרת בודק את החתימות האלה לפני שהוא מתקין אפליקציה מצורפת. כדי לבדוק חבילה בעצמכם:
curl -fsSLO https://raw.githubusercontent.com/AntimatterChat/antimatter-docker/main/keys/antimatter-plugin-signing.asc
gpg --import antimatter-plugin-signing.asc
gpg --verify <bundle>.tar.gz.sig <bundle>.tar.gz
gpg צריך לדווח על חתימה תקינה מAntimatter Plugin Signing, עם האצבע 06C8 1032 4677 0F08 BBA7 78B9 E69B 05C3 92A6 9A45. הוא גם מזהיר שהמפתח אינו מאושר בחתימה אמינה: זה נורמלי עבור מפתח שלא חתמתם עליו בעצמכם. שחרור אפליקציה ללא קבצי .sig אינו חתום, וההערות השחרור שלו מציינות זאת.
התקנה מקובץ שחרור
הארכיון, antimatter-<version>-linux-<arch>.tar.gz (למשל antimatter-0.9.0-linux-amd64.tar.gz), מתאים להפצה ללא חבילות .deb או .rpm, או לפריסה שלכם. הוא מכיל תיקייה אחת, antimatter/, עם bin/antimatter, bin/amctl, config/config.json, אפליקציות ה-Web (client/ וclient-fusion/), האפליקציות המצורפות (prepackaged_plugins/, ראו למעלה), תבניות המייל והתרגומים.
1. הכנת PostgreSQL
Antimatter תומך רק ב-PostgreSQL, גרסה 15 או חדש יותר (גרסאות ישנות יותר יתחילו, אך יופיע שגיאה ביומן). צרו משתמש ומסד נתונים:
sudo -u postgres psql <<'EOF'
CREATE USER antimatter WITH PASSWORD 'a-long-password';
CREATE DATABASE antimatter OWNER antimatter;
EOF
2. חילוץ והגדרה
sudo tar -xzf antimatter-<version>-linux-amd64.tar.gz -C /opt
sudo useradd --system --user-group antimatter
sudo mkdir -p /opt/antimatter/data
sudo chown -R antimatter:antimatter /opt/antimatter
כוונו את השרת אל מסד הנתונים, הן ב-/opt/antimatter/config/config.json (SqlSettings.DataSource) והן באמצעות משתני סביבה, והגדירו את כתובת האתר:
AM_SQLSETTINGS_DRIVERNAME=postgres
AM_SQLSETTINGS_DATASOURCE=postgres://antimatter:a-long-password@localhost:5432/antimatter?sslmode=disable&connect_timeout=10
AM_SERVICESETTINGS_SITEURL=https://chat.example.com
קובע ה-config.json בארכיון הוא הגדרת ברירת מחדל מלאה: הגדרות ששונות בקונסולת מערכת נשמרות שוב אליו. כדי לשמור את ההגדרות במסד הנתונים במקום, ראו הגדרות.
3. הרצה כשירות
יחידת systemd, ב-/etc/systemd/system/antimatter.service:
[Unit]
Description=Antimatter
After=network.target postgresql.service
[Service]
Type=notify
User=antimatter
Group=antimatter
WorkingDirectory=/opt/antimatter
ExecStart=/opt/antimatter/bin/antimatter
EnvironmentFile=-/etc/antimatter.env
TimeoutStartSec=3600
Restart=always
RestartSec=10
LimitNOFILE=49152
[Install]
WantedBy=multi-user.target
הניחו את משתני AM_ שלכם ב-/etc/antimatter.env (קריא על ידי root בלבד), ואז:
sudo systemctl daemon-reload
sudo systemctl enable --now antimatter
journalctl -u antimatter -f
השרת מאזין על פורט 8065. פתחו http://<server>:8065, או את הדומיין שלכם לאחר שפרוקסי הפוך מוכן (ראו דומיין ו-HTTPS), וצרו את החשבון הראשון: הוא יהפוך למנהל המערכת.
bin/amctl מנהל את השרת הפעיל משורת הפקודה. על השרת עצמו, הוא פועל ללא התחברות דרך מצב מקומי: הגדירו AM_SERVICESETTINGS_ENABLELOCALMODE=true, ואז הרצו sudo -u antimatter /opt/antimatter/bin/amctl --local system status.
ל-GIFs, יש להתקין את שירות ה-GIF (ראו להלן) ולהגדיר את AM_GIFS_SERVICE_URL וAM_GIFS_API_KEY כפי שמוגדר בשלב 5 של החבילות.
חבילות שירות ה-GIF והפרוקסי להודעות דחופות
לשירות GIF ולפרוקסי ההתראות יש שחרורים משלהם, עם אותם כללים כמו של השרת: ארכיון .tar.gz, חבילת .deb וחבילת .rpm עבור amd64 ו-arm64, וקובץ SHA256SUMS. גרסאות עם מקף הן גרסאות מוקדמות. יש לבדוק את ההורדות עם sha256sum --check --ignore-missing SHA256SUMS, כפי שנעשה עבור השרת.
שירות GIF (gifs-server)
שחרורים: github.com/AntimatterChat/gifs-server/releases. הארכיון הוא gifs-server-<version>-linux-<arch>.tar.gz; החבילות נקראות gifs-server.
sudo apt install ./gifs-server_*_amd64.deb # Debian, Ubuntu
sudo dnf install ./gifs-server-*.x86_64.rpm # Fedora, RHEL
החבילה מתקינה:
/usr/bin/gifs-server, ושירותgifs-server, שרץ כמשתמשgifs-serverומחזיק את הקטלוג שלו ב-/var/lib/gifs-server;- שירות
gifs-server-stickers, שמייבא או מעדכן את חבילת הסטיקרים ב-/usr/share/gifs-server/stickersבעת ההפעלה ואז נעצר; - ההגדרות שלו,
/etc/gifs-server/gifs-server.env(משתניAM_GIFS_, שמורים בעת עדכונים), ו-/etc/gifs-server/api-keys, מפתח API אחד בכל שורה, עם מפתח אקראי שנוצר בהתקנה הראשונה.
השירות מאזין על 127.0.0.1:8080, כך שרק Antimatter על אותו שרת יכול להגיע אליו. אם Antimatter רץ במקום אחר, יש להגדיר AM_GIFS_LISTEN=:8080 ב-gifs-server.env ולהגביל גישה לפורט באמצעות החומת האש. הקובץ מפרט את ההגדרות האחרות: AM_GIFS_UPLOAD_KEYS (המפתחות המורשים להוספת GIFs וסטיקרים, ולמחיקת אלה שהוספו באמצעותם), AM_GIFS_PUBLIC_URL, AM_GIFS_TRUST_PROXY ו-AM_GIFS_LOG_LEVEL. החבילה ממליצה על ffmpeg, gifsicle, librsvg2-bin (librsvg2-tools עבור .rpm) ופונט DejaVu: השירות משתמש בהם ליצירת פורמטי GIF, וידאו וסטיקרים בעת ייבוא או קבלת קבצים, ורץ גם בלעדיהם.
כמו השרת, השירות מופעל אך לא מושק בהתקנה. יש להפעיל אותו כמתואר בשלב 5 של החבילות. לאחר עדכון, יש להפעיל אותו מחדש: sudo systemctl restart gifs-server. הסרת החבילה משאירה את הקטלוג ב-/var/lib/gifs-server.
פרוקסי ההתראות
גילויים: github.com/AntimatterChat/push-proxy/releases. הארכיון הוא antimatter-push-proxy-<version>-linux-<arch>.tar.gz; החבילות נקראות antimatter-push-proxy. החבילה מתקינה את /usr/bin/antimatter-push-proxy ואת שירות antimatter-push-proxy, שרץ כמשתמש antimatter-push-proxy וקורא את /etc/antimatter-push-proxy/antimatter-push-proxy.json (נשמר עדכונים). האסימונים של Apple ו-Firebase נשמרים ב-/etc/antimatter-push-proxy/certs: התראות Push מסביר מאיפה הם מגיעים.
sudo apt install ./antimatter-push-proxy_*_amd64.deb # or: sudo dnf install ./antimatter-push-proxy-*.x86_64.rpm
sudo install -o root -g antimatter-push-proxy -m 0640 \
AuthKey_ABCDE12345.p8 firebase-service-account.json /etc/antimatter-push-proxy/certs/
sudoedit /etc/antimatter-push-proxy/antimatter-push-proxy.json
sudo systemctl start antimatter-push-proxy
journalctl -u antimatter-push-proxy -f
בקובץ ההגדרות, הנתיבים הם יחסיים ל-/etc/antimatter-push-proxy: לדוגמה "AppleAuthKeyFile": "./certs/AuthKey_ABCDE12345.p8" ו-"ServiceFileLocation": "./certs/firebase-service-account.json". לאחר מכן, הגדירו את שרת התראות Push ב-Antimatter ל-http://<proxy host>:8066. לאחר עדכון, הפעילו אותו מחדש: sudo systemctl restart antimatter-push-proxy.
פקודות שרת נוספות
מעבר להרצת השרת (antimatter, או antimatter server), לקובץ הבינארי יש מספר פקודות תחזוקה. הן קוראות את אותה הגדרה כמו השרת.
| פקודה | מה היא עושה |
|---|---|
antimatter version | מציג את הגרסה, מספר הבנייה, תאריך הבנייה וה-hash של הבנייה. |
antimatter db ping | בדוק שהמסד הנתונים נגיש. |
antimatter db init | יוצר את ההגדרות במסד הנתונים (עם AM_CONFIG מוגדר לכתובת postgres://). |
antimatter db migrate | מחיל את המהגרות (migrations) של מסד הנתונים ללא הרצת השרת. |
antimatter db version | מציג את המהגרת האחרונה שנוספה למסד הנתונים. |
antimatter import bulk, antimatter export bulk | יבוא או ייצוא נתונים בפורמט המוני (ראו גיוס גיבויים ושדרוגים). |