لماذا تستضيف Windmill ذاتيًا على VPS
تعمل Windmill باستمرار على خادمك وتكشف كل نصّ برمجي كـ REST API موقَّعة أو مهمة مجدوَلة أو واجهة مستخدم مولَّدة تلقائيًا. خلافًا للدوال serverless، لا تأخير في البدء البارد ولا حدود تنفيذ يفرضها طرف ثالث. تصل نصوصك البرمجية بـ Python وTypeScript وBash مباشرةً إلى قواعد البيانات والخدمات الداخلية في VPS دون المرور بـ gateway سحابية. المحرك مكتوب بـ Rust: يستهلك أقل من 100 ميغابايت RAM في وضع الخمول ويبدأ في ثوانٍ حتى على أصغر VPS Cloud.
فوائد الاستضافة الذاتية الملموسة
- لا تكلفة لكل تنفيذ: آلاف الوظائف يوميًا دون فاتورة سحابية.
- وصول مباشر إلى قواعد بيانات VPS والخدمات الداخلية دون نفق.
- الأسرار ومفاتيح API مخزَّنة في Windmill ولا تغادر خادمك أبدًا.
- نماذج إدخال ونقاط REST مولَّدة تلقائيًا لكل نص برمجي.
- workers إضافية تُضاف لحظيًا لاستيعاب ذرى الحِمل.
- نسخ Git مدمج — كل تعديل على النص قابل للتتبع.
المتطلبات التقنية
تحتاج Windmill إلى 2 vCPU و4 غيغابايت RAM على الأقل لتشغيل الخادم مع عامل افتراضي وعامل native مقابل PostgreSQL 16. خصّص 10 غيغابايت من القرص للسجلات وذاكرة التخزين المؤقت للـ worker وأحجام قاعدة البيانات. يكفي Ubuntu 22.04 أو 24.04 مع Docker المثبَّت. لا حاجة لـ GPU. إن كنت تخطط لتشغيل workers Python ثقيلة (تعلم آلي، pandas على مجموعات بيانات كبيرة)، اختر 4 vCPU و8 غيغابايت RAM.
نشر Windmill باستخدام Docker Compose
استنساخ المستودع الرسمي
اتصل بـ VPS عبر SSH واسحب docker-compose.yml الرسمي:
git clone https://github.com/windmill-labs/windmill.git && cd windmillللإنتاج، ثبّت إصدارًا مستقرًا (راجع إصدارات GitHub). فرع main مستقر لكنه قد يتضمن تصحيحات قيد الاختبار.
توليد أسرار البيئة
انسخ .env.example إلى .env وأدخل المتغيرات:
cp .env.example .envلـ DATABASE_URL، يمكنك استخدام PostgreSQL المضمَّن في الـ stack (--profiles pg up) أو التأشير على نسخة قائمة. اضبط BASE_URL على https://your-domain.com — تستخدمه Windmill لتوقيع webhook وبناء URLs الاستدعاء الراجع للـ flows.
تشغيل الـ stack
شغّل الخادم والعامل الافتراضي والعامل native:
docker compose --profile pg up -dتحقق من أن الحاويات الأربع في حالة Up بـ docker compose ps. يستمع الخادم على المنفذ 8000 على الواجهة المحلية.
إعداد وكيل nginx العكسي
تكشف Windmill المنفذ 8000 على 127.0.0.1. هيّئ nginx للتوكيل وإنهاء TLS:
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}رؤوس Upgrade وConnection ضرورية لـ WebSockets التي يستخدمها المحرر في الوقت الفعلي.
تسجيل الدخول والتأمين
افتح https://your-domain.com، وسجّل الدخول بـ [email protected] / changeme، ثم انتقل إلى الإعدادات → المستخدمون لتعيين كلمة مرور قوية وتغيير البريد الإداري إن شئت. ترك المحرر مفتوحًا دون مصادقة هو الثغرة الأكثر شيوعًا على نسخ Windmill المعرَّضة للعموم.
نشرها بنقرة واحدة من Marketplace ServOrbit. إن كنت تفضّل تجاوز الإعداد اليدوي، يوفّر Marketplace من ServOrbit Windmill تلقائيًا — الخادم وعاملان وPostgreSQL 16 ووكيل nginx عكسي وشهادة Let's Encrypt — في بضع دقائق. يعرض قسم «الوصول الأول» في منطقة عملائك الرابطَ والبيانات المولَّدة. توجّه إلى [بطاقة Windmill](/marketplace/automatisation/windmill) للبدء.