كيفية تثبيت Odoo مع Docker على Ubuntu

0 الأسهم
0
0
0
0

مقدمة

أودو هو نظام مفتوح المصدر لتخطيط موارد المؤسسات (ERP) مكتوب بلغة بايثون. يدعم أودو العديد من الإضافات لتلبية احتياجات الأعمال المختلفة، مثل المحاسبة، وإدارة الرواتب، وإدارة المخزون، وغيرها. في هذا الدليل، ستُثبّت أودو وقاعدة بيانات PostgreSQL باستخدام Docker Compose، ثم تُثبّت Nginx ليعمل كخادم وكيل عكسي لموقع أودو الخاص بك. وأخيرًا، ستُفعّل اتصالات HTTPS الآمنة باستخدام Certbot لتنزيل شهادة TLS وتكوينها من هيئة Let's Encrypt.

المتطلبات الأساسية
  • خادم أوبونتو مزود بمعالجين أو أكثر، ومستخدم غير جذري لديه صلاحيات sudo، وجدار حماية مفعل.
  • تم تثبيت Docker
  • وأخيرًا، لتفعيل بروتوكول TLS، تحتاج إلى اسم نطاق يشير إلى عنوان IP العام لخادمك. يجب أن يكون هذا الاسم على سبيل المثال example.com أو odoo.example.com.

بمجرد أن تكون جميع المتطلبات الأساسية جاهزة، انتقل إلى الخطوة 1، حيث ستقوم بتثبيت حزمة docker-compose.

الخطوة 1 - تثبيت Docker Compose

لتثبيت أداة سطر الأوامر docker-composeقم بتحديث قائمة الحزم، ثم قم بتثبيت الحزمة باستخدام مناسب ثَبَّتَ:

sudo apt update
sudo apt install docker-compose

يمكنك التحقق من تثبيت الحزمة عن طريق تشغيل الأمر التالي:

docker-compose –version

يجب أن تحصل على مخرجات مشابهة لما يلي:

Output
docker-compose version 1.25.0, build unknown
docker-py version: 4.1.0
CPython version: 3.8.10

بمجرد التحقق من تثبيت Docker Compose على خادمك، ستقوم بتكوين وتشغيل Odoo و PostgreSQL باستخدام Docker Compose في الخطوة التالية من هذا البرنامج التعليمي.

الخطوة 2 - تشغيل Odoo و PostgreSQL باستخدام Docker Compose

للبدء بإنشاء حاويات Odoo و PostgreSQL، أنشئ مجلدًا باسم odoo في مجلدك الرئيسي لتخزين الملفات التي ستنشئها في هذا الدرس. ستستخدم هذا المجلد لتخزين جميع الملفات اللازمة لتشغيل Odoo.

قم بتشغيل الأوامر التالية لإنشاء الدليل ثم قرص مضغوط تشغيله:

mkdir ~/odoo
cd ~/odoo

الآن قم بإنشاء ملف YAML فارغ جديد باسم ملف docker-compose.yml استخدام نانو أو افتح محرر النصوص المفضل لديك:

nano docker-compose.yml

يمكنك استخدام هذا الملف مع الأمر docker-compose ستستخدمه لتشغيل حاويات Odoo و PostgreSQL وربطها معًا. أضف الأسطر التالية إلى الملف:

version: '3'
services:
odoo:
image: odoo:15.0
env_file: .env
depends_on:
- postgres
ports:
- "127.0.0.1:8069:8069"
volumes:
- data:/var/lib/odoo
postgres:
image: postgres:13
env_file: .env
volumes:
- db:/var/lib/postgresql/data/pgdata
volumes:
data:
db:

يُعرّف هذا الملف خدمتين. الأولى تُسمى odoo، وهي تُشغّل تطبيق Odoo. أما الثانية فتُسمى postgres، وهي حاوية قاعدة بيانات PostgreSQL. تُشير كلتا الخدمتين إلى وحدات تخزين تستخدمانها لحفظ البيانات خارج مثيلات الحاويات قيد التشغيل. وأخيرًا، تُتيح خدمة odoo الوصول إلى المنفذ 8069 على خادمك لحاوية Odoo، التي تعمل على نفس المنفذ.

بعد الانتهاء من تعديل الملف، احفظه واخرج. إذا كنت تستخدم محرر النصوص nano، فاضغط على CTRL+O ثم RETURN للحفظ، ثم CTRL+X للخروج.

تستخدم حاويات Odoo و PostgreSQL متغيرات البيئة لضبط إعداداتها. يحدد ملف docker-compose.yml توجيه env_file لكلتا الخدمتين. يتضمن هذا التوجيه ملفًا مرجعيًا يحتوي على المتغيرات التي تحتاجها كل خدمة للتشغيل.

يُنصح عادةً باتباع هذا الأسلوب بدلاً من إضافة متغيرات البيئة مباشرةً إلى ملف docker-compose.yml، إذ يُعدّ من الممارسات الجيدة تجنّب تضمين كلمات المرور في هذا الملف. ويُفيد هذا الأسلوب بشكل خاص عند رفع ملفاتك إلى مستودع Git أو أي نظام آخر للتحكم في المصادر.

افتح ملف env جديد باستخدام nano:

nano .env

أضف الأسطر التالية إلى الملف واستبدل القيم المميزة بـ مستخدم بوستجريس و كلمة مرور POSTGRES استبدل اختيارك:

# postgresql environment variables
POSTGRES_DB=postgres
POSTGRES_PASSWORD=a_strong_password_for_user
POSTGRES_USER=odoo
PGDATA=/var/lib/postgresql/data/pgdata
# odoo environment variables
HOST=postgres
USER=odoo
PASSWORD=a_strong_password_for_user

لإنشاء كلمة مرور لـ Odoo و PostgreSQL، استخدم أمر openssl، المتوفر على معظم أنظمة Linux. شغّل الأمر التالي على خادمك لإنشاء مجموعة عشوائية من البايتات وطباعة نسخة مشفرة بنظام base64 يمكنك استخدامها ككلمة مرور:

openssl rand -base64 30

استخدم السلسلة الناتجة بدلاً من كلمات مرور الحماية. كلمة مرور قوية للمستخدم في الملف .env بمجرد الانتهاء من تعديل ملف .env الخاص بك، احفظه واخرج من محرر النصوص.

أنت الآن جاهز لإنشاء الحاويات. أودو و بوستجرس باستخدام الأمر docker-compose ابدأ الآن:

docker-compose up -d

يُخبر الأمر الفرعي `up` برنامج docker-compose بتشغيل الحاويات ووحدات التخزين والشبكات المرتبطة بها والمُعرّفة في ملف docker-compose.yml. أما الخيار `-d` (الذي يرمز إلى "daemonize") فيُخبر docker-compose بتشغيل الحاويات في الخلفية حتى لا يتدخل أمر الطرفية. يعرض docker-compose مُخرجات مُختصرة أثناء تنزيل صور Docker المطلوبة، ثم يُشغّل الحاويات.

Output
Creating network "odoo_default" with the default driver
Creating volume "odoo_odoo_data" with default driver
Creating volume "odoo_postgres_data" with default driver
Pulling odoo (odoo:14.0)...
15.0: Pulling from library/odoo
. . .

بعد إتمام هذه الخطوة، يجب أن يكون نظام أودو قيد التشغيل. يمكنك اختبار تشغيل خادم الويب عن طريق جلب الصفحة الرئيسية باستخدام أمر curl. 127.0.0.1:8069 أشواط:

curl --head http://localhost:8069

سيؤدي هذا إلى طباعة رؤوس HTTP فقط من الاستجابة:

Output
HTTP/1.0 303 SEE OTHER
Content-Type: text/html; charset=utf-8
Content-Length: 215
Location: http://localhost:8069/web
Set-Cookie: session_id=142fa5c02742d0f5f16c73bc14ec8144b8230f8a; Expires=Mon, 06-Jun-2022 20:45:34 GMT; Max-Age=7776000; HttpOnly; Path=/
Server: Werkzeug/0.14.1 Python/3.7.3
Date: Tue, 08 Mar 2022 20:45:34 GMT

إجابة 303 انظر الآخرين هذا يعني أن الخادم أودو تم تشغيله بنجاح، ولكن ستحتاج إلى زيارة صفحة أخرى لإكمال التثبيت. رأس الصفحة http://localhost:8069/web يشير الموقع المحدد إلى المكان الذي يجب عليك زيارة صفحة تثبيت Odoo فيه في متصفحك.

ثم سنقوم بإعداد Nginx ليكون بمثابة وكيل لحركة المرور العامة إلى حاوية Odoo.

الخطوة 3 - تثبيت وتكوين Nginx

يُمكن لخادم ويب مثل Nginx، الذي يعمل كخادم وسيط أمام خادم Odoo، تحسين الأداء من خلال تخفيف عبء التخزين المؤقت والضغط وتقديم الملفات الثابتة، مما يُحسّن كفاءة العملية. سنقوم بتثبيت Nginx وتهيئته ليكون خادمًا وسيطًا عكسيًا لطلبات Odoo، أي أنه سيتولى إرسال طلبات المستخدمين إلى Odoo والعودة منها. استخدام Nginx كخادم وسيط غير مُدمج في حاوية سيُسهّل إضافة شهادات Let's Encrypt TLS في الخطوة التالية.

قم أولاً بتحديث قائمة الحزم، ثم قم بتثبيت Nginx باستخدام مناسب ثَبَّتَ:

sudo apt update
sudo apt install nginx

باستخدام ملف تعريف تطبيق Nginx Full UFW، اسمح بحركة المرور العامة إلى المنفذين 80 و443 (HTTP وHTTPS):

sudo ufw allow "Nginx Full"
Output
Rule added
Rule added (v6)

ثم افتح ملف تهيئة Nginx جديدًا في الدليل /etc/nginx/sites-available. سنسمي ملفنا odoo.conf، ولكن يمكنك استخدام اسم آخر.

sudo nano /etc/nginx/sites-available/odoo.conf

ألصق ما يلي في ملف الإعدادات الجديد، مع التأكد من استبدال your_domain_here بالنطاق الذي قمتَ بتهيئته للإشارة إلى خادم Odoo الخاص بك. يجب أن يكون هذا النطاق على سبيل المثال odoo.example.com:

server {
listen 80;
listen [::]:80;
server_name your_domain_here;
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto https;
proxy_pass http://localhost:8069;
}
}

هذا الإعداد مخصص لبروتوكول HTTP فقط في الوقت الحالي، حيث سنقوم بضبط بروتوكول TLS بواسطة Certbot في الخطوة التالية. أما باقي ملف الإعدادات فيقوم بتحديد مواقع المسجل، ثم يرسل جميع البيانات، بالإضافة إلى بعض رؤوس الوكيل المهمة، إلى http://localhost:8069، وهو حاوية Odoo التي قمنا بتشغيلها في الخطوة السابقة.

احفظ الملف وأغلقه، ثم قم بتمكين الإعدادات عن طريق ربطها بـ /etc/nginx/sites-enabled/:

sudo ln -s /etc/nginx/sites-available/odoo.conf /etc/nginx/sites-enabled/

استخدم الأمر nginx -t للتحقق من بنية ملف التكوين:

sudo nginx -t
Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

وأخيراً، أعد تحميل خدمة nginx باستخدام التكوين الجديد:

sudo systemctl reload nginx.service

يجب أن يكون موقع Odoo الخاص بك الآن متاحًا عبر بروتوكول HTTP العادي. قم بتحميل الرابط http://your_domain_here (قد تحتاج إلى النقر لتجاوز تحذير أمني) وسيظهر بالشكل التالي:


بعد إعداد موقعك عبر بروتوكول HTTP، حان الوقت لتأمين الاتصال باستخدام شهادات Certbot وLet's Encrypt. يجب عليك القيام بذلك قبل المتابعة في عملية إعداد Odoo عبر الويب.

الخطوة 4 - تثبيت Certbot وإعداد شهادات TLS

بفضل Certbot ورخصة Let's Encrypt المجانية، فإن إضافة تشفير TLS إلى تطبيق Odoo الخاص بك لا يتطلب سوى أمرين.

أولاً، قم بتثبيت Certbot وملحق Nginx الخاص به:

sudo apt install certbot python3-certbot-nginx

بعد ذلك، قم بتشغيل certbot في وضع –nginx وحدد نفس النطاق الذي استخدمته في توجيه تكوين Nginx server_name:

sudo certbot --nginx -d your_domain_here

سيُطلب منك الموافقة على شروط خدمة Let's Encrypt وإدخال عنوان بريدك الإلكتروني. بعد ذلك، سيُطلب منك تحديد ما إذا كنت ترغب في إعادة توجيه جميع حركة مرور HTTP إلى HTTPS. هذا الأمر متروك لك، ولكنه يُنصح به عمومًا وهو آمن.

بعد ذلك، ستقوم Let's Encrypt بالموافقة على طلبك وسيقوم Certbot بتنزيل شهادتك:

Output
Congratulations! You have successfully enabled https://odoo.example.com
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=odoo.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/odoo.example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/odoo.example.com/privkey.pem
Your cert will expire on 2022-05-09. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

سيقوم Certbot بتحميل Nginx تلقائيًا بالإعدادات والشهادات الجديدة. أعد تحميل موقعك في متصفحك، وسيتم تحويلك تلقائيًا إلى HTTPS إذا اخترت خيار إعادة التوجيه.

موقعك الآن آمن ويمكنك متابعة عملية الإعداد عبر الإنترنت بأمان.

الخطوة 5 - إعداد أودو

ارجع إلى متصفحك، وأعد تحميل الصفحة. الآن، يُفترض أن تتمكن من فتح صفحة إعدادات قاعدة بيانات Odoo عبر اتصال آمن (https://). يمكنك الآن إدخال اسم المستخدم وكلمة المرور بأمان لإكمال عملية التثبيت.

المعلومات التي تقوم بتعبئتها في هذه الصفحة تخبر تطبيق Odoo بكيفية إنشاء قاعدة بيانات PostgreSQL الخاصة به وتفاصيل حول المستخدم الإداري الافتراضي.

املأ الحقول التالية:
  • اسم قاعدة البيانات: أودو
  • البريد الإلكتروني: عنوان بريدك الإلكتروني
  • كلمة المرور: كلمة مرور قوية وفريدة لتسجيل دخولك كمسؤول.
  • بيانات تجريبية: إذا كانت هذه هي المرة الأولى التي تقوم فيها بتثبيت Odoo، فتأكد من تحديد هذا الخيار.

الإعدادات الافتراضية مناسبة لبقية الحقول. تأكد من تسجيل قيم البريد الإلكتروني وكلمة المرور التي تختارها، حيث ستستخدمها لتسجيل الدخول إلى أودو في المستقبل.

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


من هنا، يمكنك اختيار وحدات Odoo التي ترغب بتثبيتها واستخدامها لتلبية احتياجات نظام تخطيط موارد المؤسسات (ERP). إذا كنت ترغب بتجربة تطبيق، فانقر على زر "تثبيت" في لوحة "المبيعات". سيقوم Odoo بتثبيت الوحدة ثم إعادة توجيهك إلى صفحة تطبيق Discuss الشخصية.

انقر على أيقونة المربع المقسم في أعلى يسار الصفحة، ثم حدد رابط المبيعات في القائمة المنسدلة للخيارات.


ستكون على صفحة ترشدك خلال عملية تخصيص البيانات والتسعير والطلبات وقائمة بعينات المبيعات التي يمكنك تجربتها.

نتيجة

في هذا البرنامج التعليمي، قمت بنشر تطبيق Odoo ERP وقاعدة بيانات PostgreSQL باستخدام Docker Compose، ثم قمت بإعداد وكيل عكسي Nginx وتأمينه باستخدام شهادات Let's Encrypt TLS.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

قد يعجبك أيضاً