Skip to content

تثبيت الخادم

OpenKey Server واجهة مزامنة اختيارية zero-knowledge. يخزّن النص المشفّر فقط حتى تتمكّن من مزامنة الخزائن عبر أجهزتك. كلمات المرور الرئيسية ومفاتيح الخزنة الصريحة لا تغادر العميل أبداً.

المتطلبات

  • Docker و Docker Compose (موصى بهما)، أو Python 3.12+ مع PostgreSQL 16
  • JWT_SECRET قوي (32 حرفاً على الأقل، وليس قيمة نائبة)

التثبيت بـ Docker

bash
cd openkey_server
cp .env.example .env
openssl rand -hex 32   # paste into JWT_SECRET in .env
docker compose up --build -d

عندما يصبح سليماً:

الرابطالغرض
http://localhost:8000قاعدة الواجهة
http://localhost:8000/docsتوثيق OpenAPI
http://localhost:8000/healthفحص الصحة

تُطبَّق ترحيلات المخطط تلقائياً عند إقلاع الواجهة (alembic upgrade head).

إعدادات مهمة

المتغيرملاحظات
JWT_SECRETمطلوب. 32 حرفاً كحد أدنى؛ تُرفض القيم النائبة عند الإقلاع
DATABASE_URLرابط Postgres غير متزامن (Compose يضبطه لخدمة db)
CORS_ORIGINSأصول مفصولة بفواصل — بدون *
ACCESS_TOKEN_EXPIRE_MINUTESJWT وصول قصير العمر (الافتراضي 15)
REFRESH_TOKEN_EXPIRE_DAYSمدة رمز التحديث (الافتراضي 7، يُدوَّر عند الاستخدام)
AUTH_RATE_LIMIT_*حدود لكل عنوان IP على نقاط المصادقة

للإنتاج: ضع الواجهة خلف HTTPS، عيّن JWT_SECRET فريداً، وقيّد CORS_ORIGINS بعملائك. عالق؟ انظر الأسئلة الشائعة.

الإنتاج خلف HTTPS

اعرض reverse proxy فقط للعامة. أبقِ Postgres والـ API على شبكة خاصة (الإعداد الافتراضي لـ Compose مناسب على مضيف واحد).

مثال Caddy (Let’s Encrypt تلقائي):

txt
openkey.example.com {
	reverse_proxy 127.0.0.1:8000
}

مثال nginx:

nginx
server {
	listen 443 ssl http2;
	server_name openkey.example.com;

	# ssl_certificate / ssl_certificate_key … (certbot أو شهادتك)

	location / {
		proxy_pass http://127.0.0.1:8000;
		proxy_set_header Host $host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Forwarded-Proto $scheme;
	}
}

ثم في .env:

bash
CORS_ORIGINS=https://openkey.example.com
# أضف chrome-extension://<id> و moz-extension://<id> إذا استدعى الامتداد الـ API من تلك الأصول

وجّه العملاء إلى https://openkey.example.com (بلا منفذ). تأكد من https://openkey.example.com/health.

نظرة عامة على واجهة البرمجة

OpenAPI التفاعلي: http://localhost:8000/docs على خادم قيد التشغيل. الجداول الكاملة في README لحزمة openkey_server. أبرز النقاط:

المصادقة

الطريقةالمسارملاحظات
POST/auth/registerالحساب الأول — يخزّن auth_hash ومفتاح الخزنة الملفوف والملح ومعلمات KDF
POST/auth/preloginيعيد الملح + معلمات KDF لاشتقاق auth_hash
POST/auth/loginبريد + auth_hash → رموز وصول وتحديث
POST/auth/refreshيدوّر رمز التحديث المعتم
POST/auth/rekeyبعد تغيير كلمة المرور الرئيسية — مفتاح الخزنة يبقى كما هو
POST/auth/deleteإثبات auth_hash مجدداً؛ يحذف ciphertext الخادم فقط
POST/auth/lookup-public-keyبريد → مفتاح هوية عام (لفّ مفاتيح المنظمة/المشاركة)

نقاط المصادقة محدودة المعدل لكل IP. تُجزَّأ رموز التحديث عند التخزين.

المزامنة والمجموعات والإدخالات

POST /sync يدفع/يسحب النص المشفّر بقاعدة آخر كتابة تفوز حسب revision لكل عنصر. الحذف الناعم يصبح tombstones ليعلم الأقران بالإزالة. المجلدات المتداخلة تستخدم parent_uuid للمجموعة.

المرفقات

نص مشفّر فقط. الحد الأقصى 20 MB. فضّل POST /attachments متعدد الأجزاء للرفع؛ GET /attachments/{uuid}/content يبث البايتات المشفّرة.

المنظمات والمشاركات

أسماء المنظمات وحمولات المشاركة تبقى مشفّرة. مشاركات الإدخال تأخذ لقطة للنص المشفّر عند الإنشاء. التفاصيل: المشاركة والمنظمات.

ربط عملائك

وجّه كل عميل إلى نفس رابط الخادم (محلياً: http://localhost:8000، أو رابط HTTPS العام).

تطبيق OpenKey (هاتف / سطح المكتب)

ثبّت تطبيق OpenKey من قنوات التنزيل.

  1. افتح قفل خزنة محلية أو أنشئها بكلمة المرور الرئيسية.
  2. افتح الإعدادات ← البيانات ← خادم مستضاف ذاتياً.
  3. أدخل رابط الخادم (مثال: https://openkey.example.com).
  4. تسجيل (الجهاز الأول) أو تسجيل الدخول (جهاز آخر يملك حساب هذه الخزنة).
  5. اضغط مزامنة الآن عندما تريد سحب/دفع النص المشفّر.

يحتفظ التطبيق بقاعدة بيانات محلية مشفّرة. المزامنة تتبادل نصاً مشفّراً غير شفاف فقط. المزيد: استخدام التطبيق.

امتداد المتصفح

  1. ابنِ وحمّل openkey_extension (npm install && npm run build ثم حمّل dist/) — انظر امتداد المتصفح.
  2. افتح الخيارات وعيّن نفس رابط الخادم.
  3. افتح القفل بنفس البريد + كلمة المرور الرئيسية (الامتداد يستخدم /auth/prelogin ثم login).

جسر سطح المكتب (اختياري): افتح قفل تطبيق OpenKey لسطح المكتب، فعّل الملء التلقائي لتسجيل مضيف المراسلة الأصلي، ثم اختر «استخدام تطبيق سطح المكتب» في الامتداد. يمكن أن يمر الملء/الحفظ عبر التطبيق المفتوح دون فتح قفل منفصل للامتداد.

CLI

bash
openkey config set-server http://localhost:8000
openkey login --email [email protected]
eval $(openkey unlock)
openkey sync

راجع CLI لاكتشاف الأسرار دون خادم (جسر تطبيق سطح المكتب).

قائمة تحقق متعددة الأجهزة

  1. ثبّت الخادم وآمّنه مرة واحدة.
  2. على الجهاز الأول: سجّل + زامن.
  3. على كل جهاز جديد: ثبّت العميل ← عيّن نفس رابط الخادم ← سجّل الدخول بنفس البريد وكلمة المرور الرئيسية ← زامن.
  4. احتفظ بنسخ احتياطية دون اتصال منتظمة (تصدير / نسخ احتياطي محلي) — الخادم ليس مسار استرداد لكلمة مرور رئيسية منسية.
طوبولوجيا المزامنة: التطبيق والامتداد وCLI يرسلون auth_hash والنص المشفّر إلى openkey_server الذي يخزّن صفوفاً غير شفافة في PostgreSQL

التالي: التنزيل · استخدام التطبيق · امتداد المتصفح · الأسئلة الشائعة · CLI · الأمان