# मैनेज्ड ऐडऑन्स: Postgres और Redis

Source: https://support.kapsulehost.com/hi-in/site-addons

Addons टैब आपको एक सर्वर बनाए या बनाए रखे बिना किसी साइट से एक प्रबंधित PostgreSQL डेटाबेस या एक प्रबंधित Redis इंस्टेंस जोड़ने देता है। KapsuleHost इसे प्रोविज़न करता है, आपको एक कनेक्शन स्ट्रिंग देता है, और जब आप इसे हटाते हैं तो इसे साफ़-सुथरे तरीके से हटा देता है।

## Addons कहाँ स्थित हैं

**वेबसाइटें** खोलें, साइट पर क्लिक करें, साइट के बाएँ मेनू में **ऐप्स** समूह खोलें, और **ऐड-ऑन** चुनें। पेज का शीर्षक **प्रबंधित addons** है।

कैटलॉग में दो विकल्प मौजूद हैं:

| Addon | सामान्य उपयोग |
|---|---|
| PostgreSQL | ऐसे एप्लिकेशन के लिए प्राथमिक डेटास्टोर जो MySQL पर नहीं है |
| Redis | कैशिंग, सेशन स्टोरेज और बैकग्राउंड जॉब कतारें |

ये उस MySQL डेटाबेस से अलग हैं जो एक मानक होस्टिंग साइट के साथ आता है। वह **डेटाबेस** टैब पर है और उसे किसी प्रोविज़निंग की आवश्यकता नहीं है: देखें [SSH टनल के ज़रिए अपने डेटाबेस से कनेक्ट करना](https://support.kapsulehost.com/hi-in/database-ssh-tunnel)।

![KPanel में किसी साइट के लिए प्रबंधित addons पेज](https://support.kapsulehost.com/help/screenshots/site-addons.3f3b5ee3.webp)

## Addon का अनुरोध करना

1. **प्रबंधित डेटाबेस जोड़ें** अनुभाग में addon खोजें।
2. **साइट में जोड़ें** पर क्लिक करें।

अनुरोध तुरंत दर्ज हो जाता है और addon **आपके addons** में एक **PENDING** बैज और *प्रोविज़नर की प्रतीक्षा* नोट के साथ दिखाई देता है। पेज हर पंद्रह सेकंड में अपने आप रिफ्रेश होता है, इसलिए आप इसे खुला छोड़ सकते हैं।

एक बैकग्राउंड जॉब हर कुछ मिनट में लंबित अनुरोधों को उठाता है, आपकी साइट के लिए एक समर्पित डेटाबेस और एक समर्पित उपयोगकर्ता बनाता है, और एक एन्क्रिप्टेड कनेक्शन स्ट्रिंग वापस लिखता है। इसके बाद स्थिति **ACTIVE** में बदल जाती है।

> **Note:** किसी addon का अनुरोध करने या उसे हटाने के लिए **sites:write** अनुमति की आवश्यकता होती है। केवल-पढ़ने वाले टीम सदस्य देख सकते हैं कि कौन से addons मौजूद हैं और उनकी स्थिति क्या है, लेकिन बटन छिपे रहते हैं।

### प्रति साइट, एक-एक

एक साइट में एक PostgreSQL addon और एक Redis addon रखा जा सकता है। एक ही प्रकार के दूसरे की माँग करने पर यह कहते हुए मना कर दिया जाता है कि यह पहले से ही प्रोविज़न किया जा चुका है, और एक बार इंस्टॉल हो जाने पर कैटलॉग उस विकल्प को छिपा देता है। जब दोनों इंस्टॉल हो जाते हैं, तो कैटलॉग अनुभाग में लिखा होता है **सभी उपलब्ध addons इंस्टॉल हैं**।

## स्थिति पढ़ना

| स्थिति | अर्थ |
|---|---|
| PENDING | अनुरोध किया गया, प्रोविज़नर के लिए कतार में |
| PROVISIONING | अभी बनाया जा रहा है |
| ACTIVE | उपयोग के लिए तैयार |
| FAILED | प्रोविज़निंग पूरी नहीं हुई; कारण पंक्ति में दिखाया गया है |
| DELETED | हटा दिया गया, अब सूचीबद्ध नहीं है |

एक **FAILED** पंक्ति सामान्य संदेश के बजाय उसके नीचे वास्तविक त्रुटि टेक्स्ट दिखाती है। अगर यह कारण ऐसा नहीं है जिस पर आप कार्रवाई कर सकें, तो इसे शब्दशः एक सपोर्ट टिकट में उद्धृत करें: देखें [सपोर्ट टिकट खोलना](https://support.kapsulehost.com/hi-in/opening-a-support-ticket)।

## कनेक्शन स्ट्रिंग प्राप्त करना

एक बार जब कोई addon **ACTIVE** हो जाता है, तो उसकी पंक्ति एक छिपी हुई कनेक्शन स्ट्रिंग दिखाती है जिसमें पासवर्ड को बिंदुओं से बदल दिया गया है, ताकि आप क्रेडेंशियल को उजागर किए बिना एक नज़र में होस्ट और डेटाबेस नाम की पुष्टि कर सकें।

पूरी कनेक्शन स्ट्रिंग को अपने क्लिपबोर्ड पर रखने के लिए **कनेक्शन कॉपी करें** पर क्लिक करें। इसे उस एक अनुरोध के लिए सर्वर-साइड पर डिक्रिप्ट किया जाता है और इसे कभी भी पेज पर नहीं छापा जाता, इसलिए स्क्रीन शेयर और स्क्रीनशॉट से यह लीक नहीं होता। हर बार जब इसे प्रकट किया जाता है, तो यह साइट के ऑडिट ट्रेल में दर्ज होता है और [साइट गतिविधि लॉग](https://support.kapsulehost.com/hi-in/site-activity-log) में दिखाई देता है।

यह स्ट्रिंग प्रत्येक इंजन के लिए सामान्य URL रूप में होती है, जिसमें इस साइट के लिए बनाए गए होस्ट, पोर्ट, उपयोगकर्ता, पासवर्ड और डेटाबेस नाम शामिल होते हैं।

## इसे अपने एप्लिकेशन में उपयोग करना

कनेक्शन स्ट्रिंग को वहाँ पेस्ट करें जहाँ भी आपका एप्लिकेशन अपना कॉन्फ़िगरेशन पढ़ता है। किसी Node.js साइट पर, इसके लिए सही जगह [Secrets](https://support.kapsulehost.com/hi-in/site-secrets) टैब है, **production** वातावरण में, `DATABASE_URL` या `REDIS_URL` जैसी किसी कुंजी के अंतर्गत।

> **Warning:** कनेक्शन स्ट्रिंग को किसी ऐसी फ़ाइल में हार्ड-कोड न करें जिसे आप कमिट करते हैं। इसमें एक सक्रिय पासवर्ड होता है। अगर यह किसी git रिमोट तक पहुँच जाता है, तो इसे लीक हुआ मानकर ही इलाज करना होगा, और असली समाधान केवल यही है कि addon को हटाकर एक नया अनुरोध किया जाए, क्योंकि पैनल से क्रेडेंशियल को उसी जगह रोटेट नहीं किया जा सकता।

## Addon हटाना

पंक्ति पर **Delete** पर क्लिक करें। KPanel आपसे पुष्टि माँगता है और यह साफ़-साफ़ बताता है कि क्या होगा: इससे प्रबंधित डेटाबेस हट जाता है, और डेटा अप्राप्य हो जाता है।

पंक्ति तुरंत हटाई गई के रूप में चिह्नित हो जाती है और प्रोविज़नर अपने अगले पास में अंतर्निहित डेटाबेस और उपयोगकर्ता को हटा देता है। इस हटाने की प्रक्रिया के हिस्से के रूप में मौजूदा कनेक्शन समाप्त कर दिए जाते हैं।

> **Important:** हटाने पर किसी प्रबंधित addon का कोई बैकअप नहीं लिया जाता है, और कोई पूर्ववत (undo) विकल्प नहीं है। अगर इसमें कुछ भी ऐसा है जिसे आप रखना चाहते हैं, तो जब तक addon सक्रिय है और कनेक्शन स्ट्रिंग अभी भी काम कर रही है, तब तक पहले इसे `pg_dump` या `redis-cli --rdb` के साथ डंप कर लें।

## विकल्पों के बीच चुनाव करना

**PostgreSQL का उपयोग करें** जब आपके एप्लिकेशन को एक रिलेशनल डेटाबेस की आवश्यकता हो और वह Postgres के विरुद्ध लिखा गया हो: मज़बूत प्रतिबंध, ट्रांज़ैक्शन, JSON कॉलम, और पूर्ण-पाठ खोज जिसे अन्यथा आपको अलग से जोड़ना पड़ता।

**Redis का उपयोग करें** उन चीज़ों के लिए जिन्हें गायब होने की अनुमति है: कैश्ड फ्रैगमेंट, रेट-लिमिट काउंटर, सेशन स्टोरेज, और जॉब कतारें। इसे तेज़ और अस्थिर मानें, न कि रिकॉर्ड की एक प्रणाली के रूप में।

**अंतर्निहित MySQL डेटाबेस का उपयोग करें** WordPress के लिए और किसी भी ऐसी चीज़ के लिए जो पहले से ही MySQL के विरुद्ध लिखी गई है। किसी WordPress साइट में Postgres addon जोड़ने से कुछ भी उपयोगी नहीं होता, क्योंकि WordPress इससे बात नहीं कर सकता।

## समस्या निवारण

**Addon लंबे समय से PENDING है।** प्रोविज़नर तुरंत नहीं बल्कि एक शेड्यूल पर चलता है। पेज को खुला छोड़ दें क्योंकि यह अपने आप रिफ्रेश होता है, और बाद में वापस जाँचें। अगर कुछ पास के बाद भी यह आगे नहीं बढ़ा है, तो साइट डोमेन और addon प्रकार के साथ एक सपोर्ट टिकट खोलें।

**Provisioning FAILED हो गई।** पंक्ति पर त्रुटि पढ़ें। विफल addon को हटाएँ और इसे फिर से अनुरोध करें, जो सुरक्षित है: एक विफल पंक्ति के पीछे कभी भी कोई सक्रिय डेटाबेस नहीं था।

**Copy connection कुछ नहीं करता।** कुछ ब्राउज़र क्लिपबोर्ड राइट्स को तब ब्लॉक कर देते हैं जब टैब फ़ोकस में न हो। पहले पेज पर क्लिक करें, फिर बटन पर फिर से क्लिक करें।

**एप्लिकेशन कनेक्ट नहीं हो पा रहा है।** तीन चीज़ें क्रम से जाँचें: कि addon की स्थिति **ACTIVE** है, कि आपने स्ट्रिंग को फिर से टाइप करने के बजाय कॉपी किया है, और कि आपका एप्लिकेशन उस मान को पढ़ रहा है जो आपने वास्तव में सेट किया है, न कि किसी पिछले डिप्लॉय से बचे पुराने मान को। आमतौर पर नया कॉन्फ़िगरेशन लागू होने से पहले एक रीस्टार्ट की आवश्यकता होती है।

**Redeploy के बाद कनेक्शन अस्वीकार किए जा रहे हैं।** पुष्टि करें कि आपके कॉन्फ़िगरेशन में कनेक्शन स्ट्रिंग अभी भी इस पेज पर दी गई स्ट्रिंग से मेल खाती है। किसी addon को हटाने और फिर से अनुरोध करने से एक नया उपयोगकर्ता और एक नया पासवर्ड बनता है, इसलिए पुरानी स्ट्रिंग काम नहीं करेगी।

## आगे कहाँ जाएँ

- [किसी साइट के लिए ऐप सीक्रेट्स स्टोर करना](https://support.kapsulehost.com/hi-in/site-secrets), कनेक्शन स्ट्रिंग को रखने की सही जगह।
- [SSH टनल के ज़रिए अपने डेटाबेस से कनेक्ट करना](https://support.kapsulehost.com/hi-in/database-ssh-tunnel) अंतर्निहित MySQL डेटाबेस के लिए।
- [साइट सेटिंग्स](https://support.kapsulehost.com/hi-in/site-settings) बाकी साइट-स्तरीय कॉन्फ़िगरेशन के लिए।
