envshare.dev एक ओपन सोर्स प्रोजेक्ट है जो डेवलपर्स को किसी के साथ एनवायरनमेंट वेरिएबल को सुरक्षित रूप से साझा करने की अनुमति देता है। आप अपनी .env फाइल अपलोड कर सकते हैं या अपने एनवायरनमेंट वेरिएबल टाइप कर सकते हैं और उन्हें डेटाबेस में संग्रहीत करने से पहले एन्क्रिप्ट किया जाएगा। फिर आप लिंक को किसी के साथ साझा कर सकते हैं और वे एनवायरनमेंट वेरिएबल को डिक्रिप्ट करने में सक्षम होंगे।
EnvShare उपयोग करने के लिए फ्री है और ओपन सोर्स है। आप GitHub पर कोड पा सकते हैं।
विशेषताएं
- शेयरेबल लिंक: एक लिंक भेजकर अपने एनवायरनमेंट वेरिएबल को सुरक्षित रूप से साझा करें
- एंड-टू-एंड एन्क्रिप्शन: आपके डेटा को संग्रहीत करने से पहले AES एन्क्रिप्शन का उपयोग करके एन्क्रिप्ट किया जाता है
- पढ़ने की संख्या सीमित करें: एक लिंक को पढ़े और एन्क्रिप्ट किए जा सकने की संख्या को सीमित करें
- ऑटो एक्सपायर: एक निश्चित समय के बाद लिंक को स्वचालित रूप से समाप्त करें और डेटा हटाएं
यह कैसे काम करता है
हर बार जब आप अपने एनवायरनमेंट वेरिएबल साझा करना चाहते हैं, ब्राउज़र में एक नया रैंडम एन्क्रिप्शन कुंजी उत्पन्न होती है। आपके संवेदनशील डेटा को AES का उपयोग करके एन्क्रिप्ट किया जाता है और फिर Redis में संग्रहीत किया जाता है।
इसके बाद, एक यूनिक डॉक्यूमेंट ID को एन्क्रिप्शन कुंजी के साथ जोड़कर एक शेयरेबल लिंक बनाया जाता है, जिसका उपयोग आप अपने डेटा तक पहुंचने और डिक्रिप्ट करने के लिए कर सकते हैं।

डेटा
EnvShare एनवायरनमेंट वेरिएबल को संग्रहीत करने के लिए Redis का उपयोग करता है। Redis बहुत अच्छा है क्योंकि इसे तेज़ की-वैल्यू स्टोर के रूप में उपयोग किया जा सकता है, लेकिन यह सूचियों, सेट्स, और हैश जैसे अधिक जटिल डेटा संरचनाएं भी प्रदान करता है। यह स्वचालित रूप से एक्सपायर्ड कुंजियों को भी हटा देता है, जो हमारे उपयोग के मामले के लिए एकदम सही है।
डेटा निम्न संरचना के साथ एक Redis हैश में संग्रहीत किया जाता है:
{
"remainingReads": 20, // वैकल्पिक, लिंक को पढ़े जा सकने की संख्या
"encrypted": "...", // एन्क्रिप्टेड एनवायरनमेंट वेरिएबल
"iv": "..." // AES-CBC के लिए इनिशियलाइज़ेशन वेक्टर
}
हैश का उपयोग करके हम एन्क्रिप्टेड डेटा के साथ कुछ मेटाडेटा संग्रहीत कर सकते हैं और HINCRBY के साथ शेष रीड को परमाणु रूप से घटा सकते हैं। Redis अविश्वसनीय रूप से लचीला है और नए विचारों के तेज़ पुनरावृत्ति और कार्यान्वयन की अनुमति देता है। उदाहरण के लिए भविष्य में हम एक्सेस लॉग जैसा कुछ जोड़ना चाह सकते हैं। एक सॉर्टेड सेट इसके लिए एक बढ़िया फिट होगा।
एकमात्र समस्या यह है कि Redis आमतौर पर केवल TCP पर उपलब्ध है, जो हमारे एज-फंक्शन में काम नहीं करता है। सौभाग्य से, Upstash एक Redis API प्रदान करता है जिसका उपयोग Redis को HTTP पर एक्सेस करने के लिए किया जा सकता है। यह वही है जो हमें EnvShare के लिए चाहिए। Upstash प्रतिदिन 10,000 अनुरोधों के साथ एक फ्री Redis डेटाबेस प्रदान करता है। यह हमारे लिए पर्याप्त से अधिक है, और यदि आप EnvShare को स्वयं होस्ट करना चाहते हैं, तो आप यहां एक फ्री अकाउंट प्राप्त कर सकते हैं। सेल्फ-होस्टिंग गाइड यहां देखें
हमारे एज-फंक्शन में Redis सेटअप करना आसान है। हमें बस एक डेटाबेस बनाने और @upstash/redis इंस्टॉल करने की आवश्यकता है।
हमारे एज-फंक्शन में हम तब डेटा संग्रहीत कर सकते हैं:
/api/share.ts
import { Redis } from "@upstash/redis";
const redis = new Redis({
url: "..." // UPSTASH_REDIS_REST_URL
token: "..." // UPSTASH_REDIS_REST_TOKEN
});
await redis.hset(key, {
remainingReads: 20,
encrypted: "...",
iv: "...",
});
समापन
पढ़ने के लिए धन्यवाद! EnvShare एक मजेदार प्रोजेक्ट है जिसे मैंने यह दिखाने के लिए बनाया कि Next.js और Upstash Redis के साथ शुरुआत करना कितना आसान है। मुझे आशा है कि आप इसे पसंद करेंगे और इसे उपयोगी पाएंगे। यदि आपके कोई प्रश्न या प्रतिक्रिया हैं, तो बेझिझक Twitter पर मुझसे संपर्क करें।
प्रासंगिक लिंक:
- EnvShare
- GitHub
- डेप्लॉयमेंट गाइड