התקנת 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_PORT8065פורט המארח של שרת ה-Web של Antimatter.
CALLS_PORT8443פורט UDP ו-TCP של קול ווידאו בשיחות.
EDGE_SUBNET172.29.71.0/28תת-רשת של הרשת שבין Caddy ל-Antimatter. יש לשנות אם היא חופפת לאחת מהרשתות שלך.
TZUTCאזור הזמן של המכלים.
ANTIMATTER_IMAGEghcr.io/antimatterchat/antimatter-next:latestהתמונה של Antimatter להרצה (ראו להלן).

מה מורץ

שירותתמונהתפקיד
antimatterghcr.io/antimatterchat/antimatter-nextהשרת, אפליקציית ה-Web והאפליקציות המובנות. מפרסם את HTTP_PORT ו-CALLS_PORT. תיקיית הנתונים שלו היא נפח data.
postgrespostgres:17-alpineבסיס הנתונים, בנפח postgres.
filesrustfs/rustfsאחסון תואם S3 לקבצים שהועלו ולאפליקציות שהותקנו, בנפח files.
bucketamazon/aws-cliיוצר את המיכל antimatter ואז יוצא.
gifsghcr.io/antimatterchat/gifs-serverשירות GIF ומדבקות, בנפח gifs.
gifs-stickersghcr.io/antimatterchat/gifs-serverמייבא את חבילת המדבקות ההתחלתית בפעם הראשונה ואז יוצא.
httpscaddy: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), או שנו את הסיסמה אחרי ההתחברות.

שלבים הבאים אחרי שהתחברתם:

  1. לחברה או ארגון, קבעו את סוג קהילות חדשות למקום עבודה, ושינו את סוג הקהילה שנוצרה כבר בהגדרות שלה: מקום עבודה או קהילה.
  2. החליטו谁能 יצור חשבונות: התחברות וחשבונות.
  3. הגדירו דוא"ל, כדי שהזמנות ואפסות סיסמאות יעבדו: דוא"ל והתראות דחיפה.
  4. פתחו את פורט השיחות ב-firewall: שיחות וקול.
  5. בדקו אילו אפליקציות מופעלות: אפליקציות מצורפות.

הורדת גרסה

ללא Docker, התקנת Antimatter מקבצי גרסה ב-GitHub: github.com/AntimatterChat/antimatter/releases. לכל גרסה יש מספר גרסה כמו 0.9.0, והתג שלה הוא אותו מספר עם v לפניו (v0.9.0).

Antimatter נמצאת בשלב בטא: הגרסאות שלה הן בסדרת 0.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, ששומר את השינויים שלכם בקובץ נפרד.

שדרוג חבילה

  1. בצעו גיבוי (ראו גיבויים ושדרוגים).
  2. הורידו את החבילה החדשה ואת SHA256SUMS, ובדקו אותם.
  3. עצרו את השרת, התקינו את החבילה החדשה מעל הישנה, והפעילו אותו שוב:
    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. יש להתקין כל אחת מהן מהשחרורים שלה:

אפליקציהשחרוריםמזהה אפליקציה
Kanbanantimatter-plugin-boardsfocalboard
Playbooksantimatter-plugin-playbooksplaybooks
דוא"לantimatter-plugin-mailcom.antimatterchat.mail
לוח שנהantimatter-plugin-calendarcom.antimatterchat.calendar
GitHubantimatter-plugin-githubgithub
GitLabantimatter-plugin-gitlabcom.github.manland.mattermost-plugin-gitlab
Jiraantimatter-plugin-jirajira
מדידותAntimatter-plugin-metricscom.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.

ה-proxy להתראות מאזין על פורט 8066 בכל כתובת ואינו בודק מי פונה אליו. שמרו את הפורט ברשת פרטית, או מאחורי reverse 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יבוא או ייצוא נתונים בפורמט המוני (ראו גיוס גיבויים ושדרוגים).