Spaces:
Paused
Paused
| # THE Z AI — Computer Mode Server v20.2 "Headless-Native + Camoufox" | |
| # أخف بكثير من Dockerfile السابق (v11-v13): لا حاجة لـ Xvfb, xdotool, | |
| # ImageMagick, x11-apps, أو python-xlib — Chromium بوضع headless=new يغني | |
| # عن كل ذلك (لا X server منفصل، لا أدوات التقاط شاشة خارجية). | |
| # | |
| # إضافة v20.2: مكتبات نظام لدعم Camoufox (Firefox معدَّل مضاد للكشف) كمحرك | |
| # بديل اختياري — يُستخدم فقط عند طلب switch_engine صراحة، فلا يُثقّل التشغيل | |
| # العادي (Chromium يبقى المحرك الافتراضي السريع لكل الجلسات). | |
| FROM python:3.11-slim | |
| # Chromium (المحرك الافتراضي) + مكتبات نظام Firefox/Camoufox (المحرك البديل | |
| # المضاد للكشف) + خطوط متعددة اللغات لعرض صحيح للعربية والصينية واليابانية. | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| chromium \ | |
| fonts-liberation \ | |
| fonts-noto \ | |
| fonts-noto-cjk \ | |
| ca-certificates \ | |
| curl \ | |
| libasound2 \ | |
| libatk1.0-0 \ | |
| libcairo-gobject2 \ | |
| libcairo2 \ | |
| libdbus-1-3 \ | |
| libfontconfig1 \ | |
| libfreetype6 \ | |
| libgdk-pixbuf-2.0-0 \ | |
| libglib2.0-0 \ | |
| libgtk-3-0 \ | |
| libpango-1.0-0 \ | |
| libpangocairo-1.0-0 \ | |
| libx11-6 \ | |
| libx11-xcb1 \ | |
| libxcb-shm0 \ | |
| libxcb1 \ | |
| libxcomposite1 \ | |
| libxcursor1 \ | |
| libxdamage1 \ | |
| libxext6 \ | |
| libxfixes3 \ | |
| libxi6 \ | |
| libxrandr2 \ | |
| libxrender1 \ | |
| fonts-noto-color-emoji \ | |
| fonts-unifont \ | |
| fonts-ipafont-gothic \ | |
| fonts-wqy-zenhei \ | |
| fonts-freefont-ttf \ | |
| && rm -rf /var/lib/apt/lists/* | |
| WORKDIR /app | |
| COPY requirements.txt . | |
| RUN pip install --no-cache-dir -r requirements.txt | |
| # ملاحظة v20.2.1: ثنائي Firefox المعدَّل الخاص بـ Camoufox لا يُنزَّل هنا وقت | |
| # البناء — كان هذا يسبب "Job timeout" على HF Spaces لأن مجموع (apt + pip + | |
| # تحميل Camoufox ~150-300MB) يتجاوز مهلة البناء المسموحة. بدلاً من ذلك، | |
| # camoufox يُنزّل تلقائياً بأمان عند أول استخدام فعلي فقط (أول مرة يُرسل | |
| # فيها action:"switch_engine" بـ engine:"camoufox") — انظر CamoufoxSession.start() | |
| # في app.py: أول تشغيل قد يستغرق دقيقة إضافية (تحميل لمرة واحدة، يُخزَّن | |
| # بعدها بشكل دائم داخل الحاوية)، لكن البناء نفسه يصبح أسرع بكثير ولا يتوقف. | |
| # Chromium (المحرك الافتراضي السريع) يبقى جاهزاً فوراً بدون أي تأخير كالمعتاد. | |
| COPY app.py . | |
| # مستخدم غير root (مطلوب لتشغيل Chromium بأمان بدون --no-sandbox في بعض البيئات، | |
| # لكن نبقي --no-sandbox في app.py لأن الحاويات المُدارة مثل HF Spaces عادة تمنع | |
| # إنشاء namespaces اللازمة لـ sandbox الكامل لـ Chromium على أي حال) | |
| RUN useradd -m -u 1000 zai && chown -R zai:zai /app | |
| USER zai | |
| ENV HOME=/home/zai | |
| EXPOSE 7860 | |
| CMD ["python3", "app.py"] | |