عن المشروع
# نظرة عامة على RelayAB
RelayAB هو بوابة API للذكاء الاصطناعي (محطة ترحيل) ذاتية الاستضافة، تهدف إلى مشاركة مفاتيح API لخدمات الذكاء الاصطناعي upstream بشكل آمن وقابل للتحكم مع عدد قليل من المستخدمين، مع توفير إدارة دقيقة للصلاحيات والاستخدام. يدعم النشر بنقرة واحدة على Vercel، ويتوافق مع بروتوكولات API الخاصة بـ OpenAI وAnthropic.
## الوظائف الأساسية
- **تعدد المستخدمين والأدوار**: يدعم دورين: المدير (admin) والمستخدم العادي (user)، وتُخزَّن كلمات مرور المستخدمين باستخدام تجزئة bcrypt أحادية الاتجاه.
- **إدارة حصص النقاط**: يمكن للمدير تخصيص إجمالي النقاط والنماذج المتاحة لكل حساب، وتتشارك جميع مفاتيح API التابعة للحساب هذه النقاط، وعند نفادها تتوقف جميعها.
- **الخدمة الذاتية للمستخدمين**: يمكن للمستخدمين العاديين إنشاء مفاتيح API وإعادة تسميتها وتمكينها/تعطيلها أو حذفها بأنفسهم من لوحة التحكم، كما يمكنهم تعديل كلمات المرور بأنفسهم.
- **تحكم دقيق في المفاتيح**: يمكن لكل مستخدم إنشاء عدة مفاتيح API، ويمكن تكوين كل مفتاح بشكل مستقل من حيث تاريخ الانتهاء وحالة التمكين وقائمة النماذج المسموحة (يمكن فقط تضييقها بناءً على القائمة المسموحة للحساب).
- **بروتوكولات متوافقة**: يدعم بروتوكولي OpenAI Chat Completions وAnthropic Messages، ويدعم تعيين نماذج العميل إلى النماذج الفعلية upstream.
- **تخزين آمن**: تُشفَّر مفاتيح المزود upstream باستخدام AES-256-GCM وتُخزَّن في Redis، وفقدان المفتاح الرئيسي سيؤدي إلى عدم إمكانية الوصول إلى البيانات بشكل دائم.
- **واجهة متعددة اللغات**: الصينية هي اللغة الافتراضية، مع دعم اللغة الإنجليزية، ويمكن التبديل بنقرة واحدة في التذييل.
- **صفحة توثيق سهلة الاستخدام**: توفر عناوين واجهة قابلة للنسخ وأمثلة أكواد متوافقة مع OpenAI/Anthropic.
## الحزمة التقنية
- **الإطار**: Next.js 15 App Router + React 19 + TypeScript 5
- **تخزين البيانات**: Upstash for Redis (يمكن تثبيته بنقرة واحدة عبر Vercel Marketplace)
- **المصادقة**: iron-session 8 + bcryptjs (عامل العمل 12)
- **التشفير**: AES-256-GCM + bcryptjs
- **تكامل الذكاء الاصطناعي upstream**: Vercel AI SDK
- **الاختبار**: Vitest + Playwright
## البدء السريع
1. **تثبيت الاعتماديات**: `pnpm install`
2. **إعداد متغيرات البيئة**: انسخ `.env.example` إلى `.env.local`، ويكفي تعيين `RELAY_AUTH` (كلمة المرور الرئيسية، وهي أيضًا كلمة مرور تسجيل دخول المدير). سيتم حقن متغيرات Upstash تلقائيًا على Vercel.
3. **تشغيل خادم التطوير**: `pnpm dev`، ثم زيارة `http://localhost:3000`.
4. **تسجيل الدخول**: عند التشغيل الأول سيتم إنشاء حساب المدير تلقائيًا، واسم المستخدم الافتراضي هو `admin`، وكلمة المرور هي قيمة `RELAY_AUTH`.
## النشر على Vercel
يوفر المشروع زر نشر بنقرة واحدة، وعند النشر يكفي ملء متغير البيئة `RELAY_AUTH`. بعد نجاح النشر، قم بتثبيت قاعدة بيانات Upstash عبر Vercel Marketplace، ثم أعد النشر (Redeploy) ليصبح ساري المفعول.
## نقاط الأمان
- تُخزَّن كلمات مرور المستخدمين باستخدام تجزئة bcrypt أحادية الاتجاه، ولا يمكن استرجاع النص الأصلي.
- تُخزَّن مفاتيح API الخاصة بالعملاء كقيم تجزئة SHA-256 فقط، ويُعاد النص الواضح مرة واحدة فقط عند الإنشاء.
- تُخزَّن مفاتيح المزود upstream مشفرة باستخدام AES-256-GCM، وفقدان المفتاح الرئيسي يعني عدم إمكانية الاسترداد.
- تُشفَّر ملفات تعريف الارتباط للجلسات باستخدام iron-session، مع تعيين خصائص HttpOnly وSecure وSameSite=Lax.
## التوثيق والتشغيل
يوفر المشروع توثيقًا مفصلاً للهندسة المعمارية ونموذج البيانات ومسارات API والاختبار والنشر. كما يتضمن سكربتات تشغيل مثل bootstrap-admin وreset-password وrotate-key وlist-usage وغيرها من الأوامر.
## الترخيص
MIT
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.