Antimatter की स्थापना

रेडी-मेड कॉम्पोज़ फ़ाइल, रिलीज़ के .deb या .rpm पैकेज, या रिलीज़ आर्काइव से Antimatter इंस्टॉल करें। फिर पहला एडमिन अकाउंट बनाएं।

Docker Compose के साथ स्थापना

यह अनुशंसित तरीका है। एक compose फ़ाइल Antimatter, PostgreSQL, फ़ाइल स्टोरेज और GIF सेवा को चलाती है। आपको Docker Engine और उसके Compose प्लगइन (docker compose) के साथ एक Linux सर्वर, 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 फ़ाइल को रखें: डेटाबेस और स्टोरेज पहली बार शुरू होने पर इन पासवर्ड्स का उपयोग करते हैं, AI मॉडल कनेक्शन के API कीज़ AM_AI_ENCRYPTION_KEY से एन्क्रिप्ट होती हैं, और बैकअप रीस्टोर करने के लिए आपको वही फ़ाइल चाहिए।

3. इसे शुरू करें

docker compose up -d
docker compose ps

पहली बार शुरू होने में एक या दो मिनट लगते हैं: PostgreSQL डेटाबेस बनाता है, एक one-shot bucket सेवा स्टोरेज बकेट बनाती है, एक one-shot 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खालीAI मॉडल कनेक्शन के API कीज़ को एन्क्रिप्ट करने की की (openssl rand -base64 32)। खाली छोड़ने पर सर्वर data वॉल्यूम में एक की फ़ाइल बना देता है। देखें एन्क्रिप्शन की।
GIFS_UPLOAD_KEYखालीलोगों को पिकर से अपने GIFs और स्टिकर जोड़ने और उन्हें हटाने की अनुमति देता है। खाली छोड़ने पर अपलोड बंद हो जाते हैं।
DOMAINखालीआपका डोमेन नाम, https प्रोफ़ाइल के लिए।
HTTP_PORT8065Antimatter के वेब सर्वर का होस्ट पोर्ट।
CALLS_PORT8443कॉल ऑडियो और वीडियो का UDP और TCP पोर्ट।
EDGE_SUBNET172.29.71.0/28Caddy और Antimatter के बीच नेटवर्क का सबनेट। यदि यह आपके किसी नेटवर्क से ओवरलैप करता है, तो इसे बदलें।
TZUTCकंटेनरों का टाइम ज़ोन।
ANTIMATTER_IMAGEghcr.io/antimatterchat/antimatter-next:latestजिस Antimatter इमेज को चलाना है (नीचे देखें)।

क्या चलता है

सेवाइमेजभूमिका
antimatterghcr.io/antimatterchat/antimatter-nextसर्वर, वेब ऐप और बंडल्ड ऐप्स। HTTP_PORT और CALLS_PORT पब्लिश करता है। इसका डेटा डायरेक्टरी data वॉल्यूम है।
postgrespostgres:17-alpineडेटाबेस, postgres वॉल्यूम में।
filesrustfs/rustfsअपलोड किए गए फ़ाइलों और इंस्टॉल किए गए ऐप्स के लिए S3-संगत स्टोरेज, files वॉल्यूम में।
bucketamazon/aws-cliantimatter बकेट बनाता है, फिर बाहर निकल जाता है।
gifsghcr.io/antimatterchat/gifs-serverGIF और स्टिकर सर्विस, gifs वॉल्यूम में।
gifs-stickersghcr.io/antimatterchat/gifs-serverपहली बार स्टार्टर स्टिकर पैक इम्पोर्ट करता है, फिर बाहर निकल जाता है।
httpscaddy:2-alpineकेवल https प्रोफ़ाइल के साथ: पोर्ट 80 और 443 पर HTTPS।

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, Metrics और प्लेबुक।latest, रिलीज़ के लिए X.Y.Z, sha-<commit>
ghcr.io/antimatterchat/antimatter-nextउसी के साथ वॉइस चैनल, पोल, मेल, कैलेंडर, नोट, व्हाइटबोर्ड, GIF, टू-डू और मेम्स। हर रात दोबारा बनाई जाती है।latest, nightly, nightly-<YYYYMMDD>, sha-<commit>

साइट का कॉम्पोज़ फ़ाइल antimatter-next का उपयोग करती है, क्योंकि GIF सर्विस और इस साइट पर वर्णित अधिकांश ऐप्स केवल उसी इमेज में हैं। इमेज बदलने के लिए, .env में ANTIMATTER_IMAGE सेट करें और docker compose up -d चलाएँ।

latest आपके नीचे बदल जाता है। प्रोडक्शन में, nightly-20261015 या sha-<commit> जैसे टैग को पिन करें, और अपग्रेड करते समय जानबूझकर इसे बदलें। सर्वर शुरू होने पर अपने डेटाबेस को अपग्रेड करता है, इसलिए आप पुरानी इमेज पर वापस नहीं जा सकते, या antimatter-next से antimatter पर नहीं जा सकते, बिना पहले ली गई बैकअप को रीस्टोर किए। देखें बैकअप और अपग्रेड।

इमेज के अंदर

  • सर्वर /antimatter में रहता है, जिसमें /antimatter/bin में antimatter और amctl बाइनरी हैं (PATH पर)।
  • यह एक न्यूनतम distroless बेस पर, बिना शेल के, अनप्रिविलेज्ड यूज़र antimatter (uid 2000) के रूप में चलता है।
  • पोर्ट: 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) और सर्वर की कॉन्फ़िगरेशन, डेटा और लॉग्स के लिए नामित वॉल्यूम्स, जो इसके README में दस्तावेज़ित हैं। यह डिफ़ॉल्ट रूप से स्टेबल इमेज का उपयोग करता है और S3 स्टोरेज के बजाय फ़ाइलें एक लोकल वॉल्यूम पर स्टोर करता है। यदि आप Caddy के बजाय nginx पसंद करते हैं, या आपके पास पहले से सर्टिफिकेट्स हैं, तो इसका उपयोग करें।

पहला एडमिन बनाएं

अपने ब्राउज़र में 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 पर साइन इन करें। पासवर्ड को अपने शेल हिस्ट्री से बाहर रखने के लिए कमांड के आगे एक स्पेस डालें (जिसके लिए HISTCONTROL=ignorespace होना चाहिए), या साइन इन करने के बाद पासवर्ड बदलें।

आप अंदर आने के बाद अगले चरण:

  1. कंपनी या संगठन के लिए, नई कम्युनิตियों की किस्म को कार्यस्थल पर सेट करें, और पहले से बनाई गई कम्युनिटी की किस्म उसकी सेटिंग्स में बदलें: कार्यस्थल या कम्युनिटी।
  2. निर्धारित करें कि कौन अकाउंट बना सकता है: साइन-इन और अकाउंट्स।
  3. ईमेल कॉन्फ़िगर करें, ताकि आमंत्रण और पासवर्ड रीसेट काम करें: ईमेल और पुश सूचनाएं।
  4. अपने फ़ायरवॉल में कॉल्स पोर्ट खोलें: कॉल्स और वॉइस।
  5. जांचें कि कौन से ऐप्स चालू हैं: बंडल्ड ऐप्स।

रिलीज़ डाउनलोड करें

Docker के बिना, GitHub पर रिलीज़ की फ़ाइलों से Antimatter इंस्टॉल करें: github.com/AntimatterChat/antimatter/releases। हर रिलीज़ में एक वर्ज़न नंबर होता है जैसे 0.9.0, और उसका टैग वही नंबर होता है जिसके आगे v लगा होता है (v0.9.0)।

Antimatter बीटा में है: इसके रिलीज़ 0.9.0 श्रृंखला में हैं। जिस रिलीज़ के संस्करण में हाइफ़न के बाद एक सफ़िक्स हो, जैसे 0.9.0-rc.1, उसे GitHub पर Pre-release के रूप में चिह्नित किया जाता है। यह एक परीक्षण संस्करण है, जो अंतिम रिलीज़ से पहले प्रकाशित किया जाता है।

हर रिलीज़ में amd64 और arm64 सर्वरों के लिए ये फ़ाइलें होती हैं:

फ़ाइलयह क्या है
antimatter_<version>-1_amd64.deb, antimatter_<version>-1_arm64.debDebian, Ubuntu और उन पर आधारित डिस्ट्रीब्यूशनों के लिए पैकेज।
antimatter-<version>-1.x86_64.rpm, antimatter-<version>-1.aarch64.rpmFedora, 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 डिस्ट्रीब्यूशन पर चलते हैं।

पैकेज के नामों में, प्री-रिलीज़ संस्करण का हाइफ़न टिल्ड में बदल जाता है, ताकि पैकेज मैनेजर प्री-रिलीज़ को अंतिम रिलीज़ से पहले सॉर्ट कर सके: संस्करण 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 आधारित है।

डाउनलोड की जांच करें

रिलीज़ पेज से या curl के साथ, आपको ज़रूरत वाली फ़ाइल और SHA256SUMS को एक ही डायरेक्टरी में डाउनलोड करें, फिर फ़ाइल की जांच करें:

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 साइन नहीं किया गया है: यह नुकसानग्रस्त डाउनलोड का पता लगाता है, और GitHub से HTTPS डाउनलोड से अधिक कुछ भी साबित नहीं करता।

.deb या .rpm पैकेज इंस्टॉल करें

पैकेज Antimatter को एक systemd सर्विस के रूप में इंस्टॉल करता है, जिसके शुरू होने के लिए केवल एक डेटाबेस की ज़रूरत होती है। इसे 64-बिट Debian, Ubuntu, Fedora या RHEL-संगत सर्वर पर systemd के साथ उपयोग करें।

पैकेज क्या इंस्टॉल करता है

पथइसमें क्या है
/opt/antimatterप्रोग्राम: bin/antimatter, bin/amctl, वेब ऐप्स (client/, client-fusion/), बंडल्ड ऐप्स (prepackaged_plugins/), टेम्पलेट, अनुवाद और फ़ॉन्ट। हर अपग्रेड इसे बदल देता है।
/etc/antimatter/antimatter.envसर्विस की सेटिंग्स, AM_ वेरिएबल्स के रूप में: डेटाबेस, साइट URL, GIF सर्विस। सिर्फ़ root इसे पढ़ सकता है। अपग्रेड इसे बनाए रखते हैं।
/etc/antimatter/config/config.jsonकॉन्फ़िगरेशन फ़ाइल, जहाँ सर्वर सिस्टम कंसोल में बदली गई सेटिंग्स सहेजता है। इसे पहली इंस्टॉलेशन पर /opt/antimatter/defaults/config.json से बनाया जाता है, और उसके बाद कभी नहीं बदला जाता।
/var/lib/antimatterअपलोड किए गए फ़ाइलें (data/) और इंस्टॉल किए गए ऐप्स (plugins/, client-plugins/)।
/var/log/antimatterलॉग फ़ाइलें, यदि आप फ़ाइल लॉगिंग चालू कर दें। यह बंद है: लॉग जर्नल में जाते हैं।
/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 (Debian और Ubuntu पर postgresql, Fedora और RHEL पर postgresql-server), media-types (.rpm के लिए mailcap) और gifs-server, GIF सर्विस, की सिफ़ारिश करता है, जिसका अपना रिलीज़ है (देखें नीचे)। apt और dnf सिफ़ारिश किए गए पैकेज को तब इंस्टॉल करते हैं जब वे उन्हें पाते हैं। यह poppler-utils, wv, unrtf और tidy (.rpm के लिए wv नहीं) की सुझाव देता है: वे अपलोड किए गए दस्तावेज़ों का टेक्स्ट निकालते हैं, ताकि खोज उनमें मौजूद शब्द पा सके। यदि आप यह चाहते हैं, तो स्वयं इंस्टॉल करें।

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 से पासवर्ड कनेक्शन स्वीकार करने चाहिए: इसके pg_hba.conf फ़ाइल के host लाइनों, scram-sha-256 विधि के साथ।

3. डेटाबेस और साइट URL सेट करें

/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। यहाँ सेट की गई कोई भी सेटिंग System Console में बदली नहीं जा सकती। देखें Configuration। हर बदलाव के बाद सर्वर को पुनः शुरू करें: 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 खोलें, या एक रिवर्स प्रॉक्सी स्थापित होने के बाद अपना डोमेन (देखें डोमेन और HTTPS)। तुरंत पहला खाता बनाएं: यह सिस्टम एडमिन बन जाता है। इसे कमांड लाइन से बनाने के लिए, पहला एडमिन बनाएं में दिए गए amctl कमांड का उपयोग करें, जहाँ docker compose exec antimatter amctl --local की जगह sudo -u antimatter amctl --local का उपयोग करें।

5. GIF चालू करें

GIF ऐप बंडल में शामिल है और चालू है, और antimatter.env पहले से ही इसे उसी सर्वर पर GIF सर्विस की ओर इंगित करता है (AM_GIFS_SERVICE_URL=http://127.0.0.1:8080/v2)। इसके लिए अभी भी सर्विस की API कुंजी की आवश्यकता है। gifs-server पैकेज ने उसकी स्थापना के समय एक API कुंजी जनरेट की थी:

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 को पुनः आरंभ करें, या सिस्टम कंसोल › प्लगइन्स › GIF में API कुंजी के रूप में दर्ज करें। यदि GIF सर्विस किसी अन्य सर्वर पर चल रही है, तो AM_GIFS_SERVICE_URL को उसके पता से सेट करें। लोगों को अपनी GIF और स्टिकर जोड़ने की अनुमति देने के लिए, देखें GIF।

सर्विस

  • यह antimatter उपयोगकर्ता के रूप में, /opt/antimatter में चलती है, और /etc/antimatter/antimatter.env को पढ़ती है। systemd सर्वर को हर बार बंद होने पर पुनः आरंभ करता है, और इसे शुरू होने के लिए अधिकतम एक घंटा देता है, क्योंकि नए संस्करण की डेटाबेस माइग्रेशन में लंबा समय लग सकता है।
  • इसकी लॉग्स जर्नल में हैं: journalctl -u antimatter।
  • यह सुरक्षित (hardened) है: /usr और /etc सर्वर के लिए केवल पठनीय (read-only) हैं, /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 शामिल हैं लेकिन चालू नहीं हैं: Bundled apps समझाता है कि इन्हें कैसे इंस्टॉल और चालू किया जाए।

Docker इमेज के अन्य ऐप्स पैकेज या आर्काइव में नहीं हैं: Kanban, Playbooks, Mail, Calendar, GitHub, GitLab, Jira और Metrics। प्रत्येक को उसके अपने रिलीज़ से इंस्टॉल करें:

ऐपरिलीज़ऐप id
Kanbanantimatter-plugin-boardsfocalboard
Playbooksantimatter-plugin-playbooksplaybooks
Mailantimatter-plugin-mailcom.antimatterchat.mail
Calendarantimatter-plugin-calendarcom.antimatterchat.calendar
GitHubantimatter-plugin-githubgithub
GitLabantimatter-plugin-gitlabcom.github.manland.mattermost-plugin-gitlab
Jiraantimatter-plugin-jirajira
MetricsAntimatter-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, वेब ऐप्स (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) में, या पर्यावरण चरों (environment variables) के माध्यम से, और साइट URL सेट करें:

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 चलाएं।

GIF के लिए, GIF सर्विस इंस्टॉल करें (नीचे देखें) और AM_GIFS_SERVICE_URL और AM_GIFS_API_KEY को पैकेज के चरण 5 में दिए गए अनुसार सेट करें।

GIF सर्विस और पुश प्रॉक्सी पैकेज

GIF सेवा और पुश प्रॉक्सी के अपने रिलीज़ हैं, जो सर्वर के नियमों के अनुरूप हैं: .tar.gz आर्काइव, amd64 और arm64 के लिए .deb और .rpm पैकेज, और 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 कहीं और चल रहा है, तो gifs-server.env में AM_GIFS_LISTEN=:8080 सेट करें और अपने फ़ायरवॉल के माध्यम से पोर्ट तक पहुँच को सीमित करें। फ़ाइल में अन्य सेटिंग्स सूचीबद्ध हैं: AM_GIFS_UPLOAD_KEYS (जो की GIF और स्टिकर जोड़ने और उन्हें हटाने की अनुमति देती हैं), AM_GIFS_PUBLIC_URL, AM_GIFS_TRUST_PROXY और AM_GIFS_LOG_LEVEL। पैकेज ffmpeg, gifsicle, librsvg2-bin (.rpm के लिए librsvg2-tools) और एक DejaVu फ़ॉन्ट की सिफ़ारिश करता है: सेवा फ़ाइलें इम्पोर्ट या प्राप्त करने पर GIF, वीडियो और स्टिकर फ़ॉर्मेट बनाने के लिए इन्हें उपयोग करती है, और इनके बिना भी चल सकती है।

सर्वर की तरह, इंस्टॉलेशन पर सेवा सक्षम (enabled) होती है, लेकिन शुरू नहीं होती। पैकेज के चरण 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 में रखे जाते हैं: पुश सूचन में बताया गया है कि वे कहाँ से आते हैं।

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"। फिर Antimatter में पुश सूचन सर्वर को http://<proxy host>:8066 सेट करें। अपग्रेड के बाद इसे रीस्टार्ट करें: sudo systemctl restart antimatter-push-proxy।

पुश प्रॉक्सी हर पता पर पोर्ट 8066 पर सुनता है और यह जाँच नहीं करता कि कौन इसे कॉल कर रहा है। पोर्ट को एक निजी नेटवर्क पर रखें, या ऐसी रिवर्स प्रॉक्सी के पीछे रखें जो एक्सेस को सीमित करती है।

अन्य सर्वर कमांड

सर्वर चलाए जाने के अलावा (antimatter, या antimatter server), बाइनरी में कुछ रखरखाव कमांड भी हैं। वे सर्वर के समान ही कॉन्फ़िगरेशन पढ़ते हैं।

Commandयह क्या करता है
antimatter versionसंस्करण, बिल्ड नंबर, बिल्ड तिथि और बिल्ड हैश प्रिंट करता है।
antimatter db pingजांच करता है कि डेटाबेस तक पहुंचा जा रहा है।
antimatter db initडेटाबेस में कॉन्फ़िगरेशन बनाता है (AM_CONFIG को postgres:// URL पर सेट करके)।
antimatter db migrateसर्वर शुरू किए बिना डेटाबेस माइग्रेशन लागू करता है।
antimatter db versionडेटाबेस पर लागू की गई अंतिम माइग्रेशन प्रिंट करता है।
antimatter import bulk, antimatter export bulkबल्क फॉर्मेट में डेटा आयात या निर्यात करता है (देखें बैकअप और अपग्रेड)।