envshare.dev হলো একটি ওপেন সোর্স প্রজেক্ট যা ডেভেলপারদের কাউকে भी সিকিউরলি এনভায়রনমেন্ট ভেরিয়েবল শেয়ার করতে দেয়। আপনি আপনার .env ফাইল আপলোড করতে পারেন বা আপনার এনভায়রনমেন্ট ভেরিয়েবল টাইপ ইন করতে পারেন এবং সেগুলো ডেটাবেসে সংরক্ষণের আগে এনক্রিপ্ট হবে। আপনি তারপর লিংকটি কাউকে শেয়ার করতে পারেন এবং সে এনভায়রনমেন্ট ভেরিয়েবলগুলো ডিক্রিপ্ট করতে পারবে।
EnvShare ব্যবহার করা ফ্রি এবং ওপেন সোর্স। আপনি GitHub-এ কোড পাবেন।
ফিচারসমূহ
- শেয়ারযোগ্য লিংক: একটি লিংক পাঠিয়ে আপনার এনভায়রনমেন্ট ভেরিয়েবল সিকিউরলি শেয়ার করুন
- এন্ড-টু-এন্ড এনক্রিপশন: আপনার ডেটা সংরক্ষণের আগে AES এনক্রিপশন ব্যবহার করে এনক্রিপ্ট করা হয়
- পড়ার সংখ্যা লিমিট করুন: একটি লিংক কতবার পড়া যাবে এবং এনক্রিপ্ট করা যাবে সেটি লিমিট করুন
- অটো এক্সপায়ার: একটি নির্দিষ্ট সময়ের পর লিংক এবং ডেটা অটোমেটিক্যালি এক্সপায়ার এবং ডিলিট হয়
এটি কীভাবে কাজ করে
প্রতিবার আপনি আপনার এনভায়রনমেন্ট ভেরিয়েবল শেয়ার করতে চান, ব্রাউজারে একটি নতুন র্যান্ডম এনক্রিপশন কী জেনারেট হয়। আপনার সেনসিটিভ ডেটা AES ব্যবহার করে এনক্রিপ্ট হয় এবং তারপর রেডিসে সংরক্ষিত হয়।
তারপর, একটি ইউনিক ডকুমেন্ট আইডি এনক্রিপশন কীসহ কম্বাইন হয় একটি শেয়ারযোগ্য লিংক তৈরি করতে, যা আপনি আপনার ডেটা অ্যাক্সেস এবং ডিক্রিপ্ট করতে ব্যবহার করতে পারেন।

ডেটা
EnvShare এনক্রিপ্টেড এনভায়রনমেন্ট ভেরিয়েবল সংরক্ষণ করতে রেডিস ব্যবহার করে। রেডিস চমৎকার কারণ এটি একটি দ্রুত কী-ভ্যালু স্টোর হিসেবে ব্যবহার করা যায়, কিন্তু আরও জটিল ডেটা স্ট্রাকচার ও অফার করে যেমন লিস্ট, সেট, এবং হ্যাশ। এটি অটোমেটিক্যালি এক্সপায়ার্ড কী রিমুভ করে, যা আমাদের ইউজ কেসের জন্য পেরফেক্ট।
ডেটা একটি রেডিস হ্যাশে নিচের স্ট্রাকচার দিয়ে সংরক্ষিত হয়:
{
"remainingReads": 20, // অপশনাল, লিংকটি কতবার পড়া যাবে
"encrypted": "...", // এনক্রিপ্টেড এনভায়রনমেন্ট ভেরিয়েবল
"iv": "..." // AES-CBC-এর জন্য ইনিশিয়ালাইজেশন ভেক্টর
}
একটি হ্যাশ ব্যবহার করে আমরা এনক্রিপ্টেড ডেটার সাথে কিছু মেটাডেটা সংরক্ষণ করতে পারি এবং HINCRBY ব্যবহার করে রিমেইনিং রিডস অ্যাটমিকভাবে ডিক্রিমেন্ট করতে পারি। রেডিস অবিশ্বাস্যভাবে ফ্লেক্সিবল এবং নতুন আইডিয়া দ্রুত ইটারেট এবং বাস্তবায়ন করতে দেয়। উদাহরণস্বরূপ ভবিষ্যতে আমরা হয়তো একটি অ্যাক্সেস লগ যোগ করতে চাই। একটি সর্টেড সেট এটির জন্য একটি চমৎকার ফিট হবে।
একমাত্র সমস্যা হলো রেডিস সাধারণত শুধু TCP-ওভার উপলব্ধ, যা আমাদের Edge-ফাংশনগুলোর সাথে কাজ করে না। خوشকিসমتیে, আপস্ট্যাশ একটি রেডিস API অফার করে যা HTTP-ওভার রেডিস অ্যাক্সেস করতে ব্যবহার করা যায়। এটি ঠিক সেটিই যা EnvShare-এর জন্য দরকার। আপস্ট্যাশ একটি ফ্রি রেডিস ডেটাবেস অফার করে প্রতিদিন ১০,০০০ রিকোয়েস্টসহ। এটি আমাদের জন্য যথেষ্ট বেশি, এবং আপনি যদি EnvShare সেলফ-হোস্ট করতে চান, আপনি এখানে একটি ফ্রি অ্যাকাউন্ট পেতে পারেন। সেলফ-হোস্টিং গাইড এখানে চেক করুন।
আমাদের Edge-ফাংশনগুলিতে রেডিস সেটআপ করা সহজ। আমাদের শুধু একটি ডেটাবেস তৈরি করতে হবে এবং @upstash/redis ইনস্টল করতে হবে।
আমাদের Edge-ফাংশনে আমরা তখন ডেটা সংরক্ষণ করতে পারি:
/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 এবং আপস্ট্যাশ রেডিস দিয়ে শুরু করা যায়। আশা করি আপনার পছন্দ হয়েছে এবং উপযোগী লাগল। আপনার যেকোনো প্রশ্ন বা ফিডব্যাক থাকলে, টুইটারে আমার সাথে যোগাযোগ করতে দ্বিধা করবেন না।
প্রাসঙ্গিক লিংক:
- EnvShare
- GitHub
- Deployment Guide