गाइड

Environment Variables और Secrets क्या हैं? एक सरल गाइड

Environment variable एक नामित सेटिंग है — जैसे DATABASE_URL या STRIPE_SECRET_KEY — जो आपके ऐप को चलते समय दी जाती है, न कि कोड में लिखी जाती है। Secret एक environment variable है जिसकी value निजी रहनी चाहिए: एक API key, एक password, एक signing key। इन values को कोड से बाहर रखने का मतलब है कि आप ऐप में बदलाव किए बिना इन्हें बदल सकते हैं, टेस्टिंग और असली ग्राहकों के लिए अलग-अलग values इस्तेमाल कर सकते हैं, और कोड शेयर या publish करते समय इन्हें लीक होने से रोक सकते हैं।

AI से बनाते समय यह क्यों मायने रखता है

जैसे ही आपका ऐप किसी दूसरी सेवा के साथ कुछ उपयोगी काम करता है — पेमेंट लेना, email भेजना, AI model को कॉल करना — उसे एक key चाहिए। AI app builders इन keys को नियमित रूप से माँगते हैं, और यह तय करता है कि key कहाँ जाती है कि आपका ऐप सुरक्षित है या नहीं।

AI से बने ऐप्स में दो चीज़ें अक्सर गलत हो जाती हैं:

  • Key को chat या कोड में पेस्ट कर दिया जाता है। फिर वह chat history, project files और किसी भी export या repository में रह जाती है। जो भी उसे देखे, वह आपके account का इस्तेमाल कर सकता है।
  • Key ब्राउज़र में इस्तेमाल होती है। अगर Stripe या OpenAI को कॉल करने वाला कोड page में चलता है, तो key हर विज़िटर तक पहुँचती है। लोग देखते हैं — और automated scanners लगातार exposed keys खोजते रहते हैं।

Environment variables को समझने से आप दोनों को पहचान सकते हैं, और उनका समाधान माँग सकते हैं।

रोज़मर्रा की मिसाल: होटल का सेफ़

आपके ऐप का कोड होटल के कमरे जैसा है। मेहमान (और सफ़ाईकर्मी, और जिसे भी आप key card दें) उसमें से गुज़रते हैं। आप अपना पासपोर्ट मेज़ पर नहीं छोड़ते।

Environment variables कमरे में रखे सेफ़ जैसे हैं। कमरे को पता है कि सेफ़ है और ज़रूरत पड़ने पर उसे कैसे खोलना है, पर पासपोर्ट कहीं पड़ा नहीं होता। और अगर आप एक कमरे से दूसरे कमरे में जाते हैं — अपने टेस्ट setup से अपनी लाइव साइट पर — तो आप उस कमरे के सेफ़ में दूसरा पासपोर्ट रख देते हैं, बिना कमरा दोबारा सजाए।

यह कैसे काम करता है

आपका कोड एक नाम की ओर इशारा करता है, किसी value की ओर नहीं। सर्वर पर JavaScript में यह कुछ ऐसा दिखता है: process.env.STRIPE_SECRET_KEY। जब ऐप शुरू होता है, तो जिस platform पर वह चल रहा है, वह उस नाम के लिए value भर देता है। Platform की settings में value बदलें, restart या redeploy करें, और ऐप नई value इस्तेमाल करने लगता है — कोड बदलने की ज़रूरत नहीं।

Values कहाँ से आती हैं, यह इस पर निर्भर है कि ऐप कहाँ चलता है:

कहाँ चलता हैValues कहाँ रखी जाती हैं
डेवलपर के laptop परएक local फ़ाइल, जो आम तौर पर .env कहलाती है और जिसे git में कभी commit नहीं करना चाहिए
AI builder के preview मेंप्रोजेक्ट का secrets या settings panel
hosting platform परउस platform की environment variables settings
GitHub Actions या दूसरे automation मेंउस सेवा का अपना encrypted secrets store

Public बनाम secret variables

हर environment variable secret नहीं होती। इन्हें दो समूहों में बाँटना मददगार है:

प्रकारउदाहरणक्या ब्राउज़र इसे देख सकता है?
Public configurationसाइट का नाम, public analytics ID, Stripe का publishable key, feature switchesहाँ, यह ठीक है
SecretsStripe का secret key, OpenAI या Anthropic API key, database connection string, email provider key, webhook signing secretकभी नहीं

Web frameworks इस बँटवारे को साफ़ तौर पर दिखाते हैं। Vite में, केवल वे variables browser कोड में शामिल होते हैं जिनके नाम VITE_ से शुरू होते हैं; Next.js में prefix NEXT_PUBLIC_ है। यह एक सुरक्षा व्यवस्था है: इन prefixes वाली हर चीज़ उन फ़ाइलों में पहुँचती है जिन्हें हर विज़िटर डाउनलोड करता है, इसलिए किसी secret को कभी ऐसा prefix नहीं मिलना चाहिए।

एक उदाहरण: AI summary बटन

आप चाहते हैं कि एक "Summarise this note" बटन AI model को कॉल करे।

असुरक्षित तरीका: बटन का कोड, जो ब्राउज़र में चलता है, सीधे AI provider को कॉल करता है और उसमें API key लिखी होती है। Preview में यह काम करता है। लेकिन इसका मतलब है कि कोई भी browser के developer tools खोलकर key कॉपी कर सकता है और आपके account पर बिल बढ़ा सकता है।

सुरक्षित तरीका:

  1. आप AI provider पर key बनाते हैं और उसे अपनी project settings में OPENAI_API_KEY (या ऐसे किसी नाम) से secret के रूप में रखते हैं।
  2. Backend में एक route होता है, POST /api/summarise, जो process.env.OPENAI_API_KEY पढ़ता है, जाँचता है कि user logged in है, और provider को कॉल करता है।
  3. बटन provider की बजाय आपके route को कॉल करता है। ब्राउज़र को key कभी नहीं दिखती।
  4. आप वही secret publish किए गए ऐप की settings में जोड़ते हैं और redeploy करते हैं, ताकि लाइव साइट पर भी वह हो।

यह पैटर्न — ब्राउज़र आपके सर्वर को कॉल करता है, सर्वर key रखता है और सेवा को कॉल करता है — पेमेंट, email, maps और हर दूसरी paid API पर लागू होता है। AI के मामले को गहराई से समझने के लिए LLM APIs इस्तेमाल करने की गाइड पढ़ें।

मुख्य शब्द

  • .env फ़ाइल: NAME=value लाइनों की एक text फ़ाइल, जो local development में इस्तेमाल होती है। इसे .gitignore में रखें ताकि यह commit न हो।
  • .env.example: इसकी एक कॉपी जिसमें नाम होते हैं पर असली values नहीं, और जिसे commit किया जाता है ताकि दूसरों को पता रहे कि कौन सी variables सेट करनी हैं।
  • Rotate: किसी secret को नए से बदलना और पुराने को revoke करना।
  • Scope / permissions: कई providers आपको ऐसी keys बनाने देते हैं जो केवल कुछ काम कर सकें। केवल email भेजने वाली key, वह सब कुछ कर सकने वाली key से कम खतरनाक है।
  • Test बनाम live keys: Stripe जैसे providers testing और असली पैसे के लिए अलग keys देते हैं। लॉन्च तक test keys इस्तेमाल करें।
  • Signing secret: वह secret जिससे जाँचा जाता है कि कोई message, जैसे webhook, सच में भेजने वाले से आया है।

आम गलतियाँ और गलतफ़हमियाँ

  • "मेरी repository private है, इसलिए उसमें keys रखना ठीक है।" Private repositories भी share, fork, export और laptops पर clone होती हैं। Keys वहाँ भी नहीं होनी चाहिए। अगर आप प्रोजेक्ट को GitHub से जोड़ते हैं, तो जाँचें कि उसमें कोई .env फ़ाइल शामिल न हो।
  • "मैंने उसे मिटा दिया, तो वह गई।" Git history रखता है, और chat logs संदेश रखते हैं। अगर कोई key कभी exposed हुई थी, तो उसे rotate करें।
  • Secret पर public prefix लगाना। VITE_OPENAI_KEY आपकी key को browser bundle में डाल देता है।
  • Redeploy करना भूल जाना। Settings में variable बदलने का असर आम तौर पर तभी होता है जब ऐप restart हो या फिर से publish हो।
  • हर चीज़ के लिए एक ही key। Test और live के लिए, और हर ऐप के लिए अलग keys होने से एक को revoke करने पर बाकी नहीं टूटते।
  • कोई खर्च सीमा नहीं। Paid APIs के लिए, provider के dashboard में budget या limit सेट करें, ताकि key लीक होने पर नुकसान सीमित रहे।

अपने AI builder से क्या माँगें

  • "STRIPE_SECRET_KEY नाम के environment variable से Stripe secret key पढ़ें। उसे केवल सर्वर पर इस्तेमाल करें।"
  • "पक्का करें कि कोई secret client-side कोड में इस्तेमाल न हो और उसे VITE_ / NEXT_PUBLIC_ prefix न मिले।"
  • "एक .env.example बनाएँ जिसमें ऐप को चाहिए हर variable की सूची हो, बिना values के, और पक्का करें कि .env git-ignored हो।"
  • "Built frontend फ़ाइलों में किसी भी ऐसी string को जाँचें जो API key जैसी दिखती है।"

AI से बने ऐप्स के लिए हमारी security checklist लॉन्च से पहले की दूसरी जाँचों के साथ secrets को भी कवर करती है।

Mythex पर secrets

Mythex पर secrets प्रोजेक्ट के environment variables हैं, जो live preview sandbox और आपके publish किए गए ऐप, दोनों में डाले जाते हैं। आप इन्हें project settings → Secrets में जोड़ते हैं या chat में /secrets से। जब agent को किसी key की ज़रूरत होती है, तो वह chat में एक secrets card दिखाता है, ताकि value एक form field में जाए, chat transcript में नहीं। अगर आप live ऐप का कोई secret बदलते हैं, तो फिर से publish करें ताकि deploy उसे उठा ले। Project exports में secrets शामिल नहीं होते, और आयात किए गए .env फ़ाइलों से उन्हें हटा दिया जाता है, ताकि आप उन्हें settings में दोबारा जोड़ें। Docs में environment variables और secrets और chat में secrets देखें।

सवाल

Environment variable क्या है?

Environment variable एक नामित सेटिंग है, जैसे STRIPE_SECRET_KEY या DATABASE_URL, जो प्रोग्राम चलने के समय उसे दी जाती है, न कि उसके कोड में लिखी जाती है। इसी कोड को development और production में अलग-अलग मान मिल सकते हैं।

Environment variable और secret में क्या फ़र्क है?

Secret एक ऐसा environment variable है जिसकी value निजी रहनी चाहिए, जैसे API key, database password या webhook signing secret। बाकी environment variables, जैसे साइट का नाम या कोई feature switch, सार्वजनिक हो सकती हैं।

क्या API keys को frontend में डालना सुरक्षित है?

नहीं। Frontend कोड में जो भी है, वह हर विज़िटर के ब्राउज़र में डाउनलोड होता है और पढ़ा जा सकता है। Secret keys केवल सर्वर पर इस्तेमाल होनी चाहिए, और ब्राउज़र आपके सर्वर को कॉल करे, जो फिर provider को कॉल करे।

अगर मेरी API key लीक हो जाए तो क्या करूँ?

उसे तुरंत provider के यहाँ revoke या rotate करें, नई key बनाएँ, उसे जहाँ भी आपका ऐप secrets रखता है वहाँ अपडेट करें, और फिर से deploy करें। सिर्फ़ कोड या chat history से key हटाना काफ़ी नहीं है, क्योंकि उसकी कॉपियाँ पहले ही मौजूद हो सकती हैं।

Mythex · Pricing · AI से कुछ भी बनाएँ · वेबसाइट और ऐप टेम्पलेट · Mythex की तुलना · AI से ऐप बनाने की शब्दावली · AI से ऐप बनाने के फ्री टूल · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)