عن المشروع

يسمح لك PKV Sync بتشغيل خدمة المزامنة الخاصة بك للمستودعات في Obsidian بدلاً من الاعتماد على سحابة مُدارة. يتم توزيعه كملف ثنائي واحد يخزن المعلمات في قاعدة بيانات SQLite واحدة ويحتفظ بكل مستودع كمستودع git فارغ، لذلك لا يلزم وجود مجموعة أو تخزين كائن أو خدمة مُدارة. تم كتابة README باللغة الإنجليزية، وتم ترخيص المشروع بموجب AGPL-3.0-only. القدرات الأساسية الموصوفة في README: - مزامنة متعددة المستخدمين ومتعددة المستودعات عبر الأجهزة المعتمدة، مع أقفال دفع لكل مستودع وإعادة محاولة متسقة. - دفع في الوقت الفعلي: تصل التعديلات الصغيرة في أقل من ثانية عبر Server-Sent Events، مع الاحتفاظ بالاستطلاع كخطة احتياطية. - Git كمصدر للحقيقة: كل مستودع هو مستودع git فارغ، مما يوفر سجلًا لكل ملف، ومقارنة موحدة، واستعادة للملف الواحد في كل من الملحق ولوحة الإدارة. - معالجة التضارب: لا يقوم الملحق بكتابة التعديلات المحلية بصمت؛ تظهر التضاربات كملفات .conflict-* مع أداة حل بنقرة واحدة. - لوحة إدارة متوفرة بخمس لغات (الإنجليزية، الصينية المبسطة، الصينية التقليدية، اليابانية، الكورية) للمستخدمين، ورموز الأجهزة، والمستودعات، والدعوات، والنشاط، وجمع القمامة للـ blobs، مع نوافذ تأكيد للإجراءات المدمرة. - أدوات MCP للقراءة/الكتابة مكشوفة عبر stdio، أو HTTP قابل للبث مستقل، أو طريق /mcp مضمن على عملية الخادم، ومُستهدفة للمستودعات القابلة للقراءة بواسطة الذكاء الاصطناعي. - الإعدادات الآمنة: سياسة كلمة مرور بدرجة إعداد للكلمات المرور التي ينشئها المسؤول، وأسرار رمز لمرة واحدة، وحدود حجم للتحميلات واستجابات MCP، وإعادة التحقق من الرموز الملغاة على تيارات SSE الحية. النشر: المسار الموصى به هو Docker Compose مع Caddy في deploy/caddy/ لإنهاء HTTPS عبر Let's Encrypt، بينما يستمع الخادم على 127.0.0.1:6710 داخل شبكة compose. يتطلب الإعداد مجالًا مع سجلات A/AAAA ومنفذين 80 و443 يمكن الوصول إليهما. تتضمن الخطوات توليد مفتاح نشر باستخدام أمر genkey، وإنشاء config.toml مع أقسام الخادم، والتخزين، والشبكة، وMCP، وتحرير Caddyfile للمجال الخاص بك، وتشغيل docker compose up -d، ثم إنشاء أول مسؤول عند عنوان URL /setup وتثبيت ملف zip للملحق في مجلد .obsidian/plugins/pkv-sync/ للمستودع. تغطي وثائق التوطين الخاصة بالنشر التثبيتات الأصلية، وضبط الوكيل العكسي (Caddy، Nginx، Traefik)، ودلالات public_host، والنسخ الاحتياطي/الاستعادة، وتشفير القرص. أوضاع MCP: وضع embedded اختياري عبر علم في config الذي يركب /mcp على منفذ الخادم الرئيسي، ويشارك إنهاء TLS، والوكيل العكسي، ومفتاح النشر، وتنفيذ رمز الحامل؛ وضع standalone يشغل عملية منفصلة مرتبطة بعنوان معين، ووصف بأنه مفيد للإعدادات المعزولة أو التوسع المستقل. ملحق Obsidian: تظل الملفات المحلية مصدر الحقيقة، ويقرأ الملحق ويكتب المستودع العادي على القرص. يتم تخزين الإعدادات غير الحساسة ومؤشرات المزامنة في data.json للملحق داخل المستودع، بينما تعيش حالة تسجيل الدخول، ورمز الجهاز الحامل النشط، ومفتاح النشر، وهوية الجهاز في التخزين المحلي للجهاز في Obsidian. تتجدد رموز الأجهزة عند الاستخدام، وتنتهي صلاحيتها بعد 90 يومًا من الخمول، ولها عمر مطلق 365 يومًا؛ يؤدي تسجيل الدخول مرة أخرى على نفس الجهاز إلى تدوير الرمز النشط. تتضمن الميزات اليومية لوحة الأوامر، وسجل الملفات، ومقارنة جنبًا إلى جنب، وحل التضارب، ومزامنة .obsidian الانتقائية، وإدارة الأجهزة، والتحديث الذاتي، والموثقة في دليل المستخدم. حالة التشفير: يذكر README أن الإصدار 1.0 لا يشحن بعد التشفير من طرف إلى طرف الأصلي وأن الخادم يمكنه قراءة محتويات المستودع. تم التخطيط لتشفير E2EE أصلي لكل مستودع كوضع اختياري على خارطة طريق 1.x، حيث يتبادل التشفير الميزات الخاصة بالخادم مثل مقارنة السجل، والدمج التلقائي ثلاثي الاتجاه، وحمولات SSE المضمنة، وقراءة/كتابة MCP. كحل مؤقت، يمكن وضع git-crypt على المستودع بحيث تصل المسارات المحددة إلى الخادم كـ blobs مشفرة، بينما تظل أسماء الملفات نصًا عاديًا على الخادم؛ لا يزال git clone القياسي وأمر materialize يعملان للعملاء الذين يمتلكون المفتاح. يوصي README أيضًا بـ HTTPS، وtrusted_proxies المقيد، وأقراص بيانات مشفرة، ونسخ احتياطية مشفرة للنشر الحقيقي. الإصدارات والحالة: يسرد README وثائق لاستخدام الملحق، وإدارة الخادم، ومرجع CLI، وملاحظات الترقية، وتوطين النشر، ومواصفات OpenAPI، وإعداد MCP، وسير عمل wiki المحافظ عليه بواسطة LLM، والترحيل من Obsidian Sync. ينشر كل إصدار من GitHub ملفات ثنائية لـ Linux amd64/arm64، وملف ثنائي لـ Windows x64، وصورة Docker متعددة المعلمات من GHCR، وملف zip للملحق، وSHA256SUMS. يُوصف الإصدار 1.5.1 بأنه إعادة تصميم بصرية للوحة الإدارة والملحق بالإضافة إلى مواءمة الوثائق مع حارس CI للوثائق؛ يغطي الإصدار 1.5.0 إصلاح التدقيق والعمل على الأداء بما في ذلك احتفاظ blob المرتبط بعمر كائن git، والتحقق من المسار، وحدود المعدل، وإغلاق SSE غير مانع، ومزامنة .obsidian المسموح بها، وقراءة git المجمعة. يتم إصدار API العامة REST، وCLI، وتخطيط التخزين، وحزمة الملحق، وصورة Docker معًا تحت semver، مع مواصفات OpenAPI كعقد اتفاقية التوافق؛ لا يمكن ترقية قواعد بيانات SQLite من 0.x إلى 1.0.0 في المكان. تغطي أوامر التطوير cargo fmt، وclippy، وtest بالإضافة إلى التحقق من نوع الملحق، وvitest، وbuild، مع تشغيل CI لمصفوفة Rust على Linux وWindows، وفحوصات الملحق، وبناء Docker، واختبارات دخان للملفات الثنائية للإصدار.