|
| 1 | +# خادم المزامنة المستضاف ذاتيًا {#self-hosted-sync-server} |
| 2 | + |
| 3 | +يمكن للمستخدمين المتقدمين الذين لا يستطيعون أو لا يرغبون في استخدام أنكي ويب استخدام خادم مزامنة مستضاف ذاتيًا بدلًا منه. |
| 4 | + |
| 5 | +أمور يجب الانتباه لها: |
| 6 | + |
| 7 | +- هذه ميزة متقدمة، موجهة للمستخدمين المتمكنين من الشبكات وسطر الأوامر. إذا استخدمتها، من المتوقع أن تتمكن من حل أي |
| 8 | +مشاكل في الإعداد/الشبكة/الجدار الناري بنفسك، واستخدامها يكون على مسؤوليتك الخاصة. |
| 9 | +- قد تعتمد الإصدارات الأحدث من العملاء على تغييرات في بروتوكول المزامنة، لذا قد تتوقف المزامنة عن العمل إذا قمت بتحديث |
| 10 | +عملاء أنكي دون تحديث الخادم أيضًا. |
| 11 | +- توجد أيضًا خوادم مزامنة تابعة لجهات خارجية. لم يتم اختبارها، وغالبًا ما تستغرق وقتًا للحاق بالتغييرات في بروتوكول المزامنة، |
| 12 | +لذا لا يُنصح بها. |
| 13 | +- ستستخدم الرسائل داخل أنكي مصطلح "أنكي ويب" حتى لو تم تكوين خادم مخصص (مثال: "تعذر الاتصال بأنكي ويب" عندما |
| 14 | +يكون خادمك غير متصل). |
| 15 | + |
| 16 | +## التثبيت/التشغيل {#installing-running} |
| 17 | + |
| 18 | +هناك طرق متعددة لتثبيت وتشغيل الخادم. يمكنك استخدام إما: |
| 19 | + |
| 20 | +- خادم المزامنة المدمج مع إصدار سطح المكتب من أنكي |
| 21 | +- خادم مزامنة منفصل بسيط لا يتضمن تبعيات واجهة أنكي الرسومية. تتوفر تطبيقات بايثون وراست. |
| 22 | + |
| 23 | +### من إصدار مُعبأ {#from-a-packaged-build} |
| 24 | + |
| 25 | +يستخدم هذا خادم المزامنة المدمج في إصدار سطح المكتب من أنكي ابتداءً من الإصدار 2.1.57+. |
| 26 | + |
| 27 | +على ويندوز في جلسة cmd.exe: |
| 28 | + |
| 29 | +``` |
| 30 | +set SYNC_USER1=user:pass |
| 31 | +"\Program Files\anki\anki.exe" --syncserver |
| 32 | +``` |
| 33 | + |
| 34 | +أو على ماك في Terminal.app: |
| 35 | + |
| 36 | +``` |
| 37 | +SYNC_USER1=user:pass /Applications/Anki.app/Contents/MacOS/anki --syncserver |
| 38 | +``` |
| 39 | + |
| 40 | +أو على لينكس: |
| 41 | + |
| 42 | +``` |
| 43 | +SYNC_USER1=user:pass anki --syncserver |
| 44 | +``` |
| 45 | + |
| 46 | +### باستخدام Pip {#with-pip} |
| 47 | + |
| 48 | +لتجنب تحميل تبعيات واجهة أنكي الرسومية لسطح المكتب، يمكنك تشغيل خادم مزامنة أنكي مستقل باستخدام حزمة بايثون من |
| 49 | +PyPI. |
| 50 | +تأكد من تثبيت بايثون 3.9+. |
| 51 | + |
| 52 | +``` |
| 53 | +python3 -m venv ~/syncserver |
| 54 | +~/syncserver/bin/pip install anki |
| 55 | +SYNC_USER1=user:pass ~/syncserver/bin/python -m anki.syncserver |
| 56 | +``` |
| 57 | + |
| 58 | +### باستخدام Cargo {#with-cargo} |
| 59 | + |
| 60 | +من أنكي 2.1.66+، يمكنك بدلاً من ذلك إنشاء تطبيق خادم مزامنة مستقل بلغة راست باستخدام الأمر التالي. |
| 61 | +تأكد من تثبيت Rustup. |
| 62 | + |
| 63 | +``` |
| 64 | +cargo install --locked --git https://github.com/ankitects/anki.git --tag 25.02.5 anki-sync-server |
| 65 | +``` |
| 66 | + |
| 67 | +استبدل 25.02.5 بأحدث إصدار من أنكي. |
| 68 | + |
| 69 | +يجب تثبيت Protobuf (protoc). |
| 70 | + |
| 71 | +بعد الإنشاء، يمكنك تشغيله باستخدام: |
| 72 | + |
| 73 | +``` |
| 74 | +SYNC_USER1=user:pass anki-sync-server |
| 75 | +``` |
| 76 | + |
| 77 | +### من نسخة مصدرية {#from-a-source-checkout} |
| 78 | + |
| 79 | +إذا قمت باستنساخ مستودع أنكي من GitHub، يمكنك التثبيت من هناك: |
| 80 | + |
| 81 | +``` |
| 82 | +./ninja extract:protoc ftl_repo |
| 83 | +cargo install --path rslib/sync |
| 84 | +``` |
| 85 | + |
| 86 | +### باستخدام Docker {#with-docker} |
| 87 | + |
| 88 | +يمكنك العثور على ملف Docker وتعليمات مقدمة من المستخدمين |
| 89 | +[هنا](https://github.com/ankitects/anki/tree/main/docs/syncserver). |
| 90 | + |
| 91 | +## عدة مستخدمين {#multiple-users} |
| 92 | + |
| 93 | +`SYNC_USER1` يحدد اسم المستخدم وكلمة المرور الأولى، ويجب تعيينه. |
| 94 | +يمكنك اختياريًا تعيين `SYNC_USER2`، `SYNC_USER3` وهكذا، إذا كنت ترغب في إعداد عدة حسابات. |
| 95 | + |
| 96 | +## كلمات المرور المجمعة {#hashed-passwords} |
| 97 | + |
| 98 | +قد يرغب المستخدمون المتقدمون في استخدام كلمات مرور مجمعة بدلًا من النص الصريح. |
| 99 | +إذا رغبت في ذلك، ستحتاج إلى استخدام أداة منفصلة (مثل |
| 100 | +[هذه](https://git.sr.ht/~laalsaas/pbkdf2-password-hash)) لإنشاء تجزئة كلمة المرور. |
| 101 | +يمكنك بعد ذلك إخبار الخادم بتوقع كلمات مرور مجمعة عن طريق تعيين متغير البيئة PASSWORDS_HASHED إلى 1 (أو أي |
| 102 | +قيمة أخرى). |
| 103 | + |
| 104 | +عند استخدام كلمات المرور المجمعة، يُتوقع أن تكون متغيرات SYNC_USER بصيغة username:password_hash، |
| 105 | +حيث أن password_hash هو تجزئة كلمة المرور بصيغة PHC. |
| 106 | + |
| 107 | +## موقع التخزين {#storage-location} |
| 108 | + |
| 109 | +يحتاج الخادم إلى تخزين نسخة من مجموعتك ووسائطك في مجلد. |
| 110 | +افتراضيًا يكون في ~/.syncserver؛ يمكنك تغيير ذلك بتعريف متغير البيئة `SYNC_BASE`. |
| 111 | + |
| 112 | +- يجب ألا يكون هذا هو نفس موقع مجلد بيانات أنكي العادي، حيث يجب أن يخزن الخادم والعميل نسخًا منفصلة. |
| 113 | +- يجب عليك مزامنة بياناتك مع الخادم، وليس نسخ الملفات يدويًا إلى مجلد الخادم. |
| 114 | + |
| 115 | +## الوصول العام {#public-access} |
| 116 | + |
| 117 | +يستمع الخادم على اتصال HTTP غير مشفر، لذا ليس من الجيد تعريضه مباشرة للإنترنت. |
| 118 | +ستحتاج إما إلى تقييد الاستخدام على شبكتك المحلية، أو وضع نوع من التشفير أمام الخادم، مثل VPN (يبدو أن Tailscale سهل)، أو وكيل عكسي HTTPS. |
| 119 | + |
| 120 | +يمكنك تعريف `SYNC_HOST` و`SYNC_PORT` لتغيير المضيف والمنفذ الذي يرتبط به الخادم. |
| 121 | + |
| 122 | +## إعداد العميل {#client-setup} |
| 123 | + |
| 124 | +ستحتاج إلى تحديد عنوان IP الشبكي لجهاز الكمبيوتر الخاص بك، ثم توجيه كل من عملاء أنكي إلى هذا العنوان، مثل |
| 125 | +`http://192.168.1.200:8080/`. يمكن تكوين الرابط في التفضيلات. |
| 126 | + |
| 127 | +إذا كنت تستخدم أنكي موبايل ولم تتمكن من الاتصال بخادم على شبكتك المحلية، يرجى الدخول إلى إعدادات iOS، وابحث عن |
| 128 | +أنكي في الأسفل، وقم بتبديل "السماح لأنكي بالوصول إلى الشبكة المحلية" إلى إيقاف ثم تشغيل مرة أخرى. |
| 129 | + |
| 130 | +كانت الإصدارات القديمة من عملاء سطح المكتب تتطلب منك تعريف `SYNC_ENDPOINT` و |
| 131 | +`SYNC_ENDPOINT_MEDIA`. إذا كنت تستخدم عميلاً قديماً، ستضعها مثلاً كالتالي: |
| 132 | +`http://192.168.1.200:8080/sync/` و`http://192.168.1.200:8080/msync/` |
| 133 | +على التوالي. عملاء أنكي درويد قبل 2.16 يتطلبون إعدادًا منفصلًا لكل من النقطتين. |
| 134 | + |
| 135 | +## الوكلاء العكسيون {#reverse-proxies} |
| 136 | + |
| 137 | +إذا كنت تستخدم وكيلاً عكسيًا لتوفير وصول HTTPS (مثل nginx)، وترتبط بمسار فرعي |
| 138 | +(مثال: `http://example.com/custom/` -> `http://localhost:8080/`)، يجب التأكد من |
| 139 | +إضافة شرطة مائلة في النهاية عند تكوين أنكي. إذا وضعت `http://example.com/custom` |
| 140 | +بدلاً من ذلك، فلن يعمل. |
| 141 | + |
| 142 | +على iOS، TLS 1.3 غير مدعوم، لذا يجب أن يكون TLS 1.2 مفعلاً في الوكيل العكسي، |
| 143 | +وإلا ستحصل على "رمز خطأ -9836". |
| 144 | + |
| 145 | +## الطلبات الكبيرة {#large-requests} |
| 146 | + |
| 147 | +يتم تطبيق حد أنكي ويب القياسي على التحميلات افتراضيًا. يمكنك اختياريًا |
| 148 | +تعيين `MAX_SYNC_PAYLOAD_MEGS` إلى قيمة أكبر من 100 إذا رغبت في زيادة الحد. |
| 149 | +ضع في اعتبارك أنه إذا كنت تستخدم وكيلاً عكسيًا، قد تحتاج إلى ضبط الحد هناك أيضًا. |
| 150 | + |
| 151 | +## المساهمة في التعديلات {#contributing-changes} |
| 152 | + |
| 153 | +نظرًا لأن هذا الخادم مدمج مع أنكي، فإن البساطة هدف تصميمي - فهو موجه للاستخدام الفردي/العائلي، ومن غير المرجح قبول |
| 154 | +طلبات السحب التي تضيف أشياء مثل REST API أو قواعد بيانات خارجية في الوقت الحالي. إذا كنت غير متأكد، يرجى |
| 155 | +التواصل قبل البدء في العمل على طلب سحب. |
| 156 | + |
| 157 | +إذا كنت تبحث عن حل API موجود، قد يلبي ملحق AnkiConnect احتياجاتك. |
0 commit comments