Skip to content

Commit e660846

Browse files
authored
Merge pull request #12 from hnvy/main
Updated syncing.md and added sync-server.md
2 parents 83880dc + 6a0de21 commit e660846

File tree

2 files changed

+278
-108
lines changed

2 files changed

+278
-108
lines changed

src/sync-server.md

Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
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

Comments
 (0)