बैकअप और अपग्रेड

किसका बैकअप लेना है, नए होस्ट पर इसे कैसे रीस्टोर करें, कैसे अपग्रेड करें, और Mattermost सर्वर या एकल कम्युनिटी को Antimatter में कैसे स्थानांतरित करें।

किसका बैकअप लेना है

क्यासाइट के compose फ़ाइल के साथएक रिलीज़ आर्काइव के साथ.deb या .rpm पैकेज के साथ
डेटाबेस: संदेश, उपयोगकर्ता, कम्युनिटी, चैनल और, साइट के compose फ़ाइल के साथ, कन्फ़िगरेशनवॉल्यूम antimatter_postgres, pg_dump के माध्यम सेआपका PostgreSQL डेटाबेसआपका PostgreSQL डेटाबेस
अपलोड की गई फ़ाइलें, इमेज और इंस्टॉल किए गए ऐप्सवॉल्यूम antimatter_files (S3 स्टोरेज)FileSettings.Directory, डिफ़ॉल्ट रूप से ./data//var/lib/antimatter
कन्फ़िगरेशन फ़ाइल(डेटाबेस में)config/config.json/etc/antimatter/config/config.json
GIF और स्टिकरवॉल्यूम antimatter_gifsGIF सर्विस का डेटा डायरेक्टरी/var/lib/gifs-server
सिक्रेट्स.env (और compose.override.yaml)आपकी एनवायरनमेंट फ़ाइल/etc/antimatter/antimatter.env, /etc/gifs-server
AI एन्क्रिप्शन की, जो मॉडल कनेक्शन की की को एन्क्रिप्ट करती है.env में AM_AI_ENCRYPTION_KEY (अनुशंसित), या antimatter_data वॉल्यूम में ai-encryption.key फ़ाइलAM_AI_ENCRYPTION_KEY, या data/ai-encryption.keyantimatter.env में AM_AI_ENCRYPTION_KEY, या /var/lib/antimatter/data/ai-encryption.key

AI एन्क्रिप्शन की के बिना, बहाल किया गया सर्वर अपने मॉडल कनेक्शन की API की पढ़ नहीं सकता, और हर एक को फिर से टाइप करना पड़ता है। की की एक कॉपी डेटाबेस बैकअप से अलग रखें, ताकि एक चोरी हुआ बैकअप दोनों में न हो। देखें एन्क्रिप्शन की।

डेटाबेस और फ़ाइलें एक साथ हैं: इन्हें एक ही समय पर बैकअप करें, और कॉपियाँ सर्वर से बाहर रखें। वॉल्यूम के नाम compose प्रोजेक्ट के नाम, antimatter, से शुरू होते हैं (docker volume ls उन्हें सूचीबद्ध करता है)।

बैकअप

compose.yaml के डायरेक्टरी से। पहले Antimatter को रोकना एक पूरी तरह से सुसंगत कॉपी देता है; चालू रहते हुए लिया गया बैकअप आमतौर पर ठीक होता है, लेकिन बैकअप के दौरान अपलोड की गई फ़ाइलें उसमें शामिल नहीं हो सकतीं।

stamp=$(date +%Y%m%d-%H%M%S)
mkdir -p backups
docker compose stop antimatter
# Database
docker compose exec -T postgres pg_dump -U antimatter -d antimatter -Fc \
    > "backups/antimatter-db-$stamp.dump"
# File storage, GIF service and the data directory (the AI key file)
for v in files gifs data; do
    docker run --rm -v "antimatter_$v:/data:ro" -v "$PWD/backups:/backup" \
        alpine tar -czf "/backup/antimatter-$v-$stamp.tar.gz" -C /data .
done
docker compose start antimatter
# Secrets
cp .env "backups/env-$stamp"

अगर आपने AM_AI_ENCRYPTION_KEY सेट नहीं किया है, तो सर्वर की की फ़ाइल data वॉल्यूम में है, जिसे ऊपर वाला लूप फ़ाइलों के साथ सेव करता है। बेहतर है, इसका कंटेंट .env में रखें, जैसा एन्क्रिप्शन की समझाता है, और इसकी एक कॉपी डेटाबेस बैकअप से अलग रखें।

दैनिक बैकअप के लिए cron से इसे चलाएं, और backups/ डायरेक्टरी को किसी अन्य मशीन पर कॉपी करें। .env की कॉपियों को सर्वर जितना सुरक्षित रखें: उनमें इसके पासवर्ड होते हैं।

अपलोड की गई फ़ाइलों को वस्तु-दर-वस्तु कॉपी करने के लिए (उदाहरण के लिए किसी अन्य S3 स्टोरेज में), bucket सर्विस का AWS कमांड-लाइन टूल उपयोग करें:

docker compose run --rm -v "$PWD/backups/files:/backup" bucket \
    "aws --endpoint-url http://files:9000 s3 sync s3://antimatter /backup"

रिलीज़ आर्काइव के साथ, डेटाबेस को pg_dump -Fc से बैकअप करें, और data/ और config/ डायरेक्टरी को अपने आमतौर पर उपयोग किए जाने वाले टूल्स से (data/ में AI की फ़ाइल होती है)। पैकेज के साथ, डेटाबेस को इसी तरह बैकअप करें, और /etc/antimatter, /var/lib/antimatter, /etc/gifs-server और /var/lib/gifs-server।

नए होस्ट पर रीस्टोर

compose.yaml, सहेजी गई .env और बैकअप को एक नए डायरेक्टरी में रखें, फिर:

stamp=20261016-030000          # the backup to restore
docker compose create           # creates the volumes, starts nothing
docker compose up -d postgres
docker compose exec -T postgres pg_restore -U antimatter -d antimatter --no-owner \
    < "backups/antimatter-db-$stamp.dump"
for v in files gifs data; do
    docker run --rm -v "antimatter_$v:/data" -v "$PWD/backups:/backup" \
        alpine tar -xzf "/backup/antimatter-$v-$stamp.tar.gz" -C /data
done
docker compose up -d

वही .env उपयोग करें: स्टोरेज और डेटाबेस को वही पासवर्ड रखने होंगे जो पहले थे, और मॉडल कनेक्शन को वही AI एन्क्रिप्शन की चाहिए। अगर नए होस्ट का पता अलग है, तो SITE_URL (और DOMAIN) अपडेट करें।

कभी-कभी किसी अन्य मशीन पर रीस्टोर करके अपने बैकअप की जांच करें।

अपग्रेड

17 अक्टूबर 2026 से पहले डाउनलोड किए गए Compose फ़ाइलों में data वॉल्यूम नहीं था: AI की फ़ाइल कंटेनर में थी। नई compose.yaml का उपयोग करने से पहले, और अगर .env में AM_AI_ENCRYPTION_KEY नहीं है, तो सर्वर द्वारा बनाई गई की को सेव करें: echo "AM_AI_ENCRYPTION_KEY=$(docker compose exec -T antimatter cat /antimatter/data/ai-encryption.key)" >> .env। अगर कमांड कोई फ़ाइल नहीं पाता है, तो कोई मॉडल कनेक्शन अभी तक की सेव नहीं किया है।
  1. बैकअप लें।
  2. यदि आप एक पिन करते हैं, तो .env में इमेज टैग (ANTIMATTER_IMAGE) को बदलें, जैसा कि अनुशंसित है।
  3. पुल करें और रीस्टार्ट करें:
    docker compose pull
    docker compose up -d
    docker compose logs -f antimatter

प्रारंभ पर, सर्वर डेटाबेस स्कीमा को अपग्रेड करता है (इसे लॉग में देखें; एक बड़े सर्वर के लिए यह कई मिनट ले सकता है) और इमेज से बंडल्ड ऐप्स के नए संस्करण इंस्टॉल करता है। रिलीज़ आर्काइव के साथ: सर्वर बंद करें, config/, data/, logs/, plugins/ और client/plugins/ को छोड़कर सब कुछ नए आर्काइव के कंटेंट से बदलें, और फिर इसे शुरू करें। .deb या .rpm पैकेज के साथ, नया पैकेज पैकेज अपग्रेड करें में बताया गया है, उसी तरह इंस्टॉल करें।

अपग्रेड केवल आगे की ओर जाते हैं। एक बार जब नया सर्वर डेटाबेस को अपग्रेड कर देता है, तो पुराना वर्ज़न उसे उपयोग नहीं कर सकता: वापस जाने के लिए, अपग्रेड से पहले लिया गया बैकअप रीस्टोर करें। antimatter-next से antimatter पर वापस जाने के लिए भी यही लागू होता है।

वर्ज़न

Antimatter का सर्वर Mattermost लाइन के संस्करण की रिपोर्ट करता है जिस पर यह आधारित है (वर्तमान में 12.0.0)। GitHub पर उपलब्ध रिलीज़, उनके आर्काइव और पैकेज सहित, अपने स्वयं के संस्करण नंबर रखती हैं, बीटा के दौरान 0.9.0 श्रृंखला में: antimatter version इसे बिल्ड नंबर के रूप में दिखाता है। इमेज main ब्रांच से पुनर्निर्मित की जाती हैं: antimatter-next हर रात (टैग nightly-<YYYYMMDD>), और दोनों इमेज हर परिवर्तन पर (टैग sha-<commit>)। इनमें से एक टैग पिन करें, जानबूझकर अपग्रेड करें, और पिछला टैग नोट कर रखें ताकि आपको पता हो कि कौन सा बैकअप इसके साथ जाता है।

PostgreSQL मेजर वर्ज़न

कंपोज़ फ़ाइल postgres:17-alpine का उपयोग करती है। Antimatter को PostgreSQL 15 या नया चाहिए। PostgreSQL का नया मेजर वर्ज़न पिछले वर्ज़न का डेटा डायरेक्टरी नहीं पढ़ सकता: इसे अपनाने के लिए, डेटाबेस का डंप करें, नया वर्ज़न नए वॉल्यूम पर शुरू करें और डंप को उसमें रीस्टोर करें।

0.9.0 में अपग्रेड

संस्करण 0.9.0 (या 17 अक्टूबर 2026 या उसके बाद से बनी किसी भी इमेज) का पहला प्रारंभ डेटा में कुछ एक-समय परिवर्तन करता है। प्रत्येक एक बार चलता है और डेटाबेस में दर्ज किया जाता है। ये वे परिवर्तन हैं जो पुराने डिफ़ॉल्ट पर छोड़े गए को नए डिफ़ॉल्ट तक ले जाते हैं, और एडमिन द्वारा चुने गए को अछूता छोड़ देते हैं। इन्हें लॉग में देखें।

यदि Antimatter किसी कंपनी या संस्था के लिए है, तो अपग्रेड से पहले नए समुदायों की प्रकृति को कार्यस्थल पर सेट करें: AM_TEAMSETTINGS_DEFAULTCOMMUNITYKIND=workplace। अपग्रेड हर समुदाय को उस समय इस सेटिंग की प्रकृति देता है, और समुदाय प्रकार के समुदायों के चैनलों में कॉल डिफ़ॉल्ट रूप से बंद रहते हैं। कार्यस्थल या समुदाय देखें।
क्यापरिवर्तन
समुदाय के प्रकारहर समुदाय को एक प्रकार मिलता है, समुदाय या कार्यस्थल: पहली बार शुरू होने पर नए समुदायों की प्रकृति (TeamSettings.DefaultCommunityKind) का मान। पहले से सेट किया गया प्रकार बना रहता है। समुदाय एडमिन बाद में टीम सेटिंग्स › चैनल › समुदाय का प्रकार में अपने समुदाय का प्रकार बदल सकते हैं।
कौन चैनल अरकाइव करता हैचैनल के सदस्य अब उन चैनलों को अरकाइव नहीं करते जिनमें वे शामिल हैं; यह कार्य कम्युनिटि एडमिन करते हैं। एक वर्कप्लेस में, चैनल के एडमिन (जोने इसे बनाया और जिन्हें उन्होंने एडमिन बनाया) भी इसे अरकाइव करते हैं। इससे सिस्टम स्कीम की भूमिकाएं बदल जाती हैं; किसी सिस्टम एडमिन द्वारा कुछ कम्युनिटि के लिए बनाई गई अनुमतियों की स्कीम (permission schemes) वैसे ही रहती हैं।
लेआउट प्रीसेट्स की मॉडरेटर भूमिकाकम्युनिटि को लेआउट प्रीसेट से मिली मॉडरेटर भूमिका को लोगों को हटाएं की अनुमति मिलती है, जो लोगों को समय समाप्त होने पर हटाने और उन्हें हटाने के लिए आवश्यक है। केवल वे भूमिकाएं बदलती हैं जो अभी भी प्रीसेट द्वारा बनाई गई अवस्था में हैं; किसी ने जो भूमिका संपादित की है, उसे छुड़ा दिया जाता है।
एडमिन वाली भूमिकाएंकम्युनिटि की वह भूमिका जिसमें एडमिन स्विच चालू है, अब कम्युनिटि के एडमिन जो कुछ भी कर सकते हैं, वह सब कुछ कर सकती है, जैसा कि स्विच बताता है, न कि केवल कम्युनिटि की सेटिंग्स।
सदस्यों की सीमाप्रति कम्युनिटि अधिकतम सदस्य (TeamSettings.MaxUsersPerTeam) 50 (पुरानी डिफ़ॉल्ट) से 0 (कोई सीमा नहीं) हो जाता है। कोई भी अन्य मान बना रहता है, और AM_TEAMSETTINGS_MAXUSERSPERTEAM से सेट की गई सीमा भी बना रहती है।
मॉडल कनेक्शनसिस्टम एडमिन को मॉडल कनेक्शन का प्रबंधन मिलता है, और कम्युनिटि एडमिन (और एडमिन वाली भूमिकाएं) को अपनी कम्युनिटि के अपने मॉडल कनेक्शन का प्रबंधन मिलता है। एजेंट्स ऐप की AI सेवाएं सर्वर-व्यापी मॉडल कनेक्शन बन जाती हैं, नीचे देखें।
टाउन स्क्वायर अब जनरल बनता हैहर कम्युनिटि का डिफ़ॉल्ट चैनल town-square (टाउन स्क्वायर) से general (जनरल) के नाम से पुनर्नामित किया जाता है। इसका ID, सदस्य, संदेश और सेटिंंग्स, और एडमिन द्वारा चुना गया डिस्प्ले नाम बना रहता है। पुराने लिंक और town-square द्वारा खोजने पर भी इसी पर ले जाया जाता है। किसी कम्युनिटि जिसके पास पहले से general नाम का चैनल है (भले ही अरकाइव किया गया हो), उसका डिफ़ॉल्ट चैनल town-square ही बना रहता है, और इसी तरह किसी कम्युनिटि जिसका town-square अरकाइव किया गया है: लॉग उनका नाम बताता है, और उनके एडमिन चैनलों का नाम बदल सकते हैं।
पसंदीदासभी के पसंदीदा साइडबार श्रेणी का नाम अब 'पसंदीदा' हो जाता है, जैसा कि इंटरफ़ेस में अब लिखा है। उन श्रेणियों को छुड़ा दिया जाता है जिन्हें लोगों ने उसी नाम से बनाया था।

एजेंट्स ऐप की सेवाएं

अपग्रेड एजेंट्स ऐप के प्रत्येक AI सेवा को सर्वर-व्यापी मॉडल कनेक्शन में कॉपी करता है, जो समुदाय के साथ साझा होता है और अतिथि (guests) के अलावा सभी द्वारा उपयोग किया जा सकता है (इसे अनुमति देने के लिए Guests too चालू करें)। रास्ते में कुंजियाँ एन्क्रिप्ट होती हैं, इसलिए सर्वर को अपना AI एन्क्रिप्शन कुंजी चाहिए: S3 में फ़ाइलें रखने वाले क्लस्टर पर, पहले AM_AI_ENCRYPTION_KEY सेट करें, अन्यथा कॉपी अगली स्टार्ट तक रुकी रहेगी। फिर सिस्टम कंसोल › AI › Model connections जाँचें:

  • प्रत्येक कनेक्शन अपनी सेवा की ID रखता है, इसलिए ऐप के एजेंट और Agents सेवा पर सेट ऑटो-ट्रांसलेशन इसे फिर से खोज लेते हैं।
  • OpenAI, OpenAI-समान, Anthropic, Mistral, Cohere और Gemini सेवाएँ उनके OpenAI-समान (या Anthropic) एंडपॉइंट के कनेक्शन बन जाती हैं। Azure सेवा रिसोर्स के OpenAI-समान एंडपॉइंट के कनेक्शन बनती है: इसे टेस्ट करें।
  • AWS Bedrock, Google Vertex AI और Cohere North सेवाएँ, और अज्ञात प्रकार, Needs attention के रूप में चिह्नित होती हैं, कारण के साथ। उनके क्लाउड क्रेडेंशियल्स कॉपी नहीं होते: इन्हें प्रोवाइडर के OpenAI-समान एंडपॉइंट या LiteLLM जैसे गेटवे पर निर्देशित करें, फिर सेव करें।
  • Embedding सेवा उसी पता और कुंजी वाले कनेक्शन का Embeddings मॉडल बन जाती है, या अपना अलग कनेक्शन। Transcription सेवा को whisper-1 मॉडल मिलता है।
  • जब रीराइट और रिकैप्स के पास अभी कोई कनेक्शन नहीं है, तो उन्हें ऐप के डिफ़ॉल्ट एजेंट की सेवा और मॉडल मिलते हैं।

Agents ऐप की अपनी सेटिंग्स और डेटा वैसे ही रहते हैं: इसके एजेंट इसके सेवाओं का उपयोग जारी रखते हैं।

डिफ़ॉल्ट्स के अन्य परिवर्तन

  • कॉल: Test mode डिफ़ॉल्ट रूप से बंद और Enable video डिफ़ॉल्ट रूप से चालू है। कॉन्फ़िगरेशन में सेट किया गया विकल्प बना रहता है। कॉल समुदाय के प्रकार का भी पालन करते हैं (देखें Calls and voice)।
  • संदेशों को ऊपर लाने की अनुमति चैनल के एडमिन, समुदाय के एडमिन और मॉडरेटर (जिनके पास संदेशों का प्रबंधन करें है) को है; डायरेक्ट या समूह संदेश के सदस्य अभी भी ऐसा कर सकते हैं।
  • अरकाइव किए गए चैनल नए सदस्य ले सकते हैं, जो उनकी इतिहास पढ़ सकते हैं। कोई भी पोस्ट, प्रतिक्रिया या परिवर्तन नहीं कर सकता।

Mattermost से स्थानांतरण

Antimatter Mattermost के डेटाबेस स्कीमा का उपयोग करता है और अपने टेबल जोड़ता है, इसलिए यह Mattermost सर्वर के PostgreSQL डेटाबेस और फ़ाइलों को अपना सकता है। पहले एक कॉपी पर इसे आज़माएं:

  1. Mattermost डेटाबेस, इसकी फ़ाइल स्टोरेज (data/ या S3 बकेट) और config.json का बैकअप लें, फिर Mattermost को रोकें।
  2. डेटाबेस को Antimatter के PostgreSQL में रीस्टोर करें, या Antimatter को इसकी एक कॉपी की ओर इशारा करें (AM_SQLSETTINGS_DATASOURCE)।
  3. फ़ाइलों को Antimatter की स्टोरेज में कॉपी करें, उनके पथों को बनाए रखते हुए: S3 टूल के साथ antimatter बकेट में, या रिलीज़ आर्काइव के साथ data/ में।
  4. अपनी सेटिंग्स का पुनः उपयोग करें: config.json को कॉपी करें, या amctl --local config migrate के साथ इसे डेटाबेस में ले जाएं (देखें कॉन्फ़िगरेशन)। आपकी MM_ एनवायरनमेंट वेरिएबल्स काम करती रहती हैं; सुविधाजनक होने पर उन्हें AM_ में बदल दें।
  5. Antimatter शुरू करें और डेटाबेस अपग्रेड होने के दौरान लॉग को ट्रैक करें। फिर सिस्टम कंसोल › प्लगइन्स › प्लगइन प्रबंधन की जांच करें। Antimatter स्वयं Calls, Playbooks, Kanban (Boards), Agents और इंटीग्रेशन के अपने बिल्ड तब इंस्टॉल करता है जब वे इंस्टॉल किए गए वर्जन से नए हों। यदि Mattermost में उनमें से किसी एक का नया वर्जन था, तो उस ऐप को हटा दें और Antimatter को रीस्टार्ट करें, ताकि उसका अपना बिल्ड इंस्टॉल हो जाए।
  6. अपने खुद के पुश प्रॉक्सी के साथ पुश नोटिफिकेशन सेटअप दोबारा करें: Antimatter कभी भी Mattermost के पुश सर्विस (टेस्ट या होस्टेड) को नोटिफिकेशन नहीं भेजता, जो केवल Mattermost के अपने ऐप्स तक पहुंचाते हैं। जब तक आप पुश सूचन सर्वर को नहीं बदलते, सर्वर कोई पुश नोटिफिकेशन नहीं भेजता (देखें पुश नोटिफिकेशन)।

Antimatter Mattermost, Inc. द्वारा संचालित किसी भी सर्विस से संपर्क नहीं करता (देखें बाहरी सर्विस से कनेक्शन), भले ही आपकी कॉन्फ़िगरेशन में अभी भी उनका नाम हो:

  • Mattermost पर पुश नोटिफिकेशन सर्वर सेटिंग्स में रखा जाता है, लेकिन कभी उपयोग नहीं होता;
  • Mattermost के ऐप मार्केटप्लेस (मार्केटप्लेस URL) और प्रोडक्ट सूचनाओं के पते खाली कर दिए जाते हैं;
  • ऐप डाउनलोड लिंक जो Mattermost के डिफ़ॉल्ट थे (Antimatter Apps Download Page Link, Android ऐप डाउनलोड लिंक और iOS ऐप डाउनलोड लिंक) Antimatter के GitHub पर ऐप के डाउनलोड पेज से बदल दिए गए हैं; आपकी द्वारा सेट किए गए लिंक बना रहते हैं;
  • Calls ऐप Mattermost के बजाय Cloudflare के पब्लिक STUN सर्वर का उपयोग करता है, बिना सेव की गई सेटिंग को बदले (देखें Calls);
  • सुरक्षा अपडेट चेक और क्रैश रिपोर्टिंग हटा दी गई है, और उनके सिस्टम कंसोल सेटिंग्स (Enable Security Alerts, Enable Diagnostics and Error Reporting) और सूचन पेज भी हटा दिए गए हैं।

लोकल मोड सोकेट अब /var/tmp/antimatter_local.socket है; amctl पुराने /var/tmp/mattermost_local.socket को भी ट्राई करता है। Mattermost के हाल के वर्जन केवल PostgreSQL का समर्थन करते हैं, और Antimatter भी: पहले MySQL डेटाबेस को PostgreSQL में स्थानांतरित करें। Antimatter द्वारा डेटाबेस अपग्रेड के बाद Mattermost पर वापस जाने का मतलब है आपका Mattermost बैकअप रीस्टोर करना।

डेटा एक्सपोर्ट और इम्पोर्ट करें

बल्क एक्सपोर्ट फॉर्मेट सर्वर के बीच डेटा स्थानांतरित करता है: पूरा सर्वर, कुछ कम्युनिटी, या कुछ चैनल, यदि आप चाहें तो अटैचमेंट, प्रोफ़ाइल फोटो और कस्टम इमोजी के साथ।

# on the source server
amctl export create --team-name design --include-profile-pictures
amctl export list
amctl export download <export file> design.zip
# on the destination server
amctl import upload design.zip
amctl import list available
amctl import process <uploaded file> --imported-users active

amctl export job list और amctl import job list के माध्यम से जॉब्स पर नज़र रखें। कम्युनिटी या चैनल एक्सपोर्ट के लिए --imported-users आवश्यक है: यदि लोग इस सर्वर पर आ रहे हैं तो active, और यदि ऐसे सर्वर में इम्पोर्ट किया जा रहा है जहाँ उनके पहले से अकाउंट हैं तो inactive, ताकि अनिश्चित मेलों से बनाए गए अकाउंट एडमिन द्वारा जाँचे जाने तक बंद रहें। --destination-team-name किसी मौजूदा कम्युनिटी में इम्पोर्ट करता है। एक्सपोर्ट और इम्पोर्ट डिफ़ॉल्ट रूप से 30 दिनों तक सर्वर के स्टोरेज (ExportSettings.Directory, ImportSettings.Directory) पर रखे जाते हैं।

सर्वर पर स्वयं, antimatter export bulk और antimatter import bulk --apply फ़ाइलों से यही काम API के बिना करते हैं।