نقل Odoo من سيرفر إلى آخر يبدو للوهلة الأولى مجرّد «نسخ ملفات»، لكنه في الحقيقة عملية من جزأين لا ينفصلان: قاعدة بيانات PostgreSQL التي تحوي كل سجلّاتك وإعداداتك، ومجلّد filestore الذي يحوي المرفقات والصور والملفات المرفوعة خارج القاعدة. إن نقلت أحدهما دون الآخر، فستفتح Odoo على السيرفر الجديد لتجد السجلّات موجودة لكن المرفقات والصور مكسورة. في هذا الدليل من مرام هوست نشرح نقل Odoo إلى سيرفر جديد خطوة بخطوة، بأوامر حقيقية، ودون فقد أي مرفق أو صفّ بيانات.

⚡ الإجابة المختصرة

نقل Odoo إلى سيرفر جديد يتطلّب نقل شيئين معًا: قاعدة بيانات PostgreSQL (عبر pg_dump ثم pg_restore) ومجلّد filestore (عبر rsync أو scp). الشرط الأهم: أن يكون على السيرفر الجديد نفس إصدار Odoo ونفس الموديولات المثبّتة على القديم. الترتيب: جهّز السيرفر الجديد، أوقف Odoo القديم، صدّر القاعدة وانسخ filestore، استعِد واضبط الصلاحيات، ثم اختبر قبل تحويل الـ DNS — فيقتصر التوقّف على دقائق.
نقل Odoo إلى سيرفر جديد: قاعدة بيانات PostgreSQL ومجلّد filestore يجب أن ينتقلا معًا، والخطوات الخمس
نقل Odoo إلى سيرفر جديد: الجزآن اللذان يجب نقلهما معًا، وخطوات النقل الخمس بالترتيب.

لماذا نقل Odoo ليس مجرّد نسخ ملفات؟

تخزّن Odoo بياناتك في مكانين منفصلين، وفهم ذلك هو مفتاح النقل السليم:

  • قاعدة بيانات PostgreSQL: تحوي كل السجلّات والحسابات والإعدادات وبيانات التطبيق. تُنقل كنسخة منطقية كاملة.
  • مجلّد filestore: تحفظ فيه Odoo المرفقات والصور والملفات المرفوعة (فواتير PDF، صور المنتجات، مستندات) على القرص خارج القاعدة، ويشير إليها سجلّ ir_attachment بالقاعدة.

لأن القاعدة تشير إلى ملفات filestore بمعرّفاتها، فإن نقل القاعدة وحدها يترك المرفقات معلّقة في الفراغ. لذلك أي عملية نقل Odoo إلى سيرفر جديد ناجحة تنقل الجزأين معًا وتحافظ على تطابقهما.

ما الذي يجب أن ينتقل بالضبط؟

قبل البدء، جهّز قائمة بكل ما يجب أن ينتقل حتى لا تنسى شيئًا:

  • قاعدة البيانات (PostgreSQL).
  • مجلّد filestore الخاص بالقاعدة.
  • الموديولات المخصّصة (custom addons) إن كانت لديك — مجلّد الشيفرة الخاص بها.
  • ملف الإعداد odoo.conf (لمعرفة data_dir وaddons_path والمنافذ).
  • اعتماديات Python الإضافية التي تحتاجها موديولاتك (من requirements.txt).

لتقدير مواصفات السيرفر الجديد بشكل صحيح قبل النقل، راجِع دليلنا حول بنية Odoo وتقدير CPU وRAM وPostgreSQL بحسب عدد المستخدمين.

الشرط الأهم: تطابق الإصدار والموديولات

لا تتجاوز هذه النقطة

يجب أن يكون على السيرفر الجديد نفس إصدار Odoo بالضبط (مثلًا 18.0 إلى 18.0) ونفس الموديولات المثبّتة بنفس إصداراتها. النقل بين إصدارين مختلفين (مثلًا 17 إلى 18) ليس «نقلًا» بل ترقية (Upgrade) — عملية مختلفة تمامًا تتطلّب سكربتات تهجير خاصة. أما نقل قاعدة كما هي إلى إصدار أحدث دون ترقية فيؤدّي إلى أخطاء أو تعطّل البيانات.

الطريقة الأولى لنقل Odoo إلى سيرفر جديد: الأداة المدمجة

أبسط طريقة لـ نقل Odoo إلى سيرفر جديد للقواعد الصغيرة والمتوسّطة هي مدير قواعد البيانات المدمج. من صفحة /web/database/manager اضغط Backup فتحصل على ملف .zip يجمع القاعدة وfilestore معًا، ثم على السيرفر الجديد اضغط Restore وارفعه. توثّق ذلك وثائق Odoo الرسمية لإدارة قواعد البيانات.

متى لا تصلح الطريقة المدمجة؟

ملف النسخة المدمجة يمرّ عبر الويب، وقد يفشل مع القواعد الكبيرة (عدة جيجابايت) بسبب مهلة الطلب أو حدود الرفع في الوكيل العكسي. إذا تجاوزت قاعدتك ~1–2 جيجابايت، انتقل إلى الطريقة اليدوية أدناه. ولمزيد عن بنية النسخ الاحتياطي راجِع دليل نسخ Odoo الاحتياطي: PostgreSQL وfilestore وخطة الاستعادة.

الطريقة الثانية لنقل Odoo إلى سيرفر جديد: النقل اليدوي

هذه الطريقة الأمتن، وتُنصح بها للقواعد الكبيرة أو عند الحاجة إلى تحكّم كامل. جوهر نقل Odoo إلى سيرفر جديد يدويًا ثلاث مراحل: تصدير القاعدة، نسخ filestore، ثم الاستعادة.

1) أوقف Odoo وصدّر قاعدة البيانات

أوقف خدمة Odoo على السيرفر القديم أولًا لضمان اتّساق البيانات لحظة النسخ، ثم صدّر القاعدة بصيغة مضغوطة (custom format) الأسرع في الاستعادة:

# على السيرفر القديم
sudo systemctl stop odoo

# نسخة مضغوطة كاملة من القاعدة (استبدل mydb باسم قاعدتك)
pg_dump -U odoo -h localhost -Fc mydb > /tmp/mydb.dump

الخيار -Fc ينتج ملفًا مضغوطًا يُستعاد بـ pg_restore بتوازٍ وسرعة أعلى، كما في توثيق PostgreSQL الرسمي لأداة pg_dump.

2) انسخ مجلّد filestore

موقع filestore يعتمد على طريقة التثبيت؛ تحقّق من قيمة data_dir في odoo.conf. في التثبيت كخدمة يكون غالبًا تحت /var/lib/odoo، وفي التشغيل من المصدر تحت مجلّد المستخدم:

# انسخ مجلّد filestore الخاص بالقاعدة إلى السيرفر الجديد
rsync -avz /var/lib/odoo/.local/share/Odoo/filestore/mydb/ 
      user@NEW_SERVER:/tmp/filestore-mydb/

3) استعِد على السيرفر الجديد واضبط الصلاحيات

على السيرفر الجديد (وعليه نفس إصدار Odoo ونفس الموديولات)، أنشئ القاعدة واستعِدها، ثم ضع filestore في مكانه واضبط ملكيّته لمستخدم odoo:

# على السيرفر الجديد
sudo -u postgres createdb -O odoo mydb
pg_restore -U odoo -h localhost -d mydb /tmp/mydb.dump

# ضع filestore واضبط الملكية
mkdir -p /var/lib/odoo/.local/share/Odoo/filestore/mydb
mv /tmp/filestore-mydb/* /var/lib/odoo/.local/share/Odoo/filestore/mydb/
chown -R odoo:odoo /var/lib/odoo/.local/share/Odoo/filestore/mydb

sudo systemctl start odoo

إن نسيت خطوة chown فلن يستطيع Odoo قراءة المرفقات رغم وجودها — وهذا من أكثر أخطاء نقل Odoo إلى سيرفر جديد شيوعًا.

نقل Odoo إلى سيرفر جديد بأقلّ توقّف ممكن

لا تحوّل الدومين فورًا. الترتيب الذكي يجعل التوقّف دقائق لا ساعات:

  1. انقل نسخة أولى واختبر التطبيق على السيرفر الجديد عبر عنوان IP مؤقّت أو دومين فرعي.
  2. تأكّد أن تسجيل الدخول يعمل، وأن المرفقات والصور تظهر، وأن التقارير تُطبع.
  3. في نافذة الصيانة، أوقف القديم، انقل «دلتا» التغييرات الأخيرة فقط (نسخة نهائية سريعة).
  4. حوّل الـ DNS إلى السيرفر الجديد — وبعد التأكّد، أبقِ القديم للقراءة أيامًا احتياطًا.

لتأمين السيرفر الجديد قبل تشغيله في الإنتاج، طبّق أساسيات تصميم بنية Odoo آمنة وقابلة للتوسّع، وبعد النقل يمكنك تحسين الأداء وفق دراسة حالة ضبط PostgreSQL لـ Odoo.

أخطاء شائعة عند نقل Odoo

  • نسيان filestore: نقل القاعدة وحدها فتظهر السجلّات والمرفقات مكسورة.
  • اختلاف الإصدار: استعادة قاعدة 17 على Odoo 18 دون ترقية رسمية.
  • نسيان ضبط الملكية (chown): filestore موجود لكن Odoo لا يقرأه.
  • نسيان الموديولات المخصّصة: القاعدة تشير إلى موديول غير مثبّت فيفشل الإقلاع.
  • تجاهل اعتماديات Python: موديول يحتاج مكتبة غير موجودة على الجديد.
  • عدم إيقاف Odoo قبل النسخ: نسخة غير متّسقة بسبب كتابات جارية أثناء الـ dump.

قائمة تحقّق بعد نقل Odoo إلى سيرفر جديد

  • تسجيل الدخول يعمل بحسابات المستخدمين نفسها.
  • المرفقات والصور تظهر في السجلّات القديمة (دليل نجاح filestore).
  • الموديولات كلها مثبّتة وتعمل دون خطأ إقلاع.
  • مهام cron المجدولة تعمل، وإعدادات البريد الصادر صحيحة.
  • الأداء مقبول تحت الحمل الفعلي — راقِب PostgreSQL أول أيام.

الأسئلة الشائعة

هل يكفي نقل قاعدة بيانات Odoo وحدها؟

لا. يجب نقل قاعدة PostgreSQL ومجلّد filestore معًا؛ القاعدة تشير إلى المرفقات المخزّنة في filestore، فنقلها وحدها يترك الصور والمرفقات مكسورة على السيرفر الجديد.

ما الفرق بين نقل Odoo وترقيته؟

النقل ينقل القاعدة كما هي بين سيرفرين يحملان نفس إصدار Odoo. الترقية تنقل البيانات إلى إصدار أحدث وتتطلّب سكربتات تهجير رسمية؛ لا تستعِد قاعدة إصدار قديم على إصدار أحدث مباشرة.

أين يوجد مجلّد filestore في Odoo؟

يتحدّد بقيمة data_dir في ملف odoo.conf. في التثبيت كخدمة يكون غالبًا تحت /var/lib/odoo/.local/share/Odoo/filestore، وفي التشغيل من المصدر تحت مجلّد المستخدم ~/.local/share/Odoo/filestore.

هل أحتاج إيقاف Odoo أثناء النقل؟

نعم، أوقف الخدمة على السيرفر القديم قبل أخذ النسخة لضمان اتّساق البيانات. يمكنك تقليل التوقّف بنقل نسخة أولى للاختبار، ثم نقل التغييرات النهائية في نافذة صيانة قصيرة قبل تحويل الـ DNS.

كم يستغرق نقل Odoo إلى سيرفر جديد؟

يعتمد على حجم القاعدة ومجلّد filestore وسرعة الشبكة. النقل التقني قد يستغرق دقائق إلى ساعات للقواعد الكبيرة، لكن زمن التوقّف الفعلي يبقى دقائق إذا اختبرت أولًا ثم حوّلت الـ DNS في النهاية.

الخلاصة

نجاح نقل Odoo إلى سيرفر جديد يقوم على مبدأ واحد: انقل قاعدة PostgreSQL ومجلّد filestore معًا، على سيرفر يحمل نفس إصدار Odoo ونفس الموديولات. استخدم الأداة المدمجة للقواعد الصغيرة، والطريقة اليدوية (pg_dump + rsync + pg_restore) للكبيرة، واضبط ملكية filestore بعد الاستعادة، ثم اختبر كل شيء قبل تحويل الـ DNS. بهذا تنتقل بلا فقد مرفق واحد وبأقلّ توقّف ممكن.

تريد نقل Odoo دون متاعب تقنية؟

في خدمة استضافة Odoo عالية الأداء من مرام هوست نوفّر سيرفرات مهيّأة بنفس إصدارك وموديولاتك، ونتولّى نقل القاعدة وfilestore بأمان مع اختبار قبل التحويل. اطلب نقل Odoo الآن ←