FastComments.com

ऑन-प्रिमाइसेस

FastComments को On Prem होस्ट करना

FastComments डिप्लॉयमेंट के लिए कई समाधान प्रदान करता है। सबसे आम यह है जिसमें हम एप्लिकेशन आपके लिए होस्ट करते हैं।

हालाँकि, हम समझते हैं कि कुछ ग्राहक अपनी जानकारी क्लाउड में स्टोर नहीं कर सकते, और उन्हें अपना सारा डेटा on-premises होस्ट करने की आवश्यकता होती है।

यह दस्तावेज़ीकरण इसी उपयोग के मामले को कवर करता है।

क्या शामिल है Internal Link

FastComments On Prem आपको हमारा लाइव कमेंटिंग समाधान, जिसमें सभी मॉडरेशन और एडमिन टूल शामिल हैं, अपने स्वयं के हार्डवेयर पर डिप्लॉय करने की सुविधा देता है।

इसका मतलब है कि आपके पास अपने डेटा पर नियंत्रण होता है, और कमेंटिंग सिस्टम को आपके स्थानीय LAN या कॉर्पोरेट नेटवर्क तक सीमित किया जा सकता है।

इंस्टेंस Internal Link

आवश्यक घटक

On-Prem के लिए, FastComments में केवल एक एप्लिकेशन सर्वर और एक डेटाबेस होता है। हमने डिप्लॉयमेंट को सरल बनाया है ताकि एप्लिकेशन अन्य घटक जोड़े बिना सभी ट्रैफ़िक को सीधे सर्व कर सके।

एप्लिकेशन सर्वर एक Docker इमेज में प्रदान किया जाता है और इसे किसी भी कंटेनर प्रबंधन समाधान के साथ डिप्लॉय किया जा सकता है।

डेटाबेस, MongoDB, स्वयं-संचालित हो सकता है या AWS DocumentDB या MongoDB Atlas जैसे किसी अन्य प्रदाता द्वारा होस्ट किया जा सकता है।

FastComments वर्तमान में MongoDB 7 के साथ परीक्षण किया गया है, हालाँकि हम डिप्लॉयमेंट को आसान बनाने के लिए DocumentDB-संगत होने का लक्ष्य रखते हैं।

इंस्टेंस आकार

आप पाएंगे कि FastComments काफी अच्छी तरह अनुकूलित है और एप्लिकेशन को कम P99 बनाए रखने के लिए बड़ी मशीनों की आवश्यकता नहीं होती।

सभी बैच और क्रॉन जॉब्स कुल मेमोरी उपयोग को सीमित करने के लिए स्ट्रीमिंग का उपयोग करते हैं।

एप्लिकेशन सर्वर और डेटाबेस के लिए नीचे दी गई तालिकाएँ आकार निर्धारण में सहायता कर सकती हैं।

एप्लिकेशन सर्वर इंस्टेंस

समवर्ती उपयोगकर्ताकुल क्लस्टर CPUsकुल क्लस्टर मेमोरी
1001256mb
1K2512mb
10K81gb
100K328gb
1M6464gb

उदाहरण के लिए, प्रति सेकंड लगभग 100 कमेंट थ्रेड सर्व करने वाला एक सिंगल कोर आमतौर पर 250mb RSS से अधिक का उपयोग नहीं करता।

डेटाबेस सर्वर इंस्टेंस

डेटाबेस का आकार निर्धारण वर्किंग सेट आकार पर निर्भर करता है, जो किसी दिए गए समय पर आपके द्वारा एक्सेस किए जाने वाले डेटा की मात्रा है, साथ ही समवर्ती अनुरोधों पर भी।

FastComments Mongo के लिए काफी अनुकूल है, इस अर्थ में कि हॉट क्वेरीज़ के लिए यह index hints, स्ट्रीमिंग कर्सर का उपयोग करता है, और डाउनस्ट्रीम सिस्टम को ओवरलोड होने से रोकने के लिए विभिन्न क्षेत्रों में समवर्तीता सीमाएँ रखता है।

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

समवर्ती उपयोगकर्तासंग्रहीत कमेंटप्रति इंस्टेंस CPUsप्रति इंस्टेंस मेमोरी
1001k1256mb
1K5k2512mb
10K100k82gb
100K500k168gb
1M5M3232gb

उपरोक्त तालिकाएँ रूढ़िवादी अनुमान हैं। आप पा सकते हैं कि वास्तविक आवश्यकताएँ आपके विशिष्ट कॉन्फ़िगरेशन (पेज आकार, कमेंट वॉल्यूम, आदि) के आधार पर भिन्न होती हैं।

कॉन्फ़िग Internal Link

FastComments कॉन्फ़िगरेशन के लिए environment variables का उपयोग करता है। निम्नलिखित सूची उन सभी समर्थित variables को रेखांकित करती है जो On-Prem के लिए प्रासंगिक हैं।

VariableDefaultInfoRequiredExamples or Valid Values
NODE_ENVEnvironment का प्रकार।Yesproduction, dev
MONGO_URIDB Connection URI।Yes
MONGO_ENABLE_SSLfalseDatabase से connect करने के लिए SSL का उपयोग सक्षम करता है।Notrue, false
MONGO_ENABLE_SSL_VALIDATEfalseMongo से connect करते समय CA के विरुद्ध cert को validate करना सक्षम करता है।Notrue, false
MONGO_SSL_CAMongo SSL CA pem फ़ाइल।No/path/to/some-cert.pem
ADMIN_NOTIFICATIONS_EMAILEmail जहाँ महत्वपूर्ण system-संबंधित notifications जाने चाहिए।Noadmin-group@bigcorp.com
IP_HASH_SALTIP addresses को hash करने के लिए salt।Yes
SESSION_SECRETSessions को sign करने के लिए उपयोग की जाने वाली key।Yes
SESSION_STORE_SECRETStorage में sessions को sign/hash करने के लिए उपयोग की जाने वाली key। यह SESSION_SECRET से अलग होनी चाहिए।Yes
HOSTNAMEHostname जहाँ FastComments deploy किया गया है (admin dashboard आदि)। इसमें port या protocol शामिल नहीं होना चाहिए।Yesexample.com
HOST_ADDRएक accessible URI जहाँ FastComments deploy किया गया है (admin dashboard आदि)।Yeshttps://example.com
EMAIL_CONFIG_PATHLocal file system पर path जहाँ email config (SMTP, domain/provider mappings, आदि) है।Yes/my/config.json
EMAIL_DEFAULT_FROM_NAMEFastComments RobotEmail "From Name" header।NoMy Company Name
EMAIL_DEFAULT_FOOTER_LOGO/images/logo-32-2020-01.pngEmail footer logo।Nohttps://exmaple.com/footer.png
EMAIL_DEFAULT_TRANSPORTEMAIL_CONFIG_PATH में "defaultTransport" के लिए override। एक ही config फ़ाइल को अलग-अलग envs में deploy करने के लिए उपयोगी।NomyTransportName
ON_PREM_TENANT_IDfastcomments.com पर आपके account की ID। आपकी license key register करने के लिए उपयोग किया जाता है।No
ON_PREM_LICENSE_KEYएक on-prem license key।No
GIPHY_API_KEYGiphy API Key। यदि निर्दिष्ट नहीं है, तो आपको एक ऐसा config rule बनाना चाहिए जो gif picker को disable कर दे।No
GIPHY_DEFAULT_RATINGpgGiphy integration के लिए उपयोग किया जाता है। Widget customization rules से भी override किया जा सकता है।Nog, pg, pg-13, r
OPENAI_SECRET_KEYOpenai द्वारा संचालित features के लिए उपयोग किया जाता है, जैसे optional GPT-आधारित spam detection।No
CDN_HOST_ADDRHostname जहाँ से assets fetch किए जाएँगे। Default रूप से HOSTNAME का मान।Noexample.com
LARGE_FILE_HOST_ADDRHostname जहाँ से बड़ी फ़ाइलें (जैसे exports) fetch की जाती हैं। Default रूप से CDN_HOST_ADDR का मान।Noexample.com
LARGE_FILE_LOCATION_TYPElocal_diskबड़ी फ़ाइलें, जैसे exports, कहाँ store की जानी चाहिए।Nolocal_disk, s3
FROM_EMAIL_HOSTHostname जहाँ से emails भेजे जाने चाहिए।Noexample.com
COOKIE_IDfastcomments.sidFastcomments cookie का नाम।No
COOKIE_HOSTNAME.fastcomments.comCookie के "hostname" field का मान। Dot से prefix करने की अनुशंसा की जाती है।No.example.com
S3_ACCESS_KEYUser file uploads, avatars, आदि के लिए उपयोग किया जाता है। Undefined होने पर default रूप से local FS।No
S3_SECRET_KEYUser file uploads, avatars, आदि के लिए उपयोग किया जाता है।No
S3_REGIONUser file uploads, avatars, आदि के लिए उपयोग किया जाता है।No
S3_BUCKETUser file uploads, avatars, आदि के लिए उपयोग किया जाता है।No
S3_HOSTUser file uploads, avatars, आदि के लिए उपयोग किया जाता है।No
CACHE_DIROptional offline cache store करने का स्थान, जब DB उपलब्ध नहीं हो। Top 100 comment threads के साथ समय-समय पर refresh किया जाता है।No
BACKUP_DIRData 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 होना चाहिए:

Email Config
Copy Copy
1
2{
3 "defaultDKIM": {
4 "domainName": "mycompany.org",
5 "keySelector": "2024",
6 "privateKey": "-----BEGIN PRIVATE KEY-----\nABCDEFG\n-----END PRIVATE KEY-----"
7 },
8 "providerTransports": {
9 "yahoo.com": "specialTransport"
10 },
11 "defaultTransport": "mailgun",
12 "transports": {
13 "mailgun": {
14 "host": "smtp.mailgun.org",
15 "port": 587,
16 "secure": false,
17 "auth": {
18 "user": "admin@somewhere.com",
19 "pass": "password"
20 },
21 "tls": {
22 "ciphers": "SSLv3"
23 }
24 },
25 "specialTransport": {
26 "host": "smtp.someplace.org",
27 "port": 587,
28 "secure": false,
29 "auth": {
30 "user": "admin@example.com",
31 "pass": "password"
32 },
33 "tls": {
34 "ciphers": "SSLv3"
35 }
36 }
37 }
38}
39

ऊपर के उदाहरण में हम 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 निर्दिष्ट करना चाहेंगे।

डेटाबेस डाउनटाइम और मेंटेनेंस मोड Internal Link

FastComments एक स्वचालित मेंटेनेंस मोड का समर्थन करता है। यदि डेटाबेस डाउन हो जाता है, तो यह लोकप्रिय कमेंट थ्रेड्स को सर्व करना जारी रख सकता है।

इसके अतिरिक्त, मेंटेनेंस मोड में, सभी कमेंट्स BACKUP_DIR में सेव किए जाते हैं। सिस्टम के वापस ऑनलाइन आने पर उन्हें प्रोसेस (स्पैम के लिए जांचा जाएगा, आदि) और सेव किया जाएगा।

यह हर घंटे, सबसे लोकप्रिय 100 कमेंट थ्रेड्स का निर्धारण करके और उनकी सामग्री को डिस्क पर कैश करके करता है। सबसे लोकप्रिय 100 थ्रेड्स का निर्धारण पहले से गणना की गई स्थिति (pre-calculated state) से किया जाता है, इसलिए यह एक भारी आवधिक कार्य नहीं है।

यह पूरी तरह से वैकल्पिक है, और केवल तभी सक्षम होता है जब CACHE_DIR और BACKUP_DIR सेट हों। इससे निश्चित रूप से एप्लिकेशन नोड्स स्टेटफुल (stateful) बन जाते हैं, हालांकि यह ऐसी स्थिति है जिसे कभी भी खोया जा सकता है बिना एप्लिकेशन के गलत व्यवहार किए।

ध्यान दें कि मेंटेनेंस मोड में कमेंट थ्रेड्स की उचित प्रमाणीकरण नहीं किया जा सकता, इसलिए केवल वही थ्रेड्स आवधिक रूप से बैकअप किए जाते हैं जिन्हें सुरक्षित रूप से सार्वजनिक माना जाता है।

मेंटेनेंस मोड में कई सुविधाएं उपलब्ध नहीं होती हैं।

विजेट कोड Internal Link

On-Prem के लिए फ्रंट एंड कोड स्निपेट्स और लाइब्रेरीज़ SaaS प्रोडक्ट जैसे ही हैं। हालाँकि, आपको apiHost और सही स्क्रिप्ट पाथ निर्दिष्ट करना होगा:

On Prem के लिए कमेंट्स कोड
Copy Copy
1
2<script async src="https://my.host.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5 window.fcConfigs = [{
6 target: '#fastcomments-widget',
7 tenantId: "demo",
8 apiHost: "https://my.host.com"
9 // ... can also pass SSO payload etc.
10 }];
11</script>
12

ऊपर दिया गया एक बहुत सरल उदाहरण है। हम 1st-party React, Angular, Vue, Svelte, आदि लाइब्रेरीज़ का भी उपयोग कर सकते हैं।

एपीआई Internal Link

API को सामान्य SaaS उत्पाद की तरह ही एक्सेस किया जा सकता है, इसमें आप On-Prem डैशबोर्ड में लॉग इन करके API keys बनाएंगे और उन keys का उपयोग API को एक्सेस करने के लिए करेंगे। API endpoints on-prem पर वही हैं जो SaaS उत्पाद के लिए होते हैं।

एकाधिक डोमेन Internal Link

आपका On-Prem FastComments इंस्टॉलेशन कई आंतरिक डोमेन को कमेंट सर्व कर सकता है, उदाहरण के लिए app.mycorp.org और hr.mycorp.org। आप इन्हें अलग-अलग कॉन्फ़िगर कर सकते हैं लेकिन एक ही On-Prem सेटअप पर होस्ट कर सकते हैं, इसके लिए अलग-अलग Customization Rules बनाकर उनके व्यक्तिगत व्यवहार को कॉन्फ़िगर करें।

सुरक्षा Internal Link

डिफ़ॉल्ट रूप से, FastComments मानता है कि कमेंट थ्रेड्स सार्वजनिक होते हैं। सुरक्षा की एक अतिरिक्त परत जोड़ने के लिए, अनुशंसा की जाती है कि आप एक Customization Rule बनाएं जिसमें Requires SSO विकल्प चुना (checked) हो। इससे सभी कमेंट से संबंधित endpoints के लिए SSO प्रमाणीकरण आवश्यक हो जाएगा।

निष्कर्ष

आप On Prem दस्तावेज़ीकरण के अंत तक पहुँच गए हैं। नीचे अपनी आगे की टिप्पणियाँ या प्रश्न हमें बताएं - आप हमें सहायता पृष्ठ के माध्यम से भी संपर्क कर सकते हैं।