> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ankiweb.net/llms.txt
> Use this file to discover all available pages before exploring further.

# خادم المزامنة المستضاف ذاتيًا

يمكن للمستخدمين المتقدمين الذين لا يستطيعون أو لا يرغبون في استخدام أنكي ويب استخدام خادم مزامنة مستضاف ذاتيًا بدلًا منه.

أمور يجب الانتباه لها:

* هذه ميزة متقدمة، موجهة للمستخدمين المتمكنين من الشبكات وسطر الأوامر. إذا استخدمتها، من المتوقع أن تتمكن من حل أي
  مشاكل في الإعداد/الشبكة/الجدار الناري بنفسك، واستخدامها يكون على مسؤوليتك الخاصة.
* قد تعتمد الإصدارات الأحدث من العملاء على تغييرات في بروتوكول المزامنة، لذا قد تتوقف المزامنة عن العمل إذا قمت بتحديث
  عملاء أنكي دون تحديث الخادم أيضًا.
* توجد أيضًا خوادم مزامنة تابعة لجهات خارجية. لم يتم اختبارها، وغالبًا ما تستغرق وقتًا للحاق بالتغييرات في بروتوكول المزامنة،
  لذا لا يُنصح بها.
* ستستخدم الرسائل داخل أنكي مصطلح "أنكي ويب" حتى لو تم تكوين خادم مخصص (مثال: "تعذر الاتصال بأنكي ويب" عندما
  يكون خادمك غير متصل).

<h2 id="installing-running">
  التثبيت/التشغيل
</h2>

هناك طرق متعددة لتثبيت وتشغيل الخادم. يمكنك استخدام إما:

* خادم المزامنة المدمج مع إصدار سطح المكتب من أنكي
* خادم مزامنة منفصل بسيط لا يتضمن تبعيات واجهة أنكي الرسومية. تتوفر تطبيقات بايثون وراست.

<h3 id="from-a-packaged-build">
  من إصدار مُعبأ
</h3>

يستخدم هذا خادم المزامنة المدمج في إصدار سطح المكتب من أنكي ابتداءً من الإصدار 2.1.57+.

على ويندوز في جلسة cmd.exe:

```
set SYNC_USER1=user:pass
"\Program Files\anki\anki.exe" --syncserver
```

أو على ماك في Terminal.app:

```
SYNC_USER1=user:pass /Applications/Anki.app/Contents/MacOS/anki --syncserver
```

أو على لينكس:

```
SYNC_USER1=user:pass anki --syncserver
```

<h3 id="with-pip">
  باستخدام Pip
</h3>

لتجنب تحميل تبعيات واجهة أنكي الرسومية لسطح المكتب، يمكنك تشغيل خادم مزامنة أنكي مستقل باستخدام حزمة بايثون من
PyPI.
تأكد من تثبيت بايثون 3.9+.

```
python3 -m venv ~/syncserver
~/syncserver/bin/pip install anki
SYNC_USER1=user:pass ~/syncserver/bin/python -m anki.syncserver
```

<h3 id="with-cargo">
  باستخدام Cargo
</h3>

من أنكي 2.1.66+، يمكنك بدلاً من ذلك إنشاء تطبيق خادم مزامنة مستقل بلغة راست باستخدام الأمر التالي.
تأكد من تثبيت Rustup.

```
cargo install --locked --git https://github.com/ankitects/anki.git --tag 25.02.5 anki-sync-server
```

استبدل 25.02.5 بأحدث إصدار من أنكي.

يجب تثبيت Protobuf (protoc).

بعد الإنشاء، يمكنك تشغيله باستخدام:

```
SYNC_USER1=user:pass anki-sync-server
```

<h3 id="from-a-source-checkout">
  من نسخة مصدرية
</h3>

إذا قمت باستنساخ مستودع أنكي من GitHub، يمكنك التثبيت من هناك:

```
./ninja extract:protoc ftl_repo
cargo install --path rslib/sync
```

<h3 id="with-docker">
  باستخدام Docker
</h3>

يمكنك العثور على ملف Docker وتعليمات مقدمة من المستخدمين
[هنا](https://github.com/ankitects/anki/tree/main/docs/syncserver).

<h2 id="multiple-users">
  عدة مستخدمين
</h2>

`SYNC_USER1` يحدد اسم المستخدم وكلمة المرور الأولى، ويجب تعيينه.
يمكنك اختياريًا تعيين `SYNC_USER2`، `SYNC_USER3` وهكذا، إذا كنت ترغب في إعداد عدة حسابات.

<h2 id="hashed-passwords">
  كلمات المرور المجمعة
</h2>

قد يرغب المستخدمون المتقدمون في استخدام كلمات مرور مجمعة بدلًا من النص الصريح.
إذا رغبت في ذلك، ستحتاج إلى استخدام أداة منفصلة (مثل
[هذه](https://git.sr.ht/~laalsaas/pbkdf2-password-hash)) لإنشاء تجزئة كلمة المرور.
يمكنك بعد ذلك إخبار الخادم بتوقع كلمات مرور مجمعة عن طريق تعيين متغير البيئة PASSWORDS\_HASHED إلى 1 (أو أي
قيمة أخرى).

عند استخدام كلمات المرور المجمعة، يُتوقع أن تكون متغيرات SYNC\_USER بصيغة username:password\_hash،
حيث أن password\_hash هو تجزئة كلمة المرور بصيغة PHC.

<h2 id="storage-location">
  موقع التخزين
</h2>

يحتاج الخادم إلى تخزين نسخة من مجموعتك ووسائطك في مجلد.
افتراضيًا يكون في \~/.syncserver؛ يمكنك تغيير ذلك بتعريف متغير البيئة `SYNC_BASE`.

* يجب ألا يكون هذا هو نفس موقع مجلد بيانات أنكي العادي، حيث يجب أن يخزن الخادم والعميل نسخًا منفصلة.
* يجب عليك مزامنة بياناتك مع الخادم، وليس نسخ الملفات يدويًا إلى مجلد الخادم.

<h2 id="public-access">
  الوصول العام
</h2>

يستمع الخادم على اتصال HTTP غير مشفر، لذا ليس من الجيد تعريضه مباشرة للإنترنت.
ستحتاج إما إلى تقييد الاستخدام على شبكتك المحلية، أو وضع نوع من التشفير أمام الخادم، مثل VPN (يبدو أن Tailscale سهل)، أو وكيل عكسي HTTPS.

يمكنك تعريف `SYNC_HOST` و`SYNC_PORT` لتغيير المضيف والمنفذ الذي يرتبط به الخادم.

<h2 id="client-setup">
  إعداد العميل
</h2>

ستحتاج إلى تحديد عنوان IP الشبكي لجهاز الكمبيوتر الخاص بك، ثم توجيه كل من عملاء أنكي إلى هذا العنوان، مثل
`http://192.168.1.200:8080/`. يمكن تكوين الرابط في التفضيلات.

إذا كنت تستخدم أنكي موبايل ولم تتمكن من الاتصال بخادم على شبكتك المحلية، يرجى الدخول إلى إعدادات iOS، وابحث عن
أنكي في الأسفل، وقم بتبديل "السماح لأنكي بالوصول إلى الشبكة المحلية" إلى إيقاف ثم تشغيل مرة أخرى.

كانت الإصدارات القديمة من عملاء سطح المكتب تتطلب منك تعريف `SYNC_ENDPOINT` و
`SYNC_ENDPOINT_MEDIA`. إذا كنت تستخدم عميلاً قديماً، ستضعها مثلاً كالتالي:
`http://192.168.1.200:8080/sync/` و`http://192.168.1.200:8080/msync/`
على التوالي. عملاء أنكي درويد قبل 2.16 يتطلبون إعدادًا منفصلًا لكل من النقطتين.

<h2 id="reverse-proxies">
  الوكلاء العكسيون
</h2>

إذا كنت تستخدم وكيلاً عكسيًا لتوفير وصول HTTPS (مثل nginx)، وترتبط بمسار فرعي
(مثال: `http://example.com/custom/` -> `http://localhost:8080/`)، يجب التأكد من
إضافة شرطة مائلة في النهاية عند تكوين أنكي. إذا وضعت `http://example.com/custom`
بدلاً من ذلك، فلن يعمل.

على iOS، TLS 1.3 غير مدعوم، لذا يجب أن يكون TLS 1.2 مفعلاً في الوكيل العكسي،
وإلا ستحصل على "رمز خطأ -9836".

<h2 id="large-requests">
  الطلبات الكبيرة
</h2>

يتم تطبيق حد أنكي ويب القياسي على التحميلات افتراضيًا. يمكنك اختياريًا
تعيين `MAX_SYNC_PAYLOAD_MEGS` إلى قيمة أكبر من 100 إذا رغبت في زيادة الحد.
ضع في اعتبارك أنه إذا كنت تستخدم وكيلاً عكسيًا، قد تحتاج إلى ضبط الحد هناك أيضًا.

<h2 id="contributing-changes">
  المساهمة في التعديلات
</h2>

نظرًا لأن هذا الخادم مدمج مع أنكي، فإن البساطة هدف تصميمي - فهو موجه للاستخدام الفردي/العائلي، ومن غير المرجح قبول
طلبات السحب التي تضيف أشياء مثل REST API أو قواعد بيانات خارجية في الوقت الحالي. إذا كنت غير متأكد، يرجى
التواصل قبل البدء في العمل على طلب سحب.

إذا كنت تبحث عن حل API موجود، قد يلبي ملحق AnkiConnect احتياجاتك.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.