[{"data":1,"prerenderedAt":202},["ShallowReactive",2],{"seo-verification":3,"blog-كيفية-استضافة-erpnext-على-vps-ma-ar":6,"promo-bar-likely":201},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-كيفية-استضافة-erpnext-على-vps-ma-ar",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":36,"sections":37,"ctaTitle":134,"ctaBody":135,"ctaButton":136,"ctaUrl":137,"relatedPosts":138},150,"كيفية-استضافة-erpnext-على-vps",{"fr":12,"en":13,"ar":10,"es":14},"heberger-erpnext-vps","how-to-host-erpnext-on-a-vps","como-alojar-erpnext-en-un-vps","استضافة ERPNext على VPS: دليل شامل","انشر ERPNext على VPS الخاص بك: الوحدات، الإعداد التالي للتثبيت، المراقبة، استكشاف الأخطاء ومقارنة مع Odoo Community. دليل كامل مع Frappe Docker.",9,2,false,"2026-01-26T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},7,"الاستضافة الذاتية","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-erpnext-vps-poster.svg",{"categorySlug":34,"appSlug":35},"تخطيط-موارد-المؤسسات-وإدارة-الأعمال","erpnext","ERPNext نظام ERP مفتوح المصدر متكامل: محاسبة ومبيعات ومشتريات ومخزون وتصنيع وموارد بشرية في تطبيق واحد. باستضافته ذاتيًا على VPS الخاص بك، تحصل على نظام إدارة متكامل دون رسوم شهرية لكل مستخدم، ودون أن تغادر بياناتك المالية بنيتك التحتية. يتناول هذا الدليل النشر خطوة بخطوة باستخدام stack الرسمية Frappe Docker، والإعداد بعد التثبيت، والمراقبة، واستكشاف الأخطاء الشائعة، ومقارنة مع Odoo Community للاختيار بين الأداتين.",[38,42,52,55,58,83,86,89,92,128,131],{"type":39,"title":40,"body":41},"h2","لماذا تستضيف ERPNext ذاتيًا على VPS","يجمع نظام ERP أكثر بيانات الشركة حساسية: القيود المحاسبية، والهوامش، وبطاقات العملاء والموردين، والرواتب. غالبًا ما تُفوتِر عروض SaaS لكل مستخدم شهريًا، وهو ما يصبح مكلفًا مع نمو الفرق. على VPS مخصّص، تدفع ثمن الخادم مرة واحدة، وتضيف من المستخدمين ما تحتاج، وتبقى قاعدة البيانات تحت سيطرتك مع نسخ احتياطي وفق قواعدك الخاصة.\n\nيقوم ERPNext على **Frappe**، وهو إطار عمل Python\u002FJavaScript يجعل الكود المصدري قابلًا للقراءة والتوسعة. تمنحك الاستضافة الذاتية التحكم في جدول التحديثات واختيار التطبيقات المكملة (HRMS، e-Commerce، Education، Healthcare) وإمكانية كتابة وحداتك الخاصة دون الاعتماد على مورّد.",{"type":43,"title":44,"items":45},"ul","الفوائد الملموسة لـ ERPNext مُستضاف ذاتيًا",[46,47,48,49,50,51],"دون أي تكلفة لكل مستخدم: أضف فرقك دون زيادة الفاتورة.","سيادة على البيانات المحاسبية وبيانات الموارد البشرية، التي تبقى على خادمك.","جميع الوحدات متاحة (محاسبة، مخزون، CRM، تصنيع، رواتب) دون مستوى مدفوع.","تخصيص حر عبر إطار عمل Frappe والتطبيقات التكميلية.","نسخ احتياطي واحتفاظ مُداران، ملائمان لالتزاماتك القانونية.","قابلية التوسّع: ارفع RAM\u002FvCPU مع نمو حجم المعاملات.",{"type":39,"title":53,"body":54},"الوحدات الرئيسية في ERPNext","يغطي ERPNext الدورة التشغيلية الكاملة للمؤسسة. **المحاسبة**: دليل حسابات متعدد العملات، دفتر الأستاذ العام، التقارير النظامية (الميزانية، حساب النتائج)، إدارة ضريبة القيمة المضافة والتسوية البنكية. **المبيعات والمشتريات**: عروض الأسعار والطلبات والتسليمات والفواتير وإشعارات الدائن مع مسارات الموافقة. **إدارة المخزون**: مستودعات متعددة، دُفعات وأرقام تسلسلية، جرد دوري، تقييم FIFO أو متوسط متحرك. **CRM**: العملاء المحتملون والفرص والحملات وخط أنابيب المبيعات مع لوحة نشاط. **التصنيع**: قوائم المواد (BOM)، أوامر العمل، تتبع محطات العمل والهالك. **الموارد البشرية**: ملفات الموظفين، الإجازات، الحضور، كشوف الرواتب قابلة التهيئة حسب البلد وتقييم الأداء.\n\nتُفعَّل كل وحدة من مكتب ERPNext؛ تثبّت ما تحتاجه فحسب، وتُعرَّف صلاحيات الوصول بالأدوار على مستوى المستند.",{"type":39,"title":56,"body":57},"المتطلبات العتادية والبرمجية","ERPNext أكثر تطلّبًا من المتوسط. احسب على الأقل 2 vCPU و4 GB من الذاكرة RAM للاستخدام الاختباري، و4 vCPU \u002F 8 GB من الذاكرة RAM للإنتاج مع عدة مستخدمين متزامنين. خصّص 20 GB من القرص لقاعدة بيانات MariaDB وRedis والملفات المرفوعة.\n\nأما على الجانب البرمجي: Docker وDocker Compose v2 (>= 2.20)، واسم نطاق (مثل `erp.myapp.com`) يشير إلى عنوان IP الخاص بـ VPS، والمنفذ 443 مفتوح للداخل. يستخدم ERPNext MariaDB 10.6+ كقاعدة بيانات رئيسية وRedis للتخزين المؤقت وعمّال الوقت الفعلي — كلاهما مدرج في stack `frappe_docker`؛ لا تحتاج إلى تثبيتهما بشكل منفصل.",{"type":59,"title":60,"steps":61},"steps","انشر ERPNext مع Frappe Docker وHTTPS",[62,65,68,71,74,77,80],{"title":63,"body":64},"تحضير VPS وDocker","عبر SSH، حدّث النظام (`apt update && apt upgrade -y`) وثبّت Docker عبر `curl -fsSL https:\u002F\u002Fget.docker.com | sh`. أضف مستخدمك إلى مجموعة docker: `usermod -aG docker $USER`. تحقّق من `docker compose version` (v2 مطلوب).",{"title":66,"body":67},"الحصول على frappe_docker","استنسخ المستودع الرسمي واختر الفرع المقابل للإصدار المستهدف:\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Ffrappe\u002Ffrappe_docker\ncd frappe_docker\n```\n\nيحتوي مجلد `overrides\u002F` على compose partials لـ Caddy (HTTPS تلقائي) وTraefik وتطبيق HRMS — اجمعها وفق احتياجاتك.",{"title":69,"body":70},"إعداد البيئة","انسخ `example.env` إلى `.env` واضبط المتغيرات الأساسية:\n\n```bash\ncp example.env .env\n```\n\nفي `.env`، حدّد `FRAPPE_SITE_NAME_HEADER` و`DB_PASSWORD` و`REDIS_CACHE`، وإن كنت تستخدم override Caddy — `LETSENCRYPT_EMAIL` والنطاق في `Caddyfile`. لا تنشر أبدًا بكلمات المرور الافتراضية.",{"title":72,"body":73},"تشغيل الحزمة","ابدأ جميع الخدمات:\n\n```bash\ndocker compose --project-name erpnext \\\n  -f compose.yaml \\\n  -f overrides\u002Fcompose.mariadb.yaml \\\n  -f overrides\u002Fcompose.redis.yaml \\\n  -f overrides\u002Fcompose.https.yaml \\\n  up -d\n```\n\nثم أنشئ موقع ERPNext وثبّت التطبيق:\n\n```bash\ndocker compose exec backend bench new-site erp.myapp.com \\\n  --mariadb-root-password \u003Crootpwd> \\\n  --admin-password \u003Cadminpwd>\ndocker compose exec backend bench --site erp.myapp.com install-app erpnext\ndocker compose exec backend bench --site erp.myapp.com migrate\n```\n\nتابع السجلات للتأكد من سلامة جميع الخدمات (db، redis، workers، scheduler): `docker compose logs -f`.",{"title":75,"body":76},"إعداد الوكيل العكسي","إن لم تكن تستخدم override Caddy المدرج، ضع Nginx أمام ERPNext. مثال مبسّط:\n\n```bash\nserver {\n  listen 443 ssl;\n  server_name erp.myapp.com;\n  ssl_certificate     \u002Fetc\u002Fletsencrypt\u002Flive\u002Ferp.myapp.com\u002Ffullchain.pem;\n  ssl_certificate_key \u002Fetc\u002Fletsencrypt\u002Flive\u002Ferp.myapp.com\u002Fprivkey.pem;\n  location \u002F { proxy_pass http:\u002F\u002F127.0.0.1:8080; proxy_set_header Host $host; }\n}\n```\n\nمع Caddy، يكفي `Caddyfile` بسيط: `erp.myapp.com { reverse_proxy backend:8000 }` — تُحصل شهادة Let's Encrypt وتُجدَّد تلقائيًا.",{"title":78,"body":79},"التأمين والنسخ الاحتياطي","قيّد المنافذ الداخلية (MariaDB 3306، Redis 6379) على loopback أو شبكة Docker الداخلية. جدوِل نسخًا احتياطية منتظمة بـ `bench backup` وخزّنها خارج VPS:\n\n```bash\ndocker compose exec backend bench --site erp.myapp.com backup --with-files\n```\n\nتوجد ملفات النسخ الاحتياطي في `sites\u002Ferp.myapp.com\u002Fprivate\u002Fbackups\u002F` داخل volume الـ `sites` — انسخها إلى تخزين كائنات خارجي (S3، Garage) للتعافي من الكوارث.",{"title":81,"body":82},"أول تسجيل دخول","افتح عنوان تطبيقك وسجّل الدخول باسم المستخدم `Administrator` وكلمة المرور المحددة عند `bench new-site`. احتسب بضع دقائق بعد التثبيت قبل أن يستجيب العنوان — فعمليات الترحيل الأولية تعمل في الخلفية. ثم ينتقل ERPNext إلى معالج الإعداد: اللغة والمنطقة الزمنية والعملة والسنة المالية والشركة.",{"type":39,"title":84,"body":85},"بعد التثبيت: الشركة والسنة المالية والمستخدمون","بمجرد تسجيل الدخول كـ Administrator، انتقل إلى **الإعدادات ← إعدادات النظام** لتأكيد المنطقة الزمنية وتنسيق التاريخ، ثم إلى **المحاسبة ← دليل الحسابات** لتكييف الهيكل مع المعايير المحلية (يوفر ERPNext دلائل حسابات لنحو مئة دولة).\n\nأنشئ شركتك في **المحاسبة ← الشركة**: أدخل العملة الأساسية والرقم الضريبي وسنة البدء المالية. يُنشئ ERPNext تلقائيًا حسابات الإقفال وقيود الرصيد الافتتاحي.\n\nللمستخدمين، انتقل إلى **الإعدادات ← المستخدمون والصلاحيات ← المستخدم**: عيّن الأدوار المهنية (Accounts Manager، Stock User، HR Manager…) بدلًا من الصلاحيات مستندًا بمستند. الأدوار قابلة للتجميع: يمكن للمستخدم أن يكون في آنٍ واحد `Sales User` و`Purchase User` دون صلاحيات إدارة.",{"type":39,"title":87,"body":88},"المراقبة والصيانة","يوفر ERPNext عدة نقاط دخول للإشراف على نسخة الإنتاج.\n\n**`bench doctor`** هو أمر التشخيص المدمج: يتحقق من حالة عمّال Celery والمجدوِل واتصال Redis. شغّله من الحاوية:\n\n```bash\ndocker compose exec backend bench doctor\n```\n\nيظهر العامل المفقود أو الطابور المعلّق فورًا.\n\n**سجلات التطبيق** — سجلات ERPNext في `sites\u002F\u003Csite>\u002Flogs\u002F` داخل volume الـ `sites`:\n- `web.log`: أخطاء HTTP وآثار Python من backend Gunicorn;\n- `worker.error.log`: استثناءات عمّال Celery (المهام المجدوَلة، إرسال البريد);\n- `scheduler.log`: دورات المجدوِل.\n\n**النسخ الاحتياطي التلقائي** — أنشئ مهمة cron على المضيف لتشغيل `bench backup` يوميًا ونسخ الأرشيفات إلى تخزين بعيد:\n\n```bash\n0 3 * * * docker compose -p erpnext exec -T backend \\\n  bench --site erp.myapp.com backup --with-files \\\n  && rclone copy \u002Fpath\u002Fto\u002Fbackups remote:erpnext-backups\n```\n\n**التحديثات** — قبل أي ترقية إلى إصدار رئيسي، قم بنسخة احتياطية كاملة، واقرأ ملاحظات الإصدار، واختبر على نسخة، ثم: `bench update --reset` داخل الحاوية. تُطبَّق ترحيلات المخطط تلقائيًا، لكن بعض الإصدارات الرئيسية لـ ERPNext تستلزم الترقية إلى أعلى إصدار ثانوي أولًا (مثلًا v14 → v14.x latest قبل الانتقال إلى v15).",{"type":39,"title":90,"body":91},"استكشاف الأخطاء: المشكلات الشائعة","**تعطّل العامل: `RedisBroadcastError` أو `ConnectionRefusedError` نحو Redis**\nخطأ في `worker.error.log`: `redis.exceptions.ConnectionRefusedError: [Errno 111] Connection refused`. السبب: توقّف حاوية Redis أو أعادت التشغيل بعد نفاد الذاكرة. تحقّق: `docker compose ps redis` — إن كانت `Exited`، أعد تشغيلها بـ `docker compose up -d redis` ثم أعد تشغيل العمّال. إن تكرر التعطّل، زِد RAM الـ VPS أو قلّل عدد العمّال في `common_site_config.json`.\n\n**ترحيل المخطط متوقف: `frappe.exceptions.SchemaChangedError`**\nخطأ أثناء `bench migrate`: `SchemaChangedError: \u003CDocType> has been manually modified`. السبب: عُدِّل عمود يدويًا في قاعدة البيانات، ويرفض ERPNext الكتابة فوقه. العلاج: `bench --site erp.myapp.com migrate --skip-failing`، ثم افحص DocType المعني في الواجهة وأعد تشغيل `migrate` بدون الراية.\n\n**انتهاء مهلة bench: `Traceback ... requests.exceptions.ReadTimeout`**\nخطأ أثناء عملية طويلة (استيراد CSV ضخم، إعادة حساب المخزون): `ReadTimeout: HTTPConnectionPool`. زِد مهلة Gunicorn في `common_site_config.json`: `\"gunicorn_workers\": 2, \"web_timeout\": 120`. أعد تشغيل خدمة الويب: `docker compose restart backend`.\n\n**رفض اتصال MariaDB: `OperationalError: (2003, \"Can't connect to MySQL server on 'db'\")`**\nخطأ عند `bench new-site` أو عند بدء تشغيل العمّال. السبب المعتاد: حاوية MariaDB ليست جاهزة بعد أو فشل فحص الحالة. تحقّق: `docker compose logs db | tail -20`. إن أظهرت MariaDB `[ERROR] InnoDB: Page 0 log sequence number`، ملفات قاعدة البيانات تالفة — استعِد من آخر نسخة احتياطية. إن كان مجرد تأخير في الإقلاع، انتظر 30 ثانية وأعد الأمر.\n\n**موقع فارغ بعد `bench migrate`: `TemplateNotFound`**\nيعرض ERPNext صفحة بيضاء أو خطأ Jinja بعد التحديث. السبب: لم تُعاد بناء الأصول الثابتة. شغّل: `docker compose exec backend bench --site erp.myapp.com clear-cache && bench build --app erpnext`. قد يكفي إعادة تشغيل حاوية `frontend` (إن كانت منفصلة).",{"type":93,"title":94,"headers":95,"rows":99},"comparison","ERPNext مقابل Odoo Community: متى تختار أيًّا منهما",[96,97,98],"المعيار","ERPNext","Odoo Community",[100,104,108,112,116,120,124],[101,102,103],"الرخصة","GPL v3 — الكود والوحدات مجانية","LGPL v3 (core) — وحدات Enterprise ملكية",[105,106,107],"الوحدات المدرجة","محاسبة، مخزون، CRM، تصنيع، موارد بشرية — جميعها مجانية","نواة وظيفية؛ الوحدات المتقدمة محجوزة لـ Odoo Enterprise المدفوع",[109,110,111],"اللغة \u002F الstack","Python + Frappe، JS عادي من جانب العميل","Python + OWL (إطار JS داخلي)",[113,114,115],"الواجهة","مكتب تطبيقات، نماذج قابلة للتهيئة بلا كود","عرض kanban\u002Fقائمة، studio low-code (Enterprise)",[117,118,119],"تعقيد التثبيت","stack Docker رسمية موثقة توثيقًا جيدًا","Docker متاح، لكن بتجربة مجتمعية أقل",[121,122,123],"المجتمع","نشط على GitHub ومنتدى Frappe؛ قوي في الهند وأفريقيا","واسع جدًا؛ شبكة شركاء كثيفة في أوروبا",[125,126,127],"مثالي لـ","الشركات الباحثة عن ERP مجاني كامل، التصنيع، متعدد العملات","الشركات الراغبة في CRM متقدم أو تجارة إلكترونية Odoo بلا تطوير مخصص",{"type":129,"body":130},"tip","يتطوّر ERPNext عبر إصدارات كبرى مع ترحيلات للمخطط: قبل كل تحديث، خذ نسخة `bench backup` كاملة واختبر ترقية الإصدار على نسخة قبل تطبيقه في الإنتاج. يجب أن تتبع الترحيلات بين الإصدارات الكبرى المسار الرسمي (مثلًا v14 → v15 دون تخطي إصدار).",{"type":129,"title":132,"body":133},"الوثائق الرسمية","للإعدادات المتقدمة والخيارات الخاصة بالأداة، راجع \u003Ca href=\"https:\u002F\u002Fdocs.erpnext.com\">الوثائق الرسمية لـ ERPNext\u003C\u002Fa> ومستودع \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffrappe\u002Ffrappe_docker\">frappe_docker\u003C\u002Fa>. يغطّي هذا الدليل النشر على VPS؛ وتبقى وثائق الناشر المرجع للإعدادات الدقيقة والتحديثات الكبرى وحالات الاستخدام الخاصة.","انشر نسختك على VPS Cloud من ServOrbit","يتيح لك VPS Cloud من ServOrbit مع Docker مُعَدّ مسبقًا وموارد قابلة للتوسّع تثبيت هذه الأداة دون احتكاك، وتعديل RAM وvCPU مع نمو الاستخدام.","أطلق VPS Cloud الخاص بي","\u002Fvps-cloud",[139,158,182],{"id":140,"slug":141,"slugs":142,"title":146,"excerpt":147,"readTime":148,"views":149,"isPinned":19,"noindex":19,"publishedAt":150,"updatedAt":151,"category":152,"categories":153,"featuredImage":30,"bgImage":31,"posterImage":155,"relatedSolution":156},143,"استضافة-dolibarr-على-خادم-vps-نظام-erp-حر-تحت-السيطرة",{"fr":143,"en":144,"ar":141,"es":145},"heberger-dolibarr-vps","hosting-dolibarr-on-a-vps-open-source-erp-under-control","alojar-dolibarr-en-un-vps-erp-libre","استضافة Dolibarr على خادم VPS: نظام ERP حر تحت السيطرة","انشر Dolibarr على خادم VPS من ServOrbit: نظام ERP\u002FCRM حر، وقاعدة بيانات مضبوطة، ونسخ احتياطية، ووصول HTTPS لشركتك الصغيرة أو المتوسطة.",11,0,"2026-02-02T00:00:00+00:00","2026-11-09T20:55:19+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[154],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-dolibarr-vps-poster.svg",{"categorySlug":34,"appSlug":157},"dolibarr",{"id":159,"slug":160,"slugs":161,"title":165,"excerpt":166,"readTime":17,"views":167,"isPinned":19,"noindex":19,"publishedAt":168,"updatedAt":169,"category":170,"categories":176,"featuredImage":30,"bgImage":31,"posterImage":178,"relatedSolution":179},56,"postgresql-على-خادم-vps-قاعدة-بيانات-موثوقة-ومتحكم-بها",{"fr":162,"en":163,"ar":160,"es":164},"heberger-postgresql-vps","postgresql-on-a-vps-a-reliable-and-controlled-database","alojar-postgresql-en-un-vps","‎PostgreSQL على خادم VPS: قاعدة بيانات موثوقة ومتحكَّم بها","‎استضف PostgreSQL على VPS: إعداد الإنتاج، نسخ pgBackRest، HA بالبث، مقارنة RDS\u002FSupabase\u002FNeon واستكشاف أخطاء OOM.",1,"2026-04-25T00:00:00+00:00","2026-10-21T15:21:37+00:00",{"id":171,"name":172,"slug":173,"color":174,"icon":175},6,"قواعد البيانات","bases-de-donnees","bg-teal-500\u002F10 text-teal-400","database",[177],{"id":171,"name":172,"slug":173,"color":174,"icon":175},"\u002Fblog\u002Fcovers\u002Fheberger-postgresql-vps-poster.svg",{"categorySlug":180,"appSlug":181},"قواعد-البيانات","postgresql-stack",{"id":183,"slug":184,"slugs":185,"title":189,"excerpt":190,"readTime":191,"views":192,"isPinned":19,"noindex":19,"publishedAt":193,"updatedAt":194,"category":195,"categories":196,"featuredImage":30,"bgImage":31,"posterImage":198,"relatedSolution":199},134,"استضف-twenty-crm-بنفسك-على-vps-بديل-salesforce-مفتوح-المصدر",{"fr":186,"en":187,"ar":184,"es":188},"self-host-twenty-crm-vps","self-host-twenty-crm-on-vps-open-source-salesforce-alternative","alojar-twenty-crm-en-un-vps","استضف Twenty CRM بنفسك على VPS: بديل Salesforce مفتوح المصدر","انشر Twenty CRM على VPS من ServOrbit — بديل Salesforce مفتوح المصدر مع كائنات مخصّصة، وواجهة GraphQL API، وعامل خلفية للأتمتة. رخصة AGPL-3.0، جاهز للإنتاج منذ الإصدار v2.1.0.",4,3,"2026-02-13T00:00:00+00:00","2026-11-04T16:30:26+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[197],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fself-host-twenty-crm-vps-poster.svg",{"categorySlug":34,"appSlug":200},"twenty",true,1794270292999]