Skip to content

Commit 0c34cfd

Browse files
committed
docs: add docker-server documentation (22 languages)
1 parent 7b0fd6e commit 0c34cfd

22 files changed

Lines changed: 7898 additions & 0 deletions

docs/docker-server.ar.md

Lines changed: 359 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,359 @@
1+
# توثيق خادم OpenCode Docker
2+
3+
يغطي هذا الدليل تشغيل OpenCode في وضع الخادم داخل حاويات Docker.
4+
5+
## مقدمة
6+
7+
خادم OpenCode هو نشر بدون رأس لـ OpenCode يعمل كخدمة خلفية، ويمكن الوصول إليه عبر واجهة برمجة التطبيقات HTTP. توفر صورة Docker بيئة تشغيل كاملة مع جميع الأدوات اللازمة مثبتة مسبقًا، مما يجعلها مثالية لـ:
8+
9+
- بيئات التطوير عن بُعد
10+
- التكامل مع CI/CD
11+
- مثيلات البرمجة المشتركة للفريق
12+
- تشغيل OpenCode على الخوادم بدون واجهة رسومية
13+
14+
## البدء السريع
15+
16+
شغّل خادم OpenCode بكلمة مرور آمنة:
17+
18+
```bash
19+
docker run -d \
20+
--name opencode-server \
21+
-p 3000:3000 \
22+
-e OPENCODE_SERVER_PASSWORD=your_secure_password \
23+
-v opencode_workspace:/workspace \
24+
ghcr.io/anomalyco/opencode/server:debian
25+
```
26+
27+
الوصول إلى الخادم على `http://localhost:3000`.
28+
29+
## متغيرات الصورة
30+
31+
يتوفر متغيران للصورة الأساسية:
32+
33+
| المتغير | الصورة الأساسية | الحجم | حالة الاستخدام |
34+
| -------- | ------------------ | ------ | ------------------------ |
35+
| `debian` | Debian Trixie Slim | ~500MB | موصى به لمعظم المستخدمين |
36+
| `alpine` | Alpine Edge | ~200MB | بصمة أدنى، سحب أسرع |
37+
38+
### سحب متغيرات محددة
39+
40+
```bash
41+
# Debian (موصى به)
42+
docker pull ghcr.io/anomalyco/opencode/server:debian
43+
44+
# Alpine (الحد الأدنى)
45+
docker pull ghcr.io/anomalyco/opencode/server:alpine
46+
```
47+
48+
## متغيرات البيئة
49+
50+
| المتغير | الافتراضي | الوصف |
51+
| -------------------------- | ----------------------------- | ------------------------------------------ |
52+
| `OPENCODE_SERVER_PASSWORD` | (لا شيء) | **مطلوب.** كلمة مرور لمصادقة HTTP الأساسية |
53+
| `OPENCODE_SERVER_USERNAME` | `opencode` | اسم المستخدم لمصادقة HTTP الأساسية |
54+
| `XDG_CONFIG_HOME` | `/home/opencode/.config` | دليل التكوين |
55+
| `XDG_CACHE_HOME` | `/home/opencode/.cache` | دليل ذاكرة التخزين المؤقت |
56+
| `XDG_DATA_HOME` | `/home/opencode/.local/share` | دليل البيانات |
57+
58+
### خيارات الخادم (علامات CLI)
59+
60+
يقبل الخادم هذه الخيارات الإضافية عند تجاوز الأمر الافتراضي:
61+
62+
```bash
63+
docker run ... ghcr.io/anomalyco/opencode/server:debian \
64+
opencode serve --hostname=0.0.0.0 --port=3000 --cors=https://example.com
65+
```
66+
67+
| العلامة | الافتراضي | الوصف |
68+
| --------------- | ---------------- | -------------------------------- |
69+
| `port--` | `0` (عشوائي) | المنفذ للاستماع |
70+
| `hostname--` | `127.0.0.1` | اسم المضيف للربط |
71+
| `mdns--` | `false` | تمكين اكتشاف خدمة mDNS |
72+
| `mdns-domain--` | `opencode.local` | اسم مجال mDNS المخصص |
73+
| `cors--` | `[]` | نطاقات CORS المسموح بها الإضافية |
74+
75+
## تحميل الأقراص
76+
77+
قم بتحميل هذه الأقراص لت保持 البيانات ومشاركة الموارد:
78+
79+
### مساحة العمل (مطلوب)
80+
81+
```bash
82+
-v /path/to/workspace:/workspace
83+
```
84+
85+
هنا يقوم OpenCode بتشغيل ملفات مشروعك. قم بتحميل مستودع الكود الخاص بك هنا.
86+
87+
### مفاتيح SSH
88+
89+
```bash
90+
-v ~/.ssh:/home/opencode/.ssh:ro
91+
```
92+
93+
وصول للقراءة فقط إلى مفاتيح SSH لاستنساخ المستودعات الخاصة.
94+
95+
### تكوين Git
96+
97+
```bash
98+
-v ~/.gitconfig:/home/opencode/.gitconfig:ro
99+
```
100+
101+
وراثة هوية مستخدم Git من المضيف.
102+
103+
### تكوين OpenCode
104+
105+
```bash
106+
-v ~/.config/opencode:/home/opencode/.config/opencode
107+
```
108+
109+
保持 إعدادات OpenCode بين إعادة تشغيل الحاوية.
110+
111+
### ذاكرة التخزين المؤقت
112+
113+
```bash
114+
-v opencode_cache:/home/opencode/.cache
115+
```
116+
117+
ذاكرة تخزين مؤقت لحزم npm وخوادم اللغات والأدوات الأخرى التي تم تنزيلها.
118+
119+
## المنافذ
120+
121+
| المنفذ | البروتوكول | الوصف |
122+
| ------ | ---------- | ----------------------------------------------- |
123+
| `3000` | HTTP | واجهة برمجة تطبيقات الخادم الرئيسية (الافتراضي) |
124+
125+
يمكن إعادة تعيين المنفذ عبر علامة `-p` في Docker:
126+
127+
```bash
128+
-p 8080:3000 # الوصول إلى الخادم على http://localhost:8080
129+
```
130+
131+
## المستخدم والأذونات
132+
133+
تعمل الحاوية كمستخدم غير أساسي (`opencode`، UID 1000) لأسباب أمنية. هذا المستخدم لديه وصول `sudo` بدون كلمة مرور للمهام الإدارية:
134+
135+
```bash
136+
# تنفيذ الأوامر كمستخدم opencode
137+
docker exec -it opencode-server sudo -u opencode <command>
138+
139+
# الحصول على shell كمستخدم opencode
140+
docker exec -it opencode-server sudo -u opencode /bin/bash
141+
```
142+
143+
إذا كنت بحاجة إلى وصول أساسي:
144+
145+
```bash
146+
docker exec -it opencode-server /bin/bash
147+
```
148+
149+
## الأدوات المثبتة
150+
151+
تتضمن الصورة هذه الأدوات بشكل مباشر:
152+
153+
| الأداة | الوصف |
154+
| ----------------- | -------------------------------- |
155+
| `opencode` | واجهة سطر أوامر OpenCode |
156+
| `bun` | وقت تشغيل JavaScript ومدير الحزم |
157+
| `bunx` | مكافئ Bun لـ npx (تشغيل حزم npm) |
158+
| `uv` | مدير حزم Python |
159+
| `git` | التحكم في الإصدار |
160+
| `git-lfs` | امتداد التخزين الكبير لـ Git |
161+
| `build-essential` | مكتبات GCC وmake والبناء |
162+
| `curl` | عميل HTTP |
163+
| `wget` | أداة تنزيل الملفات |
164+
| `openssh-client` | أدوات عميل ومفاتيح SSH |
165+
| `xz-utils` | أدوات الضغط |
166+
167+
### استخدام bun
168+
169+
```bash
170+
# تشغيل حزمة Node.js
171+
docker exec -it opencode-server bunx create-next-app
172+
173+
# تثبيت التبعيات
174+
docker exec -it opencode-server bun install
175+
```
176+
177+
### استخدام uv
178+
179+
```bash
180+
# تثبيت حزمة Python
181+
docker exec -it opencode-server uv pip install pandas
182+
183+
# تشغيل برنامج Python
184+
docker exec -it opencode-server uv run script.py
185+
```
186+
187+
### استخدام git
188+
189+
```bash
190+
# استنساخ مستودع في مساحة العمل
191+
docker exec -it opencode-server git clone https://github.com/user/repo.git /workspace/repo
192+
```
193+
194+
## فحص الصحة
195+
196+
تتضمن الحاوية فحص صحة مدمج يتحقق من استجابة الخادم:
197+
198+
```bash
199+
# فحص صحة الحاوية
200+
docker inspect --format='{{.State.Health.Status}}' opencode-server
201+
```
202+
203+
نقطة نهاية الصحة ترد HTTP 200 عندما تكون صحية:
204+
205+
```bash
206+
# فحص الصحة اليدوي
207+
curl -f http://localhost:3000/health
208+
```
209+
210+
تكوين فحص الصحة:
211+
212+
- الفترة: 30 ثانية
213+
- المهلة: 10 ثوان
214+
- فترة البدء: 10 ثوان
215+
- المحاولات: 3
216+
217+
## مثال Docker Compose
218+
219+
أنشئ ملف `docker-compose.yml`:
220+
221+
```yaml
222+
services:
223+
opencode:
224+
image: ghcr.io/anomalyco/opencode/server:debian
225+
container_name: opencode-server
226+
restart: unless-stopped
227+
ports:
228+
- "3000:3000"
229+
environment:
230+
- OPENCODE_SERVER_PASSWORD=your_secure_password
231+
- OPENCODE_SERVER_USERNAME=opencode
232+
volumes:
233+
- ./workspace:/workspace
234+
- opencode_config:/home/opencode/.config
235+
- opencode_cache:/home/opencode/.cache
236+
- ~/.ssh:/home/opencode/.ssh:ro
237+
- ~/.gitconfig:/home/opencode/.gitconfig:ro
238+
healthcheck:
239+
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
240+
interval: 30s
241+
timeout: 10s
242+
retries: 3
243+
244+
volumes:
245+
opencode_config:
246+
opencode_cache:
247+
```
248+
249+
بدء الحزمة:
250+
251+
```bash
252+
docker-compose up -d
253+
```
254+
255+
## البناء من المصدر
256+
257+
لبناء صورة الخادم من المصدر:
258+
259+
### استنساخ المستودع
260+
261+
```bash
262+
git clone https://github.com/anomalyco/opencode.git
263+
cd opencode
264+
```
265+
266+
### بناء متغير Debian
267+
268+
```bash
269+
docker build \
270+
-f packages/containers/server/docker/Dockerfile.debian \
271+
-t opencode-server:local \
272+
.
273+
```
274+
275+
### بناء متغير Alpine
276+
277+
```bash
278+
docker build \
279+
-f packages/containers/server/docker/Dockerfile.alpine \
280+
-t opencode-server:alpine-local \
281+
.
282+
```
283+
284+
### تشغيل البناء المحلي الخاص بك
285+
286+
```bash
287+
docker run -d \
288+
-p 3000:3000 \
289+
-e OPENCODE_SERVER_PASSWORD=dev_password \
290+
-v $(pwd)/workspace:/workspace \
291+
opencode-server:local
292+
```
293+
294+
## حل المشكلات
295+
296+
### عدم بدء الخادم
297+
298+
تحقق من السجلات:
299+
300+
```bash
301+
docker logs opencode-server
302+
```
303+
304+
المشاكل الشائعة:
305+
306+
- عدم وجود `OPENCODE_SERVER_PASSWORD` - يرفض الخادم البدء بدون مصادقة
307+
- المنفذ مستخدم بالفعل - تغيير تعيين منفذ المضيف
308+
309+
### فشل المصادقة
310+
311+
تأكد من تطابق كلمة المرور تمامًا. يستخدم الخادم مصادقة HTTP الأساسية:
312+
313+
```bash
314+
# اختبار المصادقة
315+
curl -u opencode:your_password http://localhost:3000/health
316+
```
317+
318+
### أخطاءPermissions مساحة العمل
319+
320+
تأكد من أن الدليل المركب قابل للكتابة بواسطة UID 1000:
321+
322+
```bash
323+
# إصلاح الملكية
324+
sudo chown -R 1000:1000 /path/to/workspace
325+
```
326+
327+
### بدء بطيء
328+
329+
أول تشغيل يقوم بتنزيل خوادم اللغات والأدوات. تحقق من التقدم:
330+
331+
```bash
332+
docker logs -f opencode-server
333+
```
334+
335+
### لا يمكن للحاوية الوصول إلى الإنترنت
336+
337+
تحقق من تكوين DNS:
338+
339+
```bash
340+
docker exec opencode-server ping -c 3 8.8.8.8
341+
docker exec opencode-server cat /etc/resolv.conf
342+
```
343+
344+
### فشل فحص الصحة
345+
346+
تحقق من أن الخادم يعمل فعليًا:
347+
348+
```bash
349+
docker exec opencode-server curl -f http://localhost:3000/health
350+
```
351+
352+
### عدم عمل مفتاح SSH
353+
354+
تأكد من أذونات المفاتيح الصحيحة داخل الحاوية:
355+
356+
```bash
357+
docker exec opencode-server sudo chmod 600 /home/opencode/.ssh/id_rsa
358+
docker exec opencode-server sudo chmod 644 /home/opencode/.ssh/id_rsa.pub
359+
```

0 commit comments

Comments
 (0)