# साइट के लिए ऐप सीक्रेट्स स्टोर करना

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

सीक्रेट्स टैब Node.js ऐप को आवश्यक संवेदनशील कॉन्फ़िगरेशन मानों, जैसे API कीज़, सिग्निंग सीक्रेट्स और थर्ड-पार्टी टोकन, के लिए एक एन्क्रिप्टेड स्टोर है, जिसे प्रति एनवायरनमेंट रखा जाता है ताकि आपके प्रोडक्शन क्रेडेंशियल्स और आपके प्रीव्यू क्रेडेंशियल्स कभी आपस में न मिलें।

## सीक्रेट्स कहाँ रहते हैं

**वेबसाइटें** खोलें, साइट पर क्लिक करें, साइट के बाईं ओर के मेनू में **Environment** समूह खोलें, और **सीक्रेट्स** चुनें। टैब का शीर्षक **सीक्रेट्स** होता है।

यह टैब केवल Node.js साइटों पर दिखाई देता है। WordPress, PHP और स्टैटिक साइटें इसे नहीं दिखातीं, क्योंकि उनका कॉन्फ़िगरेशन इसके बजाय डिस्क पर फ़ाइलों में रहता है: WordPress के लिए `wp-config.php`, और एक सादे PHP ऐप के लिए आपका फ्रेमवर्क जो भी पढ़ता है।

![KPanel में Node.js साइट के लिए सीक्रेट्स टैब](https://support.kapsulehost.com/help/screenshots/site-secrets.812e0706.webp)

## मान कैसे सुरक्षित रखे जाते हैं

हर मान डेटाबेस तक पहुँचने से पहले ही एन्क्रिप्ट कर दिया जाता है। कुछ भी पठनीय टेक्स्ट के रूप में संग्रहीत नहीं होता, और सूची दृश्य कभी भी पूरा मान नहीं दिखाता: यह केवल अंतिम चार अक्षरों वाला एक मास्क दिखाता है, ताकि आप किसी भी एक को उजागर किए बिना दो मिलती-जुलती कीज़ के बीच अंतर कर सकें।

प्रत्येक पंक्ति पर इसकी याद दिलाने के लिए एक **Encrypted** पिल होती है। किसी मान को वापस पढ़ना केवल पेज खोलने से होने वाली कोई चीज़ नहीं, बल्कि एक अलग, सुविचारित क्रिया है।

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

## दो एनवायरनमेंट

पेज के शीर्ष पर एक सेगमेंटेड कंट्रोल **production** और **preview** के बीच स्विच करता है। ये कीज़ के पूरी तरह से अलग सेट हैं। प्रोडक्शन में `STRIPE_SECRET_KEY` सेट करने से यह प्रीव्यू में नहीं बनती, और इसे प्रीव्यू से हटाने से प्रोडक्शन प्रभावित नहीं होता।

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

## सीक्रेट जोड़ना या अपडेट करना

1. सेगमेंटेड कंट्रोल से एनवायरनमेंट चुनें।
2. **KEY_NAME** फ़ील्ड में नाम टाइप करें। यह फ़ील्ड टाइप करते समय अपर केस लागू करता है।
3. दूसरी फ़ील्ड में मान डालें। टाइप करते समय यह मास्क किया जाता है।
4. **Set** पर क्लिक करें।

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

### की नाम के नियम

किसी कुंजी की शुरुआत एक कैपिटल अक्षर से होनी चाहिए और उसके बाद कैपिटल अक्षर, अंक और अंडरस्कोर हो सकते हैं, अधिकतम 128 अक्षर तक। `DATABASE_URL`, `API_KEY_V2` और `SENTRY_DSN` सभी मान्य हैं। कोई भी अन्य रूप **Key UPPER_SNAKE_CASE अक्षर/संख्या/अंडरस्कोर होना चाहिए** संदेश के साथ अस्वीकार कर दिया जाता है।

दो अन्य सीमाएँ जानना उपयोगी है:

- कोई मान खाली नहीं हो सकता। खाली मान जमा करने पर **मान आवश्यक है** दिखाई देता है।
- कोई मान 16 KB से अधिक नहीं हो सकता। यह किसी टोकन के लिए पर्याप्त है, लेकिन, मान लीजिए, पूरी सर्टिफिकेट चेन के लिए पर्याप्त नहीं, जो एक सीक्रेट के बजाय किसी फ़ाइल में रखी जानी चाहिए।

## किसी मान को वापस पढ़ना

पंक्ति पर **Copy** पर क्लिक करें। KPanel मान को सर्वर-साइड पर डिक्रिप्ट करता है और इसे सीधे आपके क्लिपबोर्ड पर रख देता है, साथ में एक **मान क्लिपबोर्ड पर कॉपी किया गया** पुष्टिकरण भी। मान स्क्रीन पर नहीं दिखाया जाता, इसलिए स्क्रीन शेयर या कंधे से झाँकने वाला व्यक्ति इसे नहीं देख पाता।

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

> **Tip:** यदि आपको किसी मान को उजागर किए बिना यह जाँचना है कि वह सही है, तो इसके बजाय मास्क की तुलना करें। यह पुष्टि करने के लिए अंतिम चार अक्षर पर्याप्त हैं कि आपके पास सही टोकन है, और वे पहले से ही स्क्रीन पर मौजूद हैं।

## अपने ऐप में सीक्रेट का उपयोग करना

मान को वहाँ कॉपी करें जहाँ भी आपका एप्लिकेशन सर्वर पर अपना कॉन्फ़िगरेशन पढ़ता है। एक Node.js ऐप के लिए यह सामान्यतः आपके प्रोसेस मैनेजर द्वारा सेट किया गया एक एनवायरनमेंट वेरिएबल होता है, या ऐप रूट में एक `.env` फ़ाइल जिसे आपका कोड स्टार्ट-अप पर लोड करता है।

> **Warning:** उस फ़ाइल को अपने रिपॉज़िटरी में कमिट न करें। इसे बनाने से पहले `.env` को `.gitignore` में जोड़ें। जो सीक्रेट किसी git रिमोट पर पुश हो चुका है, उसे लीक हुआ मानकर प्रोवाइडर पर रोटेट किया जाना चाहिए, क्योंकि फ़ाइल हटाने के बाद भी यह हिस्ट्री में बना रहता है।

सीक्रेट्स टैब ही मान का आपका आधिकारिक रिकॉर्ड है, जिसे एन्क्रिप्टेड रखा जाता है और ऑडिट किया जाता है, न कि किसी पासवर्ड मैनेजर या मैसेज थ्रेड में लिखा नोट। इसे ही एकमात्र सही स्रोत मानकर रखें: जब आप प्रोवाइडर पर कोई कुंजी रोटेट करें, तो इसे यहाँ भी उसी समय अपडेट करें, ताकि अगली बार डिप्लॉय करने वाले व्यक्ति के पास मौजूदा मान हो।

## सीक्रेट हटाना

पंक्ति पर **Delete** पर क्लिक करें। KPanel **Delete API_TOKEN?** के साथ पुष्टि माँगता है और चेतावनी देता है कि ऐप अपने अगले रीस्टार्ट पर इस मान तक पहुँच खो देगा। इसे वापस लाने (अनडू) का कोई विकल्प नहीं है और कोई प्रति रखी नहीं जाती, इसलिए यदि आपको मान की फिर से आवश्यकता पड़ सकती है, तो पहले इसे कॉपी कर लें।

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

## क्रेडेंशियल को सुरक्षित तरीके से रोटेट करना

सुरक्षित क्रम हमेशा यह है: प्रोवाइडर पर नया क्रेडेंशियल बनाएँ, इसे यहाँ अपडेट करें, डिप्लॉय करें, पुष्टि करें कि ऐप काम कर रहा है, और फिर प्रोवाइडर पर पुराना क्रेडेंशियल निरस्त करें।

इसे उल्टे क्रम में करने से, यानी पहले निरस्त करने से, एक ऐसी अवधि बन जाती है जिसमें चल रहा ऐप एक मृत क्रेडेंशियल को पकड़े रहता है और इसकी आवश्यकता वाली हर रिक्वेस्ट विफल हो जाती है। यदि परिवर्तन जोखिम भरा है, तो पहले एक बैकअप लें ताकि आप एक ज्ञात-सही स्थिति में वापस आ सकें: देखें [बैकअप लेना](https://support.kapsulehost.com/hi-in/taking-a-backup)।

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

**सीक्रेट्स टैब मेनू में नहीं है।** साइट Node.js साइट नहीं है। पेज के शीर्ष पर साइट नाम के बगल में स्टैक पिल जाँचें।

**Set बटन कुछ नहीं करता।** दोनों फ़ील्ड आवश्यक हैं। यदि कोई भी खाली हो, तो बटन **Key + value आवश्यक है** दिखाता है।

**कुंजी अस्वीकृत कर दी गई।** लोअर केस अक्षर, हाइफ़न, डॉट्स और स्पेस की अनुमति नहीं है। `api-key` और `Api_Key` दोनों विफल होते हैं; `API_KEY` सफल होता है।

**कॉपी ने क्लिपबोर्ड पर कुछ भी नहीं डाला।** कुछ ब्राउज़र निष्क्रिय टैब पर क्लिपबोर्ड लेखन को ब्लॉक कर देते हैं। पहले पेज पर क्लिक करें, फिर दोबारा **Copy** पर क्लिक करें।

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

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