
भाषा 🇮🇳 हिन्दी
पृष्ठभूमि
शुरुआत करना
डिप्लॉयमेंट
आर्किटेक्चर
इंस्टॉलेशन और इंटीग्रेशन
सुरक्षा टिप्स
ऑन-प्रिमाइसेस
FastComments को On Prem होस्ट करना
FastComments डिप्लॉयमेंट के लिए कई समाधान प्रदान करता है। सबसे आम यह है जिसमें हम एप्लिकेशन आपके लिए होस्ट करते हैं।
हालाँकि, हम समझते हैं कि कुछ ग्राहक अपनी जानकारी क्लाउड में स्टोर नहीं कर सकते, और उन्हें अपना सारा डेटा on-premises होस्ट करने की आवश्यकता होती है।
यह दस्तावेज़ीकरण इसी उपयोग के मामले को कवर करता है।
क्या शामिल है 
FastComments On Prem आपको हमारा लाइव कमेंटिंग समाधान, जिसमें सभी मॉडरेशन और एडमिन टूल शामिल हैं, अपने स्वयं के हार्डवेयर पर डिप्लॉय करने की सुविधा देता है।
इसका मतलब है कि आपके पास अपने डेटा पर नियंत्रण होता है, और कमेंटिंग सिस्टम को आपके स्थानीय LAN या कॉर्पोरेट नेटवर्क तक सीमित किया जा सकता है।
कहाँ से शुरू करें 
FastComments On Prem को डिप्लॉय करना शुरू करने के लिए, हमसे संपर्क करें।
सेटअप होने के बाद आप हमेशा लाइसेंसिंग पेज से नवीनतम docker इमेज डाउनलोड कर सकते हैं।
इंस्टेंस 
आवश्यक घटक
On-Prem के लिए, FastComments में केवल एक एप्लिकेशन सर्वर और एक डेटाबेस होता है। हमने डिप्लॉयमेंट को सरल बनाया है ताकि एप्लिकेशन अन्य घटक जोड़े बिना सभी ट्रैफ़िक को सीधे सर्व कर सके।
एप्लिकेशन सर्वर एक Docker इमेज में प्रदान किया जाता है और इसे किसी भी कंटेनर प्रबंधन समाधान के साथ डिप्लॉय किया जा सकता है।
डेटाबेस, MongoDB, स्वयं-संचालित हो सकता है या AWS DocumentDB या MongoDB Atlas जैसे किसी अन्य प्रदाता द्वारा होस्ट किया जा सकता है।
FastComments वर्तमान में MongoDB 7 के साथ परीक्षण किया गया है, हालाँकि हम डिप्लॉयमेंट को आसान बनाने के लिए DocumentDB-संगत होने का लक्ष्य रखते हैं।
इंस्टेंस आकार
आप पाएंगे कि FastComments काफी अच्छी तरह अनुकूलित है और एप्लिकेशन को कम P99 बनाए रखने के लिए बड़ी मशीनों की आवश्यकता नहीं होती।
सभी बैच और क्रॉन जॉब्स कुल मेमोरी उपयोग को सीमित करने के लिए स्ट्रीमिंग का उपयोग करते हैं।
एप्लिकेशन सर्वर और डेटाबेस के लिए नीचे दी गई तालिकाएँ आकार निर्धारण में सहायता कर सकती हैं।
एप्लिकेशन सर्वर इंस्टेंस
| समवर्ती उपयोगकर्ता | कुल क्लस्टर CPUs | कुल क्लस्टर मेमोरी |
|---|---|---|
| 100 | 1 | 256mb |
| 1K | 2 | 512mb |
| 10K | 8 | 1gb |
| 100K | 32 | 8gb |
| 1M | 64 | 64gb |
उदाहरण के लिए, प्रति सेकंड लगभग 100 कमेंट थ्रेड सर्व करने वाला एक सिंगल कोर आमतौर पर 250mb RSS से अधिक का उपयोग नहीं करता।
डेटाबेस सर्वर इंस्टेंस
डेटाबेस का आकार निर्धारण वर्किंग सेट आकार पर निर्भर करता है, जो किसी दिए गए समय पर आपके द्वारा एक्सेस किए जाने वाले डेटा की मात्रा है, साथ ही समवर्ती अनुरोधों पर भी।
FastComments Mongo के लिए काफी अनुकूल है, इस अर्थ में कि हॉट क्वेरीज़ के लिए यह index hints, स्ट्रीमिंग कर्सर का उपयोग करता है, और डाउनस्ट्रीम सिस्टम को ओवरलोड होने से रोकने के लिए विभिन्न क्षेत्रों में समवर्तीता सीमाएँ रखता है।
नीचे डेटाबेस इंस्टेंस आकारों पर एक सामान्य दिशानिर्देश है। ध्यान दें कि यह प्रति इंस्टेंस है, क्लस्टर में कुल संसाधन नहीं।
| समवर्ती उपयोगकर्ता | संग्रहीत कमेंट | प्रति इंस्टेंस CPUs | प्रति इंस्टेंस मेमोरी |
|---|---|---|---|
| 100 | 1k | 1 | 256mb |
| 1K | 5k | 2 | 512mb |
| 10K | 100k | 8 | 2gb |
| 100K | 500k | 16 | 8gb |
| 1M | 5M | 32 | 32gb |
उपरोक्त तालिकाएँ रूढ़िवादी अनुमान हैं। आप पा सकते हैं कि वास्तविक आवश्यकताएँ आपके विशिष्ट कॉन्फ़िगरेशन (पेज आकार, कमेंट वॉल्यूम, आदि) के आधार पर भिन्न होती हैं।
कॉन्फ़िग 
FastComments कॉन्फ़िगरेशन के लिए environment variables का उपयोग करता है। निम्नलिखित सूची उन सभी समर्थित variables को रेखांकित करती है जो On-Prem के लिए प्रासंगिक हैं।
| Variable | Default | Info | Required | Examples or Valid Values |
|---|---|---|---|---|
| NODE_ENV | Environment का प्रकार। | Yes | production, dev | |
| MONGO_URI | DB Connection URI। | Yes | ||
| MONGO_ENABLE_SSL | false | Database से connect करने के लिए SSL का उपयोग सक्षम करता है। | No | true, false |
| MONGO_ENABLE_SSL_VALIDATE | false | Mongo से connect करते समय CA के विरुद्ध cert को validate करना सक्षम करता है। | No | true, false |
| MONGO_SSL_CA | Mongo SSL CA pem फ़ाइल। | No | /path/to/some-cert.pem | |
| ADMIN_NOTIFICATIONS_EMAIL | Email जहाँ महत्वपूर्ण system-संबंधित notifications जाने चाहिए। | No | admin-group@bigcorp.com | |
| IP_HASH_SALT | IP addresses को hash करने के लिए salt। | Yes | ||
| SESSION_SECRET | Sessions को sign करने के लिए उपयोग की जाने वाली key। | Yes | ||
| SESSION_STORE_SECRET | Storage में sessions को sign/hash करने के लिए उपयोग की जाने वाली key। यह SESSION_SECRET से अलग होनी चाहिए। | Yes | ||
| HOSTNAME | Hostname जहाँ FastComments deploy किया गया है (admin dashboard आदि)। इसमें port या protocol शामिल नहीं होना चाहिए। | Yes | example.com | |
| HOST_ADDR | एक accessible URI जहाँ FastComments deploy किया गया है (admin dashboard आदि)। | Yes | https://example.com | |
| EMAIL_CONFIG_PATH | Local file system पर path जहाँ email config (SMTP, domain/provider mappings, आदि) है। | Yes | /my/config.json | |
| EMAIL_DEFAULT_FROM_NAME | FastComments Robot | Email "From Name" header। | No | My Company Name |
| EMAIL_DEFAULT_FOOTER_LOGO | /images/logo-32-2020-01.png | Email footer logo। | No | https://exmaple.com/footer.png |
| EMAIL_DEFAULT_TRANSPORT | EMAIL_CONFIG_PATH में "defaultTransport" के लिए override। एक ही config फ़ाइल को अलग-अलग envs में deploy करने के लिए उपयोगी। | No | myTransportName | |
| ON_PREM_TENANT_ID | fastcomments.com पर आपके account की ID। आपकी license key register करने के लिए उपयोग किया जाता है। | No | ||
| ON_PREM_LICENSE_KEY | एक on-prem license key। | No | ||
| GIPHY_API_KEY | Giphy API Key। यदि निर्दिष्ट नहीं है, तो आपको एक ऐसा config rule बनाना चाहिए जो gif picker को disable कर दे। | No | ||
| GIPHY_DEFAULT_RATING | pg | Giphy integration के लिए उपयोग किया जाता है। Widget customization rules से भी override किया जा सकता है। | No | g, pg, pg-13, r |
| OPENAI_SECRET_KEY | Openai द्वारा संचालित features के लिए उपयोग किया जाता है, जैसे optional GPT-आधारित spam detection। | No | ||
| CDN_HOST_ADDR | Hostname जहाँ से assets fetch किए जाएँगे। Default रूप से HOSTNAME का मान। | No | example.com | |
| LARGE_FILE_HOST_ADDR | Hostname जहाँ से बड़ी फ़ाइलें (जैसे exports) fetch की जाती हैं। Default रूप से CDN_HOST_ADDR का मान। | No | example.com | |
| LARGE_FILE_LOCATION_TYPE | local_disk | बड़ी फ़ाइलें, जैसे exports, कहाँ store की जानी चाहिए। | No | local_disk, s3 |
| FROM_EMAIL_HOST | Hostname जहाँ से emails भेजे जाने चाहिए। | No | example.com | |
| COOKIE_ID | fastcomments.sid | Fastcomments cookie का नाम। | No | |
| COOKIE_HOSTNAME | .fastcomments.com | Cookie के "hostname" field का मान। Dot से prefix करने की अनुशंसा की जाती है। | No | .example.com |
| S3_ACCESS_KEY | User file uploads, avatars, आदि के लिए उपयोग किया जाता है। Undefined होने पर default रूप से local FS। | No | ||
| S3_SECRET_KEY | User file uploads, avatars, आदि के लिए उपयोग किया जाता है। | No | ||
| S3_REGION | User file uploads, avatars, आदि के लिए उपयोग किया जाता है। | No | ||
| S3_BUCKET | User file uploads, avatars, आदि के लिए उपयोग किया जाता है। | No | ||
| S3_HOST | User file uploads, avatars, आदि के लिए उपयोग किया जाता है। | No | ||
| CACHE_DIR | Optional offline cache store करने का स्थान, जब DB उपलब्ध नहीं हो। Top 100 comment threads के साथ समय-समय पर refresh किया जाता है। | No | ||
| BACKUP_DIR | Data store करने का स्थान जब DB उपलब्ध नहीं हो। यदि DB उपलब्ध नहीं होने पर कोई comment submit किया जाता है, तो यह यहाँ जाता है और बाद में process किया जाता है। | No |
ध्यान दें कि सभी domain-संबंधित variables _HOST या _ADDR postfix का उपयोग करते हैं। अंतर यह है:
_HOST:example.com_ADDR:https://example.com
EMAIL_CONFIG_PATH में निम्नलिखित उदाहरण format के साथ एक JSON फ़ाइल का path होना चाहिए:

ऊपर के उदाहरण में हम mailgun नामक एक default SMTP email transport define करते हैं। हम एक special transport भी define करते हैं जिसका उपयोग हम विशेष रूप से
@yahoo.com emails के लिए करते हैं। कुछ scenarios में किसी domain के लिए delivery को tune करने हेतु किसी specific provider या sending IP का उपयोग करना वांछनीय होता है। यह optional है।
DocumentDB
DocumentDB से connect करते समय आप default settings के साथ compatible होने के लिए MONGO_ENABLE_SSL=true MONGO_SSL_CA=/some/path.pem निर्दिष्ट करना चाहेंगे।
डेटाबेस डाउनटाइम और मेंटेनेंस मोड 
FastComments एक स्वचालित मेंटेनेंस मोड का समर्थन करता है। यदि डेटाबेस डाउन हो जाता है, तो यह लोकप्रिय कमेंट थ्रेड्स को सर्व करना जारी रख सकता है।
इसके अतिरिक्त, मेंटेनेंस मोड में, सभी कमेंट्स BACKUP_DIR में सेव किए जाते हैं। सिस्टम के वापस ऑनलाइन आने पर उन्हें प्रोसेस (स्पैम के लिए जांचा जाएगा, आदि) और सेव किया जाएगा।
यह हर घंटे, सबसे लोकप्रिय 100 कमेंट थ्रेड्स का निर्धारण करके और उनकी सामग्री को डिस्क पर कैश करके करता है। सबसे लोकप्रिय 100 थ्रेड्स का निर्धारण पहले से गणना की गई स्थिति (pre-calculated state) से किया जाता है, इसलिए यह एक भारी आवधिक कार्य नहीं है।
यह पूरी तरह से वैकल्पिक है, और केवल तभी सक्षम होता है जब CACHE_DIR और BACKUP_DIR सेट हों। इससे निश्चित रूप से एप्लिकेशन नोड्स स्टेटफुल (stateful) बन जाते हैं, हालांकि यह ऐसी स्थिति है
जिसे कभी भी खोया जा सकता है बिना एप्लिकेशन के गलत व्यवहार किए।
ध्यान दें कि मेंटेनेंस मोड में कमेंट थ्रेड्स की उचित प्रमाणीकरण नहीं किया जा सकता, इसलिए केवल वही थ्रेड्स आवधिक रूप से बैकअप किए जाते हैं जिन्हें सुरक्षित रूप से सार्वजनिक माना जाता है।
मेंटेनेंस मोड में कई सुविधाएं उपलब्ध नहीं होती हैं।
लॉक 
किसी भी वितरित सिस्टम की तरह FastComments को संसाधनों और प्रक्रियाओं को लॉक करने के लिए किसी तरीके की आवश्यकता होती है। इन लॉक्स को /locks-in-progress एंडपॉइंट के माध्यम से मॉनिटर किया जा सकता है।
उदाहरण के लिए, यहाँ हमारे US शार्ड पर यह एंडपॉइंट है।
यह यह देखने के लिए उपयोगी हो सकता है कि सिस्टम क्यों अटका हुआ है, या लोड में है। यदि कोई SRE यह देखना चाहता है कि सिस्टम को उच्च CPU लोड का अनुभव क्यों हो रहा है, तो वह खराब व्यवहार करने वाले cron का नाम प्राप्त करने के लिए इस एंडपॉइंट की जांच कर सकता है।
विजेट कोड 
On-Prem के लिए फ्रंट एंड कोड स्निपेट्स और लाइब्रेरीज़ SaaS प्रोडक्ट जैसे ही हैं। हालाँकि, आपको apiHost और सही स्क्रिप्ट पाथ निर्दिष्ट करना होगा:

ऊपर दिया गया एक बहुत सरल उदाहरण है। हम 1st-party React, Angular, Vue, Svelte, आदि लाइब्रेरीज़ का भी उपयोग कर सकते हैं।
एपीआई 
API को सामान्य SaaS उत्पाद की तरह ही एक्सेस किया जा सकता है, इसमें आप On-Prem डैशबोर्ड में लॉग इन करके API keys बनाएंगे और उन keys का उपयोग API को एक्सेस करने के लिए करेंगे। API endpoints on-prem पर वही हैं जो SaaS उत्पाद के लिए होते हैं।
एकाधिक डोमेन 
आपका On-Prem FastComments इंस्टॉलेशन कई आंतरिक डोमेन को कमेंट सर्व कर सकता है, उदाहरण के लिए app.mycorp.org और hr.mycorp.org। आप इन्हें अलग-अलग कॉन्फ़िगर कर सकते हैं लेकिन एक ही On-Prem सेटअप पर होस्ट कर सकते हैं, इसके लिए अलग-अलग Customization Rules बनाकर उनके व्यक्तिगत व्यवहार को कॉन्फ़िगर करें।
निष्कर्ष
आप On Prem दस्तावेज़ीकरण के अंत तक पहुँच गए हैं। नीचे अपनी आगे की टिप्पणियाँ या प्रश्न हमें बताएं - आप हमें सहायता पृष्ठ के माध्यम से भी संपर्क कर सकते हैं।