كيف تثبّت أودو (Odoo) 20 على Ubuntu 24.04: يدويًا أو ببضع نقرات
ثبّت Odoo 20 على Ubuntu 24.04 كما تشرح وثائق Odoo الرسمية: Python 3.12 وPostgreSQL 16 وwkhtmltopdf وrtlcss وsystemd وnginx وHTTPS، أو دع Knova Cloud يتولى ذلك.
بقلم محمد سلمان علي خان، مؤسس Knova Digital Solutions · نُشر في · 8 دقائق للقراءة · تثبيت أودو, Ubuntu, أودو 20, خادمك الخاص
رفع الإصدار Odoo 20 الحد الأدنى من متطلباته، والإصدار Ubuntu 24.04 LTS هو الذي يلبّيها مباشرةً دون إضافات. يشرح هذا الدليل تثبيت Odoo 20 على خادم Ubuntu 24.04 جديد وفق وثائق Odoo الرسمية للإصدار 20.0، مع تفاصيل الإنتاج التي تتركها الوثائق لك: خدمة تعيد تشغيل نفسها، وعدد مناسب من العمّال، ومدير قواعد بيانات مخفي، وHTTPS، ونسخ احتياطية. وفي النهاية سترى كيف ينجز Knova Cloud الأمر نفسه على خادمك ببضع نقرات.
كل متطلب أدناه مأخوذ من وثائق Odoo الرسمية للإصدار 20.0، وقد تحققنا منها في 8 أكتوبر 2026؛ وتجد المصادر في آخر المقال.
Odoo علامة تجارية لشركة Odoo S.A. أما Knova Cloud فخدمة مستقلة، غير تابعة لشركة Odoo S.A. ولا معتمدة منها.
ما الذي تغيّر في أودو 20
ثلاثة تغييرات تهمّك عند تثبيت Odoo 20 على خادم:
- Python 3.12 أو أحدث. رفع Odoo 20 الحد الأدنى من Python 3.10 إلى 3.12. يأتي Ubuntu 24.04 مع Python 3.12، أما Ubuntu 22.04 فيأتي مع 3.10 الذي لم يعد كافيًا.
- PostgreSQL 16 أو أحدث. ارتفع الحد الأدنى من PostgreSQL 13 إلى 16، والحزمة
postgresqlفي Ubuntu 24.04 هي الإصدار 16. - امتداد pgvector لمزايا الذكاء الاصطناعي. تحتاج مزايا الذكاء الاصطناعي في Odoo إلى امتداد pgvector في PostgreSQL، ويوفّره Ubuntu 24.04 في الحزمة
postgresql-16-pgvector.
كما تذكر حزمة .deb الرسمية لـ Odoo 20 أن إصدار Ubuntu المدعوم هو 24.04 (Noble). باختصار: استخدم 24.04 لا 22.04.
قبل أن تبدأ
ستحتاج إلى:
- خادم Ubuntu 24.04 يمكنك الوصول إليه بصلاحيات root عبر SSH، بذاكرة لا تقل عن 2 غيغابايت لفريق صغير. المزيد من المستخدمين يحتاج إلى مزيد من العمّال والذاكرة، وحاسبة عمّال أودو لدينا تطبّق قاعدة Odoo في تحديد الحجم على أرقامك.
- اسم نطاق (مثل
erp.example.com) يشير سجل A الخاص به إلى الخادم، إذا كنت تريد HTTPS. - اشتراك أودو Enterprise فقط إذا كنت ستثبّت نسخة Enterprise، أما Community فلا تحتاج إلى اشتراك.
هناك طريقتان للتثبيت: مستودع الحزم الخاص بـ Odoo، وهو سريع، أو الشيفرة المصدرية داخل بيئة افتراضية، وهي تمنحك تحكمًا أكبر، وعليها تسير بقية هذا الدليل.
الطريقة السريعة: حزمة أودو
تنشر Odoo حزمًا ليلية لنسخة Community من الإصدار 20.0، وتعطي صفحة الحزم لديها هذه الأوامر:
wget -q -O - https://nightly.odoo.com/odoo.key | sudo gpg --dearmor -o /usr/share/keyrings/odoo-archive-keyring.gpg
echo 'deb [signed-by=/usr/share/keyrings/odoo-archive-keyring.gpg] https://nightly.odoo.com/20.0/nightly/deb/ ./' | sudo tee /etc/apt/sources.list.d/odoo.list
sudo apt-get update && sudo apt-get install odooثبّت PostgreSQL أولًا، وثبّت wkhtmltopdf بشكل منفصل (الخطوة 2 أدناه). تشغّل الحزمة Odoo كخدمة، وتنشئ مستخدم PostgreSQL الخاص به، وتتحدّث مع أمر apt-get upgrade. لا يوجد مستودع ليلي لنسخة Enterprise؛ فحزمها تأتي من صفحة التنزيل لدى Odoo. وتنبّه Odoo نفسها إلى أن تحديث الحزم الليلية قد يكون صعبًا، وهذا أحد أسباب تفضيل كثير من الفرق للتثبيت من المصدر كما يلي.
1. حزم النظام وPostgreSQL 16
حدّث الخادم، ثم ثبّت PostgreSQL وGit وNode.js والمكتبات التي تُبنى عليها حزم Python التي يستخدمها Odoo:
apt-get update && apt-get upgrade -y
apt-get install -y postgresql postgresql-16-pgvector git nodejs npm \
python3-venv python3-dev build-essential libpq-dev libldap2-dev libsasl2-dev \
libxml2-dev libxslt1-dev libjpeg-dev zlib1g-devاحذف حزمة pgvector إذا لم تكن ستستخدم مزايا الذكاء الاصطناعي. ثم أنشئ مستخدم نظام مخصصًا لـ Odoo، ودورًا في PostgreSQL يستطيع إنشاء قواعد البيانات لكنه لا يملك صلاحيات المستخدم الفائق، فـ Odoo يرفض الاتصال بالمستخدم postgres:
adduser --system --group --home /opt/odoo odoo
sudo -u postgres createuser --createdb odooللدور الاسم نفسه الذي يحمله مستخدم النظام، لذا يتصل Odoo عبر المقبس المحلي دون كلمة مرور.
2. أداتا wkhtmltopdf وrtlcss
wkhtmltopdf هي الأداة التي تطبع كل تقارير PDF. تطلب وثائق Odoo الإصدار 0.12.6 المبني مع Qt المعدّلة، مثبّتًا يدويًا، حتى تظهر الترويسات والتذييلات؛ والحزمة الموجودة في Ubuntu ليست هذا الإصدار. لا يتضمن أحدث إصدار من مشروع wkhtmltopdf (0.12.6.1-3) حزمة لـ 24.04، لكن حزمة 22.04 (jammy) تُثبَّت على 24.04 مع تكفّل apt بالاعتماديات:
apt-get install -y ./wkhtmltox_0.12.6.1-3.jammy_amd64.debنزّل الملف من صفحة إصدارات المشروع أولًا، واطبع فاتورة تجريبية بعد التثبيت للتأكد من الترويسات والتذييلات.
rtlcss مطلوبة للغات التي تُكتب من اليمين إلى اليسار مثل العربية والعبرية. إذا كان أي شخص سيستخدم Odoo بالعربية، فثبّتها الآن:
npm install -g rtlcss3. أودو 20 داخل بيئة افتراضية
انسخ الفرع 20.0 وحده، ثم ثبّت متطلبات Python الخاصة به داخل بيئة افتراضية يملكها مستخدم Odoo:
sudo -u odoo git clone --depth 1 --branch 20.0 https://github.com/odoo/odoo.git /opt/odoo/odoo
sudo -u odoo python3 -m venv /opt/odoo/venv
sudo -u odoo /opt/odoo/venv/bin/pip install -r /opt/odoo/odoo/requirements.txt
mkdir -p /opt/odoo/custom-addons /var/log/odoo && chown odoo: /opt/odoo/custom-addons /var/log/odooتقترح وثائق Odoo أيضًا السكربت setup/debinstall.sh الذي يثبّت الاعتماديات كحزم من Ubuntu بدلًا من ذلك. اختر إحدى الطريقتين؛ فالبيئة الافتراضية تُبقي حزم Python الخاصة بـ Odoo منفصلة عن حزم النظام. ولنسخة Enterprise، أضف وحدات Enterprise من صفحة التنزيل لدى Odoo (أو من مستودع odoo/enterprise، الفرع 20.0، إن كان حسابك يملك صلاحية الوصول إليه)، وضعها أولًا في مسار الوحدات كما تشترط الوثائق.
4. ملف الإعدادات
أنشئ الملف /etc/odoo/odoo.conf بملكية root ومجموعة odoo، وبصلاحية قراءة للمجموعة فقط (chmod 640):
[options]
admin_passwd = a-long-random-master-password
db_user = odoo
addons_path = /opt/odoo/odoo/addons,/opt/odoo/custom-addons
http_interface = 127.0.0.1
proxy_mode = True
list_db = False
workers = 3
max_cron_threads = 1
limit_memory_soft = 2147483648
limit_memory_hard = 2684354560
logfile = /var/log/odoo/odoo.logأهم الأسطر:
- كلمة المرور الرئيسية (admin_passwd): كلمة مرور مدير قواعد البيانات. لا تُبقِ القيمة الافتراضية أبدًا.
- إخفاء قائمة قواعد البيانات (list_db): يخفي قائمة قواعد البيانات ومديرها عن صفحة تسجيل الدخول.
- واجهة الاستماع ووضع الوكيل (http_interface وproxy_mode): يستمع Odoo محليًا خلف nginx، ويثق بـ nginx في عنوان الزائر وفي HTTPS، كما يشترط دليل النشر الخاص بـ Odoo عند العمل خلف وكيل.
- العمّال (workers): يقدّر دليل Odoo عاملًا واحدًا لكل 6 مستخدمين متزامنين، وبحد أقصى (الأنوية × 2) + 1 على الخادم، مع نحو 150 ميغابايت للعامل الخفيف و1 غيغابايت للثقيل.
أضف قاعدة logrotate لملف السجل حتى لا يملأ القرص مع مرور الأشهر.
5. خدمة systemd
أنشئ الملف /etc/systemd/system/odoo.service:
[Unit]
Description=Odoo 20
After=network.target postgresql.service
[Service]
Type=simple
User=odoo
Group=odoo
ExecStart=/opt/odoo/venv/bin/python3 /opt/odoo/odoo/odoo-bin -c /etc/odoo/odoo.conf
Restart=on-failure
[Install]
WantedBy=multi-user.targetنفّذ systemctl daemon-reload && systemctl enable --now odoo، ثم تابع ملف السجل حتى يُعلن تحميل الوحدات.
6. nginx وHTTPS
ثبّت nginx وcertbot (apt-get install -y nginx certbot python3-certbot-nginx). مع تشغيل العمّال، تمر الدردشة المباشرة والإشعارات عبر المسار /websocket الذي تخدمه عملية gevent الخاصة بـ Odoo على المنفذ 8072، لذا يوجّه nginx ذلك المسار إليها:
upstream odoo { server 127.0.0.1:8069; }
upstream odoochat { server 127.0.0.1:8072; }
server {
listen 80;
server_name erp.example.com;
client_max_body_size 100m;
location /websocket {
proxy_pass http://odoochat;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location / {
proxy_pass http://odoo;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}تحقّق من الإعدادات بالأمر nginx -t، وأعد تحميل nginx، ثم شغّل certbot لنطاقك للحصول على شهادة Let's Encrypt تتجدد تلقائيًا. لا تسمح في جدار الحماية إلا بـ SSH والمنفذين 80 و443، ولا تكشف أبدًا المنافذ 8069 و8072 ولا منفذ PostgreSQL 5432 للإنترنت.
7. أنشئ قاعدة البيانات، ثم اعتنِ بها
افتح عنوان نطاقك وأنشئ قاعدة بياناتك ببريد المدير، والدولة (فهي تثبّت الحزمة المحاسبية المحلية المناسبة)، والتطبيقات التي تحتاجها. أما العمل الذي يلي ذلك فلا ينتهي: نسخ احتياطية يومية تُحفظ خارج الخادم وتُستعاد بين حين وآخر للتأكد من صلاحيتها، وتحديثات أمنية لنظام Ubuntu، ومراقبة لـ Odoo والقرص والشهادة، وترقيات قبل أن ينتهي دعم إصدارك.
أو: دع Knova Cloud يثبّته على خادمك
كل ما سبق هو ما يفعله برنامج التثبيت في Knova Cloud على خادمك الخاص، إضافةً إلى التشغيل اليومي بعد ذلك. اربط الخادم بأمر واحد، وانقر تثبيت Odoo، واختر الإصدار 20.0 (أو من 17.0 إلى 19.0)، وCommunity أو Enterprise، ونطاقك ولغتك وتطبيقاتك، وراجع الخطة قبل أن تبدأ:
- تثبيت أصلي أو عبر Docker، بحسب إصدار Python على الخادم؛
- العمّال وحدود الذاكرة محسوبة من معالجات الخادم وذاكرته، مع عرض طريقة الحساب؛
- إعدادات آمنة افتراضيًا: كلمة مرور رئيسية عشوائية، وقائمة قواعد البيانات مخفية، ومستخدم نظام خاص، وتدوير للسجلات؛
- HTTPS بمجرد أن يشير نطاقك إلى الخادم.
يستغرق التثبيت ما بين 8 و15 دقيقة تقريبًا، وتتابعه مباشرة. وإذا فشل، يزيل برنامج التثبيت ما أنشأه ويُسترد المبلغ كاملًا. بعد ذلك يحصل الخادم على المراقبة، ونسخ احتياطية يومية تُختبر استعادتها أسبوعيًا، وتدقيق أمني، وطرفية ويب مسجّلة. اطّلع على تثبيت أودو على خادمك الخاص وعلى صفحة الأسعار لمعرفة الأسعار الحالية.
المصادر
- وثائق Odoo 20.0، التثبيت من المصدر: Python 3.12 وPostgreSQL 16 وpgvector والسكربت debinstall.sh وrtlcss وwkhtmltopdf 0.12.6.
- وثائق Odoo 20.0، المثبّتات الجاهزة: المستودع الليلي ودعم Ubuntu 24.04.
- وثائق Odoo 20.0، إعدادات النظام: العمّال والذاكرة ووضع الوكيل وwebsocket.
- مشروع wkhtmltopdf، صفحة الإصدارات: الإصدار 0.12.6.1-3 وحزمه.
- Ubuntu، حزمة pgvector في 24.04: الحزمة postgresql-16-pgvector.