
أداة CLI آمنة لإدارة أسرار البيئة باستخدام مخازن بيانات الاعتماد الأصلية لنظام التشغيل (macOS Keychain, Linux Secret Service, Windows Credential Manager)
إدارة آمنة للأسرار البيئية باستخدام مخازن بيانات نظام التشغيل الأصلية.

myapp.dev، stripe-api.prod، work.staging)cmd (بحث، قائمة، تشغيل، حذف).env (مع تتبع الأجيال عبر audit)eval $(envsec env)).env (مع اكتشاف التعارضات)envsec tui) لإدارة الأسرار دون حفظ الأوامرهذا مستودع أحادي يحتوي على الحزم التالية:
| الحزمة | الوصف | npm |
|---|---|---|
envsec | أداة سطر الأوامر لإدارة الأسرار | |
@envsec/sdk | SDK لـ Node.js / Bun لتحميل الأسرار برمجيًا | |
@envsec/core | المحرك الأساسي — محولات مخزن بيانات نظام التشغيل + قاعدة بيانات البيانات الوصفية | |
@envsec/tui | واجهة طرفية تفاعلية لإدارة الأسرار |
للوصول البرمجي إلى الأسرار من Node.js أو Bun، استخدم @envsec/sdk:```bash
npm install @envsec/sdk
بعد اكتمال التثبيت، يمكنك التحقق من التثبيت عن طريق تشغيل الأمر التالي:
```bash
toolname --version
يجب أن يظهر إصدار الأداة في الإخراج. إذا واجهت أي أخطاء، فتأكد من تثبيت جميع المتطلبات الأساسية بشكل صحيح.
لاستخدام الأداة، اتبع الخطوات التالية:
toolname [options] <target>
| الخيار | الوصف |
|---|---|
-h, --help | عرض رسالة المساعدة والخروج |
-v, --verbose | تفعيل وضع الإخراج المفصل |
-o, --output <file> | حفظ النتائج في ملف محدد |
-t, --timeout <seconds> | تعيين مهلة زمنية للطلبات (الافتراضي: 30) |
فيما يلي بعض الأمثلة على كيفية استخدام الأداة:
# فحص هدف أساسي
toolname example.com
# فحص مع إخراج مفصل
toolname -v example.com
# حفظ النتائج في ملف
toolname -o results.txt example.com
# تعيين مهلة زمنية مخصصة
toolname -t 60 example.com
يمكن تكوين الأداة عبر ملف إعدادات يقع في المسار التالي:
~/.config/toolname/config.yaml
إذا لم يكن الملف موجودًا، يمكنك إنشاؤه يدويًا. فيما يلي مثال على بنية ملف الإعدادات:
# إعدادات الأداة
timeout: 30
threads: 10
user_agent: "Mozilla/5.0 (compatible; ToolName/1.0)"
proxy: ""
الحل: تأكد من أن مسار التثبيت مضاف إلى متغير البيئة PATH. يمكنك التحقق من ذلك عن طريق تشغيل:
echo $PATH
إذا لم يكن المسار موجودًا، أضفه يدويًا:
export PATH=$PATH:/path/to/toolname/bin
الحل: تحقق من اتصال الإنترنت لديك، وتأكد من أن جدار الحماية لا يحظر الاتصالات الصادرة. إذا كنت تستخدم وكيلًا، فتأكد من ضبط إعدادات الوكيل بشكل صحيح في ملف التكوين.
الحل: قم بتشغيل الأداة مع خيار -v للحصول على إخراج مفصل، مما يساعد في تحديد مصدر المشكلة. يمكنك أيضًا التحقق من سجلات الأداة في الدليل التالي:
~/.local/share/toolname/logs/
نرحب بالمساهمات في تطوير هذه الأداة! إذا كنت ترغب في المساهمة، يرجى اتباع الخطوات التالية:
هذه الأداة مرخصة بموجب رخصة MIT. راجع ملف LICENSE للحصول على التفاصيل الكاملة.
تم تطوير هذه الأداة بواسطة اسم المطور مع مساهمات من مجتمع المصادر المفتوحة. شكر خاص لجميع المساهمين الذين ساعدوا في تحسين هذه الأداة.
لمزيد من المعلومات، يرجى زيارة صفحة المشروع أو الانضمام إلى خادم الديسكورد الخاص بنا.```typescript import { loadSecrets } from "@envsec/sdk";
// Load and inject into process.env await loadSecrets({ context: "myapp.dev", inject: true });
// Or use the client for full control import { EnvsecClient } from "@envsec/sdk"; const client = await EnvsecClient.create({ context: "myapp.dev" }); const apiKey = await client.get("api.key"); await client.close();
انظر إلى [وثائق SDK الكاملة](https://github.com/davidnussio/envsec/blob/main/packages/sdk/README.md) لجميع واجهات برمجة التطبيقات، ودعم السياقات المتعددة، والخيارات.
## المتطلبات
- Node.js >= 22
### macOS
لا توجد تبعيات إضافية. يستخدم Keychain المدمج عبر أداة سطر الأوامر `security`.
### Linux
يتطلب `libsecret-tools` (الذي يوفر أمر `secret-tool`)، والذي يتواصل مع GNOME Keyring أو KDE Wallet أو أي مزود خدمة Secret Service عبر D-Bus.```bash
# Debian / Ubuntu
sudo apt install libsecret-tools
# Fedora
sudo dnf install libsecret
# Arch
sudo pacman -S libsecret
يجب أن تكون جلسة D-Bus قيد التشغيل وخدمة keyring (مثل gnome-keyring-daemon) نشطة. معظم بيئات سطح المكتب تتعامل مع هذا تلقائيًا.
لا توجد تبعيات إضافية. يستخدم Windows Credential Manager المدمج عبر cmdkey وPowerShell.
brew tap davidnussio/homebrew-tap brew install envsec
### npm```bash
npm install -g envsec
npx envsec
### mise```bash
mise use -g npm:envsec
تتطلب معظم الأوامر تحديد سياق باستخدام --context (أو -c).
السياق هو تسمية حرة لتجميع الأسرار — على سبيل المثال myapp.dev، stripe-api.prod، work.staging.
هذه الخيارات متاحة على جميع الأوامر:
--context, -c — اسم السياق (مثل myapp.dev، stripe-api.prod). يقرأ أيضًا متغير البيئة ENVSEC_CONTEXT--debug, -d — تفعيل تسجيل التصحيح--json — الإخراج بتنسيق JSON للبرمجة النصية--db — مسار ملف قاعدة بيانات SQLite (الافتراضي: ~/.envsec/store.sqlite). يقرأ أيضًا متغير البيئة ENVSEC_DBافتراضيًا، يتم تخزين البيانات الوصفية في ~/.envsec/store.sqlite. يمكنك تجاوز ذلك باستخدام --db أو متغير البيئة ENVSEC_DB:```bash
envsec --db ./local-store.sqlite -c myapp.dev list
export ENVSEC_DB=/shared/team/envsec.sqlite envsec -c myapp.dev list
العلامة `--db` لها الأولوية على `ENVSEC_DB`. تشمل حالات الاستخدام قواعد بيانات خاصة بالمشروع، وقواعد بيانات مشتركة بين الفريق على محركات أقراص الشبكة، وCI/CD مع تخزين مؤقت.
### إضافة سرّ
قم بتخزين سرّ في مخزن بيانات الاعتماد الخاص بنظام التشغيل.