Self-hosting a Matrix server for 5 years

मैट्रिक्स प्रोटोकॉल, मैट्रिक्स सिनैप्स सर्वर, ब्रिज और एलिमेंट मोबाइल ऐप्स के साथ अनुभव।

मैं अब लगभग पांच वर्षों से मैट्रिक्स सर्वर की मेजबानी कर रहा हूं, ज्यादातर कुछ रिश्तेदारों और करीबी दोस्तों के बीच टेक्स्ट चैट के लिए, और कुछ और लोगों के लिए व्हाट्सएप के लिए एक ब्रिज। ये मेरे अनुभव हैं.

मैट्रिक्स प्रोटोकॉल

प्रोटोकॉल पर मेरे मन में ज्यादा विचार नहीं हैं।

एकमात्र चीज़ जो मुझे वास्तव में समझ में नहीं आती वह है डेटा प्रतिकृति पर निर्णय। यदि सर्वर ए पर कोई उपयोगकर्ता सर्वर बी पर एक कमरे में शामिल होता है, तो हाल के कमरे के डेटा को सर्वर बी से सर्वर ए में कॉपी किया जाता है और फिर दोनों सर्वरों पर सिंक में रखा जाता है। मेरा मानना ​​है कि इससे फेडरेशन ओवरहेड और अन्य सर्वरों पर जगह की कीमत पर मूल सर्वर पर लोड कम हो जाता है। हालाँकि, यह एक ऐसी स्थिति भी पैदा करता है जहाँ महासंघ में कही गई कोई भी बात अनकही नहीं रह सकती है, जो एक प्रोटोकॉल/सिस्टम के लिए एक विडंबनापूर्ण स्थिति है जो अक्सर गोपनीयता के बारे में बात करते समय सामने आती है।

आईआईआरसी, फ़ेडायवर्स/एक्टिविटीपब एक समान दृष्टिकोण का उपयोग करता है।

सिनैप्स सर्वर

सिनैप्स एकमात्र विकल्प है जो पुलों का समर्थन करता है, यही कारण है कि मैं सबसे पहले मैट्रिक्स को आज़माना चाहता था। और 2019-2020 में वैसे भी यह एकमात्र विकल्प था।

फ़िलहाल, मैं एक छोटे वीपीएस पर बिना कंटेनरीकरण के सीधे Synapse, PostgreSQL और coturn चलाता हूं।

अच्छी तरह से काम करता हुँ

काफी विश्वसनीय रूप से काम करता है, पुलों का समर्थन करता है, और यह 2020 की तुलना में अधिक कुशल है।

एपीआई अच्छी तरह से प्रलेखित है, और सरल HTTP कॉल के माध्यम से संदेशों को प्रमाणित करने और (अनएन्क्रिप्टेड) ​​भेजने की अनुमति देता है। किसी समय, मैं एसएक्सएमओ आदि के साथ उपयोग करने के लिए एक सरल शेल क्लाइंट लिखना चाहता था।

कोई व्यवस्थापक पैनल नहीं है

कोई व्यवस्थापक पृष्ठ या पैनल नहीं है. एक तृतीय-पक्ष व्यवस्थापक साइट थी, लेकिन यह केवल HTTP कॉल करने के लिए एक संपूर्ण साइट है। इसलिए मैंने अपना लिखना समाप्त कर दिया।

मेरा सिंपल सिनैप्स एडमिन पेज

(आजकल, ईएसएस परिनियोजन में डेवलपर द्वारा निर्मित व्यवस्थापक शामिल है, भविष्य अनुभाग देखें)

PostgreSQL की आवश्यकता है

जबकि तकनीकी रूप से, सिनैप्स एक एसक्लाइट डेटाबेस के साथ काम कर सकता है (और जो पहली बार सर्वर पर <10 उपयोगकर्ता रखने के लिए एक ठीक विकल्प की तरह लगता है), यह दूषित हो जाएगा। इसलिए PostgreSQL वास्तव में अनिवार्य है। (पहले से ही नए ईएसएस का एक हिस्सा)

महासंघ की आवश्यकता है

प्रारंभिक सेटअप मानता है कि सर्वर फ़ेडरेटेड होने वाला है, और इसे बंद करने का कोई अच्छा तरीका नहीं है। सर्वोत्तम समाधान में फ़ेडरेटेड सर्वरों की एक रिक्त श्वेतसूची शामिल है।

GitHub समस्या: फ़ेडरेशन को अक्षम करने के लिए एकल कॉन्फ़िगरेशन विकल्प

मैं इसे अक्षम करने के निहितार्थ नहीं जानता।

निरंतर सफाई की जरूरत है

संदेश प्रतिधारण नीति को सर्वर-व्यापी, बल्कि प्रति-कमरा भी सेट किया जा सकता है। कॉन्फ़िगरेशन में विशिष्ट पंक्तियाँ हैं जिन्हें वास्तव में क्लीनअप चलाने वाली सेवा को सक्षम करने के लिए सेट करने की आवश्यकता है।

फ़ेडरेटेड रूम सहित सभी सदस्यों के चले जाने के बाद भी सिनैप्स रूम को बनाए रखता है। इसके परिणामस्वरूप स्थानीय सदस्यों के बिना कई (कभी-कभी बड़े) कमरे सर्वर पर अनाथ हो जाते हैं और डेटाबेस स्थान घेर लेते हैं।

अनुलग्नकों के साथ संदेशों (घटनाओं) को हटाने से अनुलग्नक नहीं हटता (क्योंकि कोई अन्य संदेश इसका उल्लेख कर सकता है?), जिसका अर्थ है कि भेजी गई फ़ाइलें सर्वर पर अनिश्चित काल तक मौजूद रहती हैं। एक और गोपनीयता निहितार्थ. एक सरल “X से पुरानी सभी फ़ाइलें हटाएँ” स्क्रिप्ट तब तक बढ़िया काम करती है जब तक कि यह अवतारों को नहीं हटा देती। तो हाँ, ऐसा लगता है कि यह कुछ ऐसा है जिसे कोबल्ड-टुगेदर स्क्रिप्ट के बजाय सिनैप्स सर्वर द्वारा नियंत्रित किया जाना चाहिए।

व्यापक सफ़ाई के बाद भी, डिस्क स्थान को कम करने के लिए PostgreSQL डेटाबेस को वैक्यूम करने की आवश्यकता हो सकती है।

डेटाबेस नियंत्रण से बाहर हो जाता है

यहां तक ​​कि <10 सक्रिय उपयोगकर्ताओं वाले मेरे छोटे सर्वर के लिए भी, डेटाबेस का आकार कई गीगाबाइट तक पहुंच गया। सिनैप्स राज्य_समूह_स्टेट नामक एक परिशिष्ट-केवल (!) तालिका में कमरे की स्थिति का ट्रैक रखता है। किसी कमरे को हटाने से राज्य_समूह_राज्य रिकॉर्ड नहीं हटते। इसलिए यह कभी भी स्वचालित रूप से साफ़ नहीं होता है, और आकार में असीमित रूप से बढ़ता है। उनमें से कई रिकॉर्ड्स को डेटाबेस से सीधे हटाना संभव है, और एलिमेंट (कंपनी) उन रिकॉर्ड्स को "संपीड़ित" करने के लिए कुछ उपकरण प्रदान करता है, लेकिन फिर, कुछ ऐसा जिसे सर्वर द्वारा नियंत्रित किया जाना चाहिए। राज्य_समूह_राज्य के बारे में अच्छा लेख

उपयोगकर्ताओं को हटाया नहीं जा सकता

यह एपीआई में कोई विकल्प नहीं है। सर्वर व्यवस्थापक उपयोगकर्ता खातों पर “निष्क्रिय करें” (लॉगिन अक्षम करें) और “मिटाएं” (संबंधित डेटा हटाएं, जो जीडीपीआर-अनुपालक होने का दावा करता है) कर सकता है, लेकिन खाते स्वयं हमेशा सर्वर पर बने रहते हैं।

किसकी प्रतीक्षा? क्यों?

इसे जीडीपीआर उल्लंघन कैसे नहीं माना गया यह मेरे लिए एक रहस्य है। यहां तक ​​कि मेरे छोटे सर्वर पर भी, मेरे पास ऐसे उपयोगकर्ता हैं जो अपने पहले नाम को अपनी आईडी के रूप में उपयोग करते हैं और ब्रिजित व्हाट्सएप उपयोगकर्ता हैं जो आईडी के रूप में फोन नंबर का उपयोग करते हैं।

गिटहब मुद्दा

भविष्य

जबकि मैट्रिक्स-एलिमेंट इकोसिस्टम कुछ समय से सरकार और कॉर्पोरेट संस्थाओं की सेवा कर रहा है, इसके भविष्य के बारे में हाल ही में कई घोषणाएँ हुई हैं।

विशेष रूप से, एलीमेंट (कंपनी) अब वर्तमान सेटअप को बदलने के लिए एक ऑल-इन-वन एलीमेंट सर्वर सूट (ईएसएस) प्रदान कर रही है, जिसमें शामिल है

ईएसएस समुदाय

यह गैर-व्यावसायिक उपयोग, मूल्यांकन और छोटे से मध्यम आकार की तैनाती (1-100 उपयोगकर्ता) के लिए है।

ईएसएस समुदाय में 7 घटक/सेवाएँ शामिल हैं, अब इसके लिए न्यूनतम 2 सीपीयू, 2 जीबी रैम की आवश्यकता है, और यह कुबेरनेट्स का उपयोग करके चलता है? आईएमओ, दर्जनों उपयोगकर्ताओं के लिए यह बहुत अधिक है।

तुलना के लिए, स्निकेट, एक्सएमपीपी का उपयोग करके समान कार्यक्षमता वाला एक ऑल-इन-वन समाधान, 10 या उससे अधिक उपयोगकर्ताओं के लिए एक एकल सीपीयू और 128 एमबी (!) रैम की आवश्यकता होती है।

हां, मैंने अनुशंसित सेटअप स्क्रिप्ट सेटअप देखा है, लेकिन इस बिंदु पर, सेटअप को आसान बनाने से पहली बार में आवश्यक अतिरिक्त सेवाओं के मुद्दे का समाधान नहीं होता है।

Ansible और Docker का उपयोग करके मैट्रिक्स सर्वर सेटअप

साथ ही, ईएसएस खाता निर्माण और कॉल को बिल्कुल अलग तरीके से संभालता है, इस पर बाद में और अधिक जानकारी दी जाएगी।

मैट्रिक्स-व्हाट्सएप ब्रिज

बहुत बढ़िया. इंस्टॉल करना और सेट अप करना आसान है, वास्तव में अच्छी तरह से काम करता है, और जब व्हाट्सएप अपने वेब एपीआई को बदलता है तो केवल कभी-कभार (अर्ध-वार्षिक या ऐसा) अपडेट की आवश्यकता होती है। कॉल का समर्थन नहीं करता.

तत्व क्लासिक

सभी प्लेटफार्मों पर समान

तत्व मौजूद है और एंड्रॉइड, आईओएस और वेब पर सुसंगत दिखता है, जिससे नियमित उपयोगकर्ताओं और समस्या निवारण के लिए यह आसान हो जाता है।

कोई छवि कैप्शन नहीं

यह मूर्खतापूर्ण है, लेकिन जबकि (आधिकारिक?) ब्रिज छवि कैप्शन का समर्थन करते हैं, आधिकारिक एलिमेंट ऐप ऐसा नहीं करता है। FAQ में उत्तर? एक बेहतर ऐप प्राप्त करें. अच्छी तरह से ठीक है।

https://yaky.dev/2025-11-30-self-hosting-matrix/el_no_caption.png

एलीमेंट क्लासिक में कोई छवि कैप्शन नहीं।

https://yaky.dev/2025-11-30-self-hosting-matrix/el_caption.png

शिल्डीचैट क्लासिक (बेहतर ऐप) में कैप्शन के साथ छवि।

धीमी सूचनाएं

कभी-कभी Google क्लाउड मैसेजिंग का उपयोग करने वाले दो एंड्रॉइड क्लाइंट के बीच भी संदेश प्राप्त करने में कुछ मिनट लग सकते हैं। कभी-कभी यह लगभग तुरंत होता है। कारण के बारे में अभी भी अनिश्चित हूं।

कोई ऑफ़लाइन संकेत नहीं

यह बताने का एक अविश्वसनीय तरीका कि सर्वर पहुंच योग्य नहीं है, अंतहीन लोडिंग बार है। लेकिन फिर भी, यह अंततः बिना किसी त्रुटि का संकेत दिए चला जाता है।

फिर, संदेश भेजते समय, उपयोगकर्ता को “संदेश भेजने में असमर्थ” प्राप्त होता है। निराशा उत्पन्न होती है.

लेकिन मुझे पता है कि ऐप /सिंक एंडपॉइंट को कॉल करने का प्रयास कर रहा है। विफल होने पर यह कोई त्रुटि क्यों नहीं दिखाता?

सुरक्षा कुंजी और डिवाइस सत्यापन

आईआईआरसी पहली चीज जो ऐप करता है वह उपयोगकर्ता को बिना किसी सरल स्पष्टीकरण के, अपनी हस्ताक्षर कुंजी का बैकअप लेने और कुंजी पासवर्ड दर्ज करने के लिए कहता है। नियमित उपयोगकर्ताओं के लिए यह कोई बढ़िया अनुभव नहीं है.

कुछ लोगों ने एलिमेंट की चाबियाँ खोने या बार-बार पुन: सत्यापन का अनुरोध करने के मुद्दों की सूचना दी। शुक्र है कि मेरा इनसे सामना नहीं हुआ।

तृतीय-पक्ष सेवाएँ

भले ही आप स्वयं-होस्ट किए गए सर्वर से कनेक्ट हों, एलिमेंट क्लासिक वेक्टर.आईएम एकीकरण सर्वर और मैट्रिक्स.ओआरजी कुंजी बैकअप सर्वर से कनेक्ट करने का प्रयास कर सकता है।

तत्व एक्स

एलिमेंट एक्स को अब नए और बेहतर क्लाइंट के रूप में अनुशंसित किया गया है। यह नहीं है।

और धीमा

किसी तरह, यह धीमा है. किसी वार्तालाप पर क्लिक करने से उसे लोड होने में 0.5-1.0 सेकंड का समय लगता है, जबकि क्लासिक पर लगभग तुरंत लोड होता है।

शायद यह कई बड़े कमरों वाले खातों के लिए बेहतर काम करता है, लेकिन मेरा मामला ऐसा नहीं है।

छंटाई

बातचीत क्रमबद्ध होती है… कौन जानता है। यह न तो नवीनतम है और न ही वर्णानुक्रमिक।

कोई बैकग्राउंड सिंक नहीं

एलिमेंट ऐसा लगता है कि यह काफी सरल विफल-सुरक्षित है (यहां तक ​​कि व्हाट्सएप भी ऐसा करता है), लेकिन इसे किसी कारण से हटा दिया गया था।

https://yaky.dev/2025-11-30-self-hosting-matrix/elx_no_distributors_available.png

सर्वर पर “स्लाइडिंग सिंक” विकल्प की आवश्यकता है

यह “स्लाइडिंग सिंक” विकल्प केवल नए Synapse संस्करणों के लिए उपलब्ध है, और केवल तभी जब PostgreSQL डेटाबेस के साथ चल रहा हो (जो पहले से ही मामला होना चाहिए – ऊपर देखें)। संभवतः कोई समस्या नहीं है जब तक कि उपयोगकर्ता एलिमेंट एक्स को पुराने सिनैप्स से कनेक्ट करने का प्रयास नहीं करता।

कॉल पश्चगामी संगत नहीं हैं

एलिमेंट एक्स के साथ कॉल करने के लिए एलिमेंट कॉल (ईएसएस का हिस्सा) की आवश्यकता होती है। यह समूह कॉल का समर्थन करता है, लेकिन… फिलहाल केवल वीडियो कॉल।

https://yaky.dev/2025-11-30-self-hosting-matrix/elx_call_is_not_supported.png

आपसे नया ऐप इंस्टॉल करने के लिए अपने संपर्क को बताने के लिए भी कहा जा सकता है:

https://yaky.dev/2025-11-30-self-hosting-matrix/elx_unsupported_call.png

मैं नियमित रूप से कॉल का उपयोग नहीं करता, लेकिन कुछ लोग जिन्हें मैं अपने सर्वर पर आमंत्रित करना चाहता हूं वे उनका उपयोग करना चाहेंगे।

ऑनबोर्डिंग ख़राब है

कुछ साल पहले, मैंने या तो अस्थायी रूप से अप्रतिबंधित पंजीकरण (एक भयानक विचार) सक्षम किया था, या अपने उपयोगकर्ताओं के खाते मैन्युअल रूप से बना रहा था, क्योंकि “आमंत्रण” मैट्रिक्स.टू लिंक टूट गया था, और पंजीकरण टोकन मोबाइल ऐप्स में सही ढंग से काम नहीं करते थे।

तो आइए देखें कि यह अब कैसे काम करता है। ध्यान रखें, मैं अभी भी स्टैंडअलोन सिनैप्स पर हूं, ईएसएस पर नहीं।

एलिमेंट एक्स ऑनबोर्डिंग

मैं एक उपयोगकर्ता हूं, और मुझे अपने मित्र के सर्वर पर एक खाता पंजीकृत करना था। मैं देख रहा हूं कि एलिमेंट एक्स अब एक अनुशंसित ऐप है, तो आइए इसे आज़माएं।

https://yaky.dev/2025-11-30-self-hosting-matrix/elx_00.png

“खाता बनाएं” पर क्लिक करें (जो एक अलग शैली है जो किसी कारण से बटन की तरह नहीं दिखती है)।

https://yaky.dev/2025-11-30-self-hosting-matrix/elx_01.png

लेकिन मुझे एक अलग सर्वर पर एक खाता चाहिए। “खाता प्रदाता बदलें” पर क्लिक करें।

https://yaky.dev/2025-11-30-self-hosting-matrix/elx_02.png

“अन्य” पर क्लिक करें।

https://yaky.dev/2025-11-30-self-hosting-matrix/elx_03.png

अब मैं उस सर्वर को खोज सकता हूं जिसे मेरा मित्र होस्ट कर रहा है, और यह खोज के नीचे सूची में दिखाई देना चाहिए।

सर्वर व्यवस्थापक के रूप में: मुझे याद नहीं है कि क्या Synapse सर्वर को काम करने के लिए फ़ेडरेशन को सक्षम/रखना होगा।

https://yaky.dev/2025-11-30-self-hosting-matrix/elx_04.png

हाँ! मैं तो यही चाहता हूं, यह इतना वाचाल क्यों है?

https://yaky.dev/2025-11-30-self-hosting-matrix/elx_05.png

डब्ल्यूटीएफ। इसलिए एलीमेंट एक्स सबसे सरल उपयोगकर्ता नाम+पासवर्ड खाता भी नहीं बना सकता है। मैं बस इतना ही चाहता हूं, मैं Google, Apple, या किसी अन्य प्रकार के तृतीय-पक्ष प्रमाणीकरण के साथ साइन इन नहीं करना चाहता।

एलिमेंट क्लासिक ऑनबोर्डिंग

मैं एलिमेंट एक्स का उपयोग करके खाता पंजीकृत करने में असमर्थ था, इसलिए एलिमेंट क्लासिक को बेहतर काम करना चाहिए।

https://yaky.dev/2025-11-30-self-hosting-matrix/elc_00.png

ठीक है, “खाता बनाएँ”।

https://yaky.dev/2025-11-30-self-hosting-matrix/elc_01.png

इससे क्या फर्क पड़ता है? छोडना।

https://yaky.dev/2025-11-30-self-hosting-matrix/elc_02.png

वर्तमान आधिकारिक ऐप मुझे एलिमेंट एक्स का उपयोग करने के लिए कह रहा है। बस इसे आज़माया। “संपादित करें” पर क्लिक करें जहां यह “matrix.org” कहता है (जो वास्तव में “सर्वर” नहीं कहता है) और सर्वर नाम दर्ज करें।

https://yaky.dev/2025-11-30-self-hosting-matrix/elc_03.png

क्यों नहीं? कोई स्पष्टीकरण नहीं. ज़रूर, मैं एक वेब क्लाइंट का उपयोग करूँगा।

https://yaky.dev/2025-11-30-self-hosting-matrix/elc_04.png

ठीक है, मुझे बकवास करो, मुझे लगता है। मैं एक खाता क्यों नहीं बना सकता?

एक सर्वर व्यवस्थापक के रूप में: सिनैप्स को पंजीकरण टोकन के माध्यम से पंजीकरण की अनुमति देने के लिए सेट किया गया है, क्योंकि अप्रतिबंधित पंजीकरण एक बुरा विचार है। मुझे नहीं पता चला कि /static/client/register पथ कहाँ सेट है।

आईआईआरसी के लिए वेब-होस्टेड एलिमेंट ऐप, जैसे कि ऐप.एलिमेंट.आईओ, पर जाकर खाता पंजीकृत करना संभव है, जो पंजीकरण टोकन का उपयोग करके खाता पंजीकृत करने की अनुमति देगा। लेकिन फिर उपयोगकर्ता को अपने मोबाइल डिवाइस को वेब ऐप (जिसे वे कभी भी उपयोग नहीं कर सकते हैं) पर क्रॉस-सत्यापित करने के सिरदर्द से निपटना पड़ता है।

तो अब क्या?

मैट्रिक्स-एलिमेंट बढ़ रहा है, नई सुविधाओं का निर्माण कर रहा है, और बड़े ग्राहक (ज्यादातर सरकारी संस्थाएं AFAIK) प्राप्त कर रहा है। हालाँकि, मेरी राय में नया कॉर्पोरेट ईएसएस समुदाय इसके लायक नहीं है। मुझे उस मामले के लिए फैंसी ऑथ, थर्ड-पार्टी आईडी, ग्रुप वीडियो कॉन्फ्रेंसिंग या यहां तक ​​कि फेडरेशन की भी आवश्यकता नहीं है। लेकिन यह स्पष्ट है कि सिनैप्स और एलीमेंट एक्स गंभीर रूप से अक्षम हैं और इन सेवाओं के बिना काम करने के लिए डिज़ाइन नहीं किए गए हैं।

मैं शायद स्निकेट पर स्विच करूंगा, जो अधिक कुशल है, समय पर सूचनाएं देता है और बहुत सहज ऑनबोर्डिंग है।

स्निकेट

किसे पड़ी है?

¯\_(ツ)_/¯



<a href

Leave a Comment