راهنمای جامع نصب اودو 17 و 18 روی ویندوز و لینوکس

سه‌شنبه 02 اردیبهشت 1404 توسط
راهنمای جامع نصب اودو 17 و 18 روی ویندوز و لینوکس
محقق (دیجیتال مارکتینگ)

در این راهنما، به‌صورت گام‌به‌گام و کاملاً عملی روش‌های نصب ​نرم‌افزار اودو 17 و ​اودو 18 را بر روی سیستم‌عامل‌های ویندوز 10/11 و لینوکس (Ubuntu 22.04 LTS) توضیح می‌دهیم. این راهنما هر دو نسخه Community (رایگان) و نسخه Enterprise (تجاری) را پوشش می‌دهد و تمامی پیش‌نیازها، تنظیمات و نکات نگهداری را شامل می‌شود تا شما بتوانید بدون هیچ مرحله‌ی مبهمی نرم‌افزار Odoo را راه‌اندازی کنید.

آنچه در این راهنما خواهید یافت:

  • آماده‌سازی پیش‌نیازهای سیستم (Python، PostgreSQL، ابزارهای کامپایل، wkhtmltopdf و ...)
  • نصب Odoo 17 و 18 روی ویندوز (شامل تنظیم PostgreSQL و محیط Python)
  • نصب Odoo 17 و 18 روی اوبونتو 22.04 (شامل ایجاد کاربر لینوکسی، راه‌اندازی محیط مجازی و سرویس systemd)
  • نصب Odoo از سورس (برای Community و Enterprise)
  • روش نصب Odoo با Docker (کانتینری)
  • اجرای Odoo به‌عنوان سرویس در لینوکس و تنظیم اجرای خودکار در استارتاپ
  • راهنمای بروزرسانی، نگهداری و به‌روزرسانی Odoo
  • نصب ماژول‌های اضافی و نکات توسعه ماژول‌های سفارشی
  • منابع و مراجع رسمی برای اطلاعات بیشتر (مستندات، GitHub و انجمن‌ها)

🔴این آموزش برای کاربران نیمه‌حرفه‌ای و حرفه‌ای تهیه شده و فرض می‌کنیم با مفاهیم پایه‌ای مانند ترمینال، دستورات نصب و اصول پایگاه‌داده آشنایی دارید. با این حال، تمامی مراحل به‌تفصیل آمده‌اند تا قابل اجرا و دنبال‌کردن باشند.

۱. پیش‌نیازهای نصب Odoo (مشترک برای ویندوز و لینوکس)

قبل از شروع نصب، اطمینان حاصل کنید پیش‌نیازهای زیر روی سیستم شما فراهم هستند:

  • نسخه‌ی Python مناسب: Odoo 17 و 18 نیاز به Python 3.10 یا بالاتر دارند. روی ویندوز، هنگام نصب Python تیک مربوط به افزودن Python به PATH را بزنید. روی اوبونتو 22.04 معمولاً Python 3.10 به‌طور پیش‌فرض موجود است (با دستور python3 --version بررسی کنید).
  • PostgreSQL (سیستم مدیریت پایگاه‌داده): Odoo از PostgreSQL به‌عنوان پایگاه‌داده استفاده می‌کند. نسخه‌های PostgreSQL 12 به بعد پشتیبانی می‌شوند. اطمینان حاصل کنید PostgreSQL نصب و یک کاربر پایگاه‌داده ویژه‌ی Odoo ایجاد شده باشد (جزئیات در ادامه‌ی هر بخش آمده است).
  • Node.js و npm (برای کامپایل فایل‌های استایل و assets): برخی ویژگی‌های Odoo (مانند پشتیبانی از زبان‌های راست‌به‌چپ یا کامپایل Assetها) نیاز به Node.js/npm دارند. همچنین باید پکیج rtlcss را برای واسط‌های راست‌چین (مثل فارسی) نصب کنید.
  • ابزار wkhtmltopdf: برای تولید فایل‌های PDF (مانند گزارش‌ها) Odoo نیاز به wkhtmltopdf دارد. نسخه‌ی توصیه‌شده wkhtmltopdf 0.12.6 با پشتیبانی از header/footer است. این ابزار باید به‌صورت دستی نصب شود، زیرا از طریق pip قابل نصب نیست. در بخش نصب هر سیستم‌عامل، روش نصب آن آورده شده است.
  • Git: برای دریافت کد منبع Odoo (نسخه‌های Community و Enterprise) به Git نیاز دارید . اگر قصد توسعه یا به‌روزرسانی کد را دارید، آشنایی با دستورات اولیه Git مفید خواهد بود.

💡 توجه: اگر از نسخه Enterprise استفاده می‌کنید، دسترسی به کد منبع Enterprise نیازمند لایسنس رسمی است. نسخه Enterprise در واقع مجموعه‌ای از ماژول‌های اضافه بر روی نسخه Community است و برای اجرای Odoo Enterprise باید هر دو مخزن Community و Enterprise را داشته باشی】. اگر لایسنس Enterprise خریداری کرده‌اید، می‌توانید مخزن enterprise را از GitHub (با دسترسی ارائه‌شده توسط Odoo) کلون کنید یا بسته Enterprise را از پرتال Odoo دریافت نمایید.

در ادامه، مراحل نصب را به تفکیک برای ویندوز و اوبونتو ارائه می‌کنیم.

۲. نصب اودوو 17 و 18 روی ویندوز 10/11 (Community و Enterprise)

نصب Odoo روی ویندوز شامل آماده‌سازی محیط Python، نصب PostgreSQL و تنظیم آن، دریافت سورس Odoo و اجرای آن است. در زیر گام‌های لازم را به‌ترتیب دنبال کنید:

2-1. نصب Python 3 و تنظیم محیط

  1. دریافت نصب‌کننده Python: به سایت رسمی Python مراجعه کرده و نسخه‌ی مناسب ویندوز (x86-64) را دانلود کنی. نسخه‌ی 3.10 به بالا (مثلاً 3.10 یا 3.11) مورد نیاز است.
  2. اجرای نصب Python: فایل نصبی را اجرا کنید. در ابتدای نصب، گزینه‌ی "Add Python 3.x to PATH" را تیک بزنید تا مسیر Python به متغیرهای محیطی افزوده شود. سپس Custom Installation را انتخاب کرده و اطمینان حاصل کنید که pip و سایر ابزارهای اختیاری فعال هستن. نصب را کامل کنید.
  3. تأیید نصب: یک پنجره‌ی Command Prompt باز کنید و دستور python --version را اجرا کنید تا مطمئن شوید نسخه‌ی صحیح Python نصب شده است. همچنین دستور pip --version را نیز برای اطمینان از نصب pip اجرا کنید.

2-2. نصب PostgreSQL و ایجاد پایگاه‌داده

  1. دریافت PostgreSQL: به صفحه‌ی دانلود PostgreSQL مراجعه کرده و نسخه‌ی جدید (حداقل PostgreSQL 13 یا 14) مخصوص ویندوز را دانلود و نصب کنید. در طی نصب، تمامی کامپوننت‌ها (مانند pgAdmin4) را انتخاب کنید. یک کلمه‌عبور برای کاربر postgres (کاربر اصلی پایگاه‌داده) تعیین نمایید و نصب را کامل کنید .
  2. راه‌اندازی pgAdmin و ایجاد کاربر Odoo: پس از نصب، pgAdmin4 را باز کنید. به سرور PostgreSQL متصل شوید (با وارد کردن کلمه‌عبور postgres). در pgAdmin به مسیر Servers → PostgreSQL → Login/Group Roles بروید و یک Role جدید ایجاد کنید.
  • در تب "General"، یک نام کاربری مثل odoo وارد کنید.
  • در تب "Definition"، یک کلمه‌عبور برای این کاربر قرار دهید.
  • در تب "Privileges"، گزینه‌های Can login و Create database را روی Yes تنظیم کنید و تغییرات را ذخیره کنی.
    اکنون یک کاربر پایگاه‌داده اختصاصی برای Odoo داریم که نام کاربری و کلمه‌عبورش در تنظیمات Odoo استفاده خواهد شد.

ایجاد پایگاه‌داده (اختیاری): لازم نیست اکنون پایگاه‌داده‌ای ایجاد کنید؛ Odoo در اولین اجرای خود می‌تواند یک پایگاه‌داده جدید بسازد. فقط اطمینان حاصل کنید کاربر جدید (odoo) اجازه‌ی ایجاد دیتابیس دارد (با تنظیم Create DB در گام قبل.

2-3. نصب Microsoft C++ Build Tools (پیش‌نیاز کامپایل)

بسیاری از وابستگی‌های Python در Odoo نیاز به کامپایل دارند، لذا نصب Build Tools مایکروسافت ضروری است. اگر Visual Studio یا Build Tools قبلاً نصب نیست:

آخرین نسخه Visual C++ Build Tools را از سایت مایکروسافت دانلود و نصب کنید. هنگام نصب، گزینه "Desktop Development with C++" را انتخاب کنید تا کتابخانه‌ها و کامپایلرهای لازم نصب شوند.

پس از اتمام، یک بار سیستم را ری‌استارت کنید (در صورت درخواست) تا متغیرهای محیطی تنظیم شوند.

2-4. دریافت سورس کد Odoo (Community و Enterprise)

حال آماده‌ی دریافت کد منبع Odoo هستیم:

  1. ایجاد پوشه‌ی پروژه: در درایو دلخواه (مثلاً C:\odoo-17 برای نسخه 17) یا (C:\odoo-18 برای نسخه 18) یک پوشه ایجاد کنید. برای سهولت، نام نسخه را در پوشه لحاظ کنید.
  2. کلون کردن نسخه Community: یک پنجره Command Prompt (یا PowerShell) باز کرده و دستور زیر را اجرا کنید (برای نسخه 17 یا 18 مطابق نیاز):
  3. git clone https://github.com/odoo/odoo.git --depth 1 --branch 17.0 C:\odoo-17\community

دستور بالا مخزن اصلی Odoo (Community) را کلون می‌کنید و فقط آخرین نسخه (عمق 1) شاخه‌ی 17.0 را دریافت می‌کند. برای نسخه 18، --branch 18.0 و مسیر مناسب (مثلاً C:\odoo-18\community) را استفاده کنید.

  1. کلون کردن نسخه Enterprise (اختیاری، در صورت لایسنس داشتن): اگر نسخه Enterprise را دارید، باید مخزن Enterprise را نیز کلون کنید. این مخزن شامل ماژول‌های اضافی Enterprise است. به فولدر پروژه بروید و دستور کلون زیر را اجرا کنید:
  2. git clone https://github.com/odoo/enterprise.git --depth 1 --branch 17.0 C:\odoo-17\enterprise

(برای نسخه 18 شاخه 18.0). دقت کنید که برای دسترسی به این مخزن باید مجوز داشته باشید؛ در صورت عدم دسترسی، از بسته Enterprise ارائه‌شده توسط Odoo استفاده کنید.

  1. ساختار پوشه‌ها: فرض کنیم اکنون داریم:
  • مسیر Community: C:\odoo-17\community (حاوی فایل‌های Odoo از جمله odoo-bin و پوشه addons)
  • مسیر Enterprise: C:\odoo-17\enterprise (شامل پوشه addonهای enterprise)
    برای Odoo 18 نیز به‌طور مشابه.

2-5. ایجاد و فعال‌سازی محیط مجازی Python (Virtualenv)

استفاده از محیط مجازی برای ایزوله کردن وابستگی‌های Python اکیداً توصیه می‌شود. بدین صورت، کتابخانه‌های Python مختص Odoo از سایر پروژه‌ها جدا می‌شوند.

  1. در Command Prompt، به پوشه‌ی پروژه Odoo (community) بروید:
  2. cd C:\odoo-17\community
  3. ایجاد محیط مجازی با استفاده از venv:
  4. python -m venv venv-odoo17

این دستور یک محیط مجازی جدید در پوشه‌ای به نام venv-odoo17 ایجاد می‌کند (می‌توانید نام دیگری انتخاب کنید).

  1. فعال‌سازی محیط مجازی:
  2. C:\odoo-17\community\venv-odoo17\Scripts\activate

پس از اجرای این دستور، اعلان خط فرمان شما باید تغییر کرده و در ابتدای آن نام venv را مشاهده کنید (مثلاً (venv-odoo17) C:\odoo-17\community>). این نشان می‌دهد محیط مجازی فعال است و نصب‌های pip بعدی در این فضا انجام می‌شود.

2-6. نصب وابستگی‌های Python برای Odoo

در حالیکه محیط مجازی فعال است، گام‌های زیر را برای نصب تمامی کتابخانه‌های مورد نیاز Odoo انجام دهید:

  1. ارتقای pip و setuptools:
  2. pip install --upgrade pip setuptools wheel

این کار اطمینان می‌دهد که pip و ابزارهای بسته‌بندی به‌روز هست1】.

  1. نصب کتابخانه‌های موردنیاز Odoo: با استفاده از فایل requirements.txt همراه سورس Odoo تمامی وابستگی‌ها را نصب می‌کنیم:
  2. pip install -r requirements.txt

این فرمان تمام پکیج‌های Python لیست‌شده در requirements.txt را دانلود و نصب می‌کنید. توجه داشته باشید که برخی از این پکیج‌ها در زمان نصب کامپایل می‌شوند که به‌دلیل نصب بودن Visual C++ Build Tools در گام قبل، این مرحله بدون مشکل انجام خواهد شد.

⏱️ زمان‌بر بودن: دانلود و نصب وابستگی‌ها ممکن است مدتی طول بکشد (بسته به سرعت اینترنت). صبور باشید تا فرآیند کامل شود. در صورت مشاهده پیغام موفقیت‌آمیز برای همه پکیج‌ها، مرحله نصب وابستگی‌های Python به پایان رسیده است.

2-7. تنظیم فایل پیکربندی Odoo (ایجاد فایل odoo.conf)

برای اجرای Odoo، بهتر است یک فایل پیکربندی داشته باشیم تا تنظیمات نظیر پورت، کاربر پایگاه‌داده و مسیر ماژول‌های اضافی را مشخص کنیم. این فایل را به‌صورت دستی ایجاد می‌کنیم:

  1. به پوشه اصلی پروژه Odoo بروید (مثلاً C:\odoo-17\community).
  2. یک فایل متنی جدید به نام odoo.conf ایجاد کنید. (مثلاً با Notepad یا یک ادیتور متن).
  3. محتوای زیر را در فایل قرار دهید و مقادیر را تنظیم کنید:
  4. [options]
  5. admin_passwd = admin                 ; کلمه‌عبور مستر ادمین برای مدیریت پایگاه‌داده‌ها
  6. db_host = localhost                  ; آدرس سرور PostgreSQL (برای نصب محلی، localhost)
  7. db_port = 5432                       ; پورت پیش‌فرض PostgreSQL
  8. db_user = odoo                       ; نام کاربری پایگاه‌داده که ایجاد کردید
  9. db_password = odoo                   ; کلمه‌عبور آن کاربر پایگاه‌داده
  10. addons_path = C:\odoo-17\community\addons,C:\odoo-17\enterprise\addons
  11. xmlrpc_port = 8069                   ; پورت اجرای Odoo (پیش‌فرض 8069)

در تنظیم addons_path دو مسیر وارد شده است: اول مسیر پوشه addons از کد اصلی (community) و دوم مسیر ماژول‌های enterprise (در صورت موجود بودن). اگر نسخه Enterprise ندارید، فقط پوشه addons پیش‌فرض را قرار ده8】. همچنین admin_passwd را یک کلمه‌عبور قوی‌تر به دلخواه تنظیم کنید (این رمز برای مدیریت بانک‌های اطلاعاتی Odoo در رابط وب استفاده می‌شود).

  1. این فایل را ذخیره کنید (مثلاً در مسیر C:\odoo-17\community\odoo.conf).

2-8. اجرای Odoo بر روی ویندوز

اکنون همه چیز آماده‌ی اجرای Odoo است. چند راه برای اجرا وجود دارد: استفاده از خط فرمان، یا استفاده از IDE مانند PyCharm. هر دو روش را اشاره می‌کنیم:

الف) اجرای Odoo از طریق خط فرمان:

  1. مطمئن شوید که PostgreSQL در حال اجرا است (سرویس PostgreSQL را Start کنید، معمولاً پس از نصب به‌طور خودکار اجرا می‌شود).
  2. در همان Command Prompt که محیط مجازی فعال است، دستور زیر را اجرا کنید:
  3. python odoo-bin -c odoo.conf

اگر در همان پوشه‌ی community هستید، این دستور فایل اجرایی Odoo (odoo-bin) را با تنظیمات فایل کانفیگ که ساختیم اجرا می‌کنید.

  1. اگر همه چیز درست باشد، در لاگ خواهید دید که ماژول‌ها بارگذاری شده‌اند (odoo.modules.loading: Modules loaded.9】 و پیام‌هایی حاکی از آماده‌به‌کار بودن سرور. اکنون می‌توانید در مرورگر به آدرس http://localhost:8069` برو4】. صفحه‌ی آغازین Odoo باید نمایش داده شود و از شما می‌خواهد یک پایگاه‌داده جدید ایجاد کنید.
  2. در اولین بار اجرا، یک پایگاه‌داده جدید بسازید و رمز admin (همان که در odoo.conf تنظیم کردید) را وارد کنید تا به محیط Odoo وارد شوید.

ب) اجرای Odoo با PyCharm (روش توسعه‌ای - اختیاری):
اگر قصد دارید کد Odoo را توسعه دهید یا دیباگ کنید، استفاده از PyCharm IDE مفید است:

  • PyCharm Community Edition را نصب و اجرا کنید. از منوی Open پوشه‌ی پروژه Odoo (مثلاً C:\odoo-17\community) را باز کنید. PyCharm ممکن است خودکار یک محیط مجازی ایجاد کند؛ اما ما می‌توانیم از محیط مجازی ایجادشده‌ی خود استفاده کنیم.
  • از بخش Settings در PyCharm، Interpreter پروژه را به مسیر Python در venv-odoo17 تنظیم کنید (یعنی از تنظیمات، Python موجود در C:\odoo-17\community\venv-odoo17\Scripts\python.exe را انتخاب کنید).
  • یک Run Configuration جدید از نوع Python بسازید: Script Path را به فایل odoo-bin تنظیم کنید، Working Directory را پوشه‌ی community بگذارید، و در بخش پارامترها (Parameters) مقدار -c C:\odoo-17\community\odoo.conf را قرار دهید. این تنظیم به PyCharm می‌گوید Odoo را با فایل کانفیگ اجرا کند.
  • حال می‌توانید با کلیک بر Run (یا Debug) سرور Odoo را مستقیماً از PyCharm اجرا و مدیریت کنید.

💡 در روش PyCharm، اگر PyCharm به‌صورت خودکار خواست پکیج‌های مورد نیاز را نصب کند یا محیط مجازی بسازد، می‌توانید آن را نادیده بگیرید چون قبلاً این کار را انجام داده‌ایم. صرفاً اطمینان یابید Interpreter پروژه به Python داخل محیط مجازی اشاره می‌کند.

2-9. نکات تکمیلی نصب در ویندوز

  • اگر با فایروال ویندوز مشکلی داشتید (عدم دسترسی به پورت 8069)، تنظیمات فایروال را چک کنید و اجازه دسترسی به پورت را بدهید.
  • برای نسخه Enterprise: پس از لود شدن Odoo، باید لایسنس خود را اعمال کنید. لایسنس Enterprise را می‌توانید در محیط وب Odoo وارد کنید تا ماژول‌های Enterprise فعال شوند. خود فرآیند نصب تفاوت چندانی ندارد جز اضافه کردن مسیر ماژول‌های enterprise در addons_path و داشتن کد منبع آنها که قبلاً انجام دا86】.
  • Odoo روی ویندوز به‌صورت سرویس نصب نمی‌شود مگر اینکه خودتان تنظیم کنید. برای اجرای خودکار Odoo در زمان راه‌اندازی ویندوز، می‌توانید از Task Scheduler ویندوز یا ابزارهایی مثل NSSM (Non-Sucking Service Manager) استفاده کنید تا اسکریپت اجرای Odoo را به‌عنوان سرویس ویندوز ثبت کند. این موضوع خارج از حوصله‌ی این راهنماست ولی در صورت نیاز قابل انجام است.

۳. نصب Odoo 17 و 18 روی اوبونتو 22.04 LTS (Community و Enterprise)

نصب Odoo روی سرور لینوکسی (اوبونتو 22.04) معمولاً برای محیط‌های تولیدی (Production) یا تست حرفه‌ای استفاده می‌شود. در این بخش، مراحل نصب را روی اوبونتو 22.04 مرور می‌کنیم. توجه کنید که نیازمند دسترسی sudo روی سرور هستید.

3-1. به‌روز‌رسانی سیستم و نصب وابستگی‌های پایه

ابتدا با کاربر ریشه یا کاربری که دسترسی sudo دارد به سرور اوبونتو وارد شوید. سپس دستورهای زیر را اجرا کنید:

  1. آپدیت بسته‌های سیستم:
  2. sudo apt-get update -y && sudo apt-get upgrade -y

این کار مخازن بسته را به‌روز کرده و تمام پکیج‌های موجود را ارتقا می‌‌دهد.

  1. نصب پیش‌نیازهای سیستمی Python و ابزارهای ساخت: تعدادی کتابخانه و ابزار لازم است تا Python و پکیج‌های Odoo بدرستی کار کنند. دستور زیر را برای نصب این وابستگی‌ها اجرا کنید:
  2. sudo apt-get install -y python3-pip python3-dev python3-venv build-essential \
  3. libxml2-dev libxslt1-dev zlib1g-dev libsasl2-dev libldap2-dev libssl-dev \
  4. libffi-dev libpq-dev libjpeg-dev libjpeg8-dev liblcms2-dev libblas-dev libatlas-base-dev

این مجموعه شامل Python 3 (و pip)، کتابخانه‌های توسعه Python، کامپایلرها (build-essential) و کتابخانه‌های مورد نیاز مانند libxml2، libxslt، zlib، SASL، LDAP، SSL، ffi، PostgreSQL (libpq)، پردازش تصویر (libjpeg) و غیره.

  1. نصب Node.js و ابزارهای Front-end: برای فشرده‌سازی CSS/JS و پشتیبانی از RTL نیاز به npm و بسته‌های LESS داریم:
  2. sudo apt-get install -y npm nodejs
  3. sudo npm install -g less less-plugin-clean-css
  4. sudo apt-get install -y node-less

در اوبونتو 22.04، ممکن است بسته‌ی nodejs به‌طور پیش‌فرض نصب باشد. همچنین با دستور ln -s می‌توانید اطمینان حاصل کنید که node به nodejs لینک شده  (در برخی سیستم‌ها nodejs نام binary است). 

دستور npm فوق، بسته less و پلاگین clean-css را به‌صورت global نصب می‌کند.

3-2. نصب ابزار wkhtmltopdf

Odoo برای تولید PDF به wkhtmltopdf نیاز دارد. بسته‌های پیش‌فرض اوبونتو ممکن است نسخه قدیمی‌تری داشته باشند که با Odoo سازگار نیست (نسخه باید ≥ 0.12.5). بنابراین نسخه مناسب را دستی دانلود و نصب می‌کنیم:

sudo wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.bionic_amd64.deb

sudo dpkg -i wkhtmltox_0.12.6-1.bionic_amd64.deb

sudo apt-get install -f -y    # برای نصب وابستگی‌های احتمالی

دستور بالا بسته Debian مربوط به wkhtmltopdf 0.12.6 را (مخصوص اوبونتو بیونیک/18.04 که با 22.04 سازگار است) دانلود و نصب می‌ کنید. با اجرای apt-get install -f هر dependency که نیاز باشد برطرف خواهد شد. پس از این، دستور wkhtmltopdf --version باید نسخه 0.12.6 را نشان دهد.

⏱️ نکته: ممکن است لینک دانلود بسته در آینده تغییر کند. برای اطمینان، به صفحه‌ی رسمی مخزن wkhtmltopdf در گیت‌هاب مراجعه کرده و آخرین فایل deb منتشرشده (با پشتیبانی header/footer) را دانلود کنید.

3-3. نصب PostgreSQL و تنظیم کاربر پایگاه‌داده

  1. نصب PostgreSQL:
  2. sudo apt-get install -y postgresql

این دستور آخرین نسخه PostgreSQL موجود در مخازن Ubuntu 22.04 (معمولاً PostgreSQL 14 یا 15) را نصب می‌کنید. پس از نصب، سرویس PostgreSQL را استارت کرده و برای اجرای خودکار فعال می‌کنیم:

sudo systemctl start postgresql

sudo systemctl enable postgresql

با دستور sudo systemctl status postgresql می‌توانید وضعیت سرویس را بررسی کنید که باید Active باشد.

  1. ایجاد کاربر لینوکسی مخصوص Odoo: برای امنیت بیشتر، Odoo را با یک کاربر سیستم جداگانه اجرا می‌کنیم (نه کاربر ریشه). این کاربر همچنین به عنوان مالک فایل‌های Odoo عمل خواهد کرد. دستور زیر یک کاربر سیستم به نام odoo17 (برای Odoo 17) ایجاد می‌کند:
  2. sudo useradd -m -U -r -d /opt/odoo17 -s /bin/bash odoo17
  • -m یک پوشه خانگی می‌سازد (که اینجا /opt/odoo17 تنظیم شده است)،
  • -U یک گروه با همان نام ایجاد می‌کند،
  • -r کاربر سیستمی بدون شل لاگین معمولی می‌سازد،
  • -d مسیر دایرکتوری خانگی را مشخص می‌کند،
  • -s شل لاگین (اینجا bash) را مشخص کرده است.
    سپس با دستور sudo passwd odoo17 می‌توانید یک کلمه‌عبور (در صورت نیاز) برای این کاربر تنظیم کنید. (اگر قصد ورود interactive با این کاربر ندارید، تعیین رمز لازم نیست).

ایجاد کاربر پایگاه‌داده PostgreSQL: بانک PostgreSQL را طوری تنظیم می‌کنیم که یک یوزر با همان نام کاربر سیستم (اینجا odoo17) داشته باشید. بدین ترتیب Odoo می‌تواند بدون نیاز به استفاده از postgres یا رمز عبور، مستقیماً به دیتابیس متصل شود (به شرطی که تنظیمات را مشابه انجام دهیم).

  • روش اول (ساده): اجرای یک دستور createuser با کاربر postgres:
  • sudo -u postgres createuser -s odoo17

این دستور یک یوزر PostgreSQL با نام odoo17 و دسترسی سوپر‌یوزر (-s) می‌سازد. چون نام این یوزر با نام کاربر سیستم یکسان است و از روش peer authentication استفاده می‌شود، می‌توان بدون رمز به DB متصل شد.

  • روش دوم (با رمزعبور): اگر می‌خواهید کاربر DB مجزایی با رمز تعیین کنید (مثلاً برای تنظیمات چندکاربره):
    • ابتدا وارد شل PostgreSQL شوید:
    • sudo -u postgres psql
    • سپس دستورات SQL زیر را در محیط psql اجرا کنید:
    • CREATE ROLE odoo17 WITH LOGIN PASSWORD 'یک‌رمز‌قوی';
    • ALTER ROLE odoo17 CREATEDB;

این دو دستور یک رول لاگین‌پذیر با رمز مشخص می‌سازد و به آن اجازه ایجاد دیتابیس می‌دهد. (دسترسی CREATEDB معادل پارامتر -s سوپریوزر نیست ولی برای کار Odoo کافی است).

    • با دستور \q از محیط psql خارج شوید.
      در هر دو حالت، هدف این است که یک کاربر پایگاه‌داده به نام odoo17 (یا هر نام دلخواه دیگر) وجود داشته باشد که Odoo برای ساخت و استفاده از دیتابیس‌ها از آن بهره ببرد. اگر روش اول (بدون رمز) را رفتید، در فایل کانفیگ Odoo باید db_password = False تنظیم شود تا اتصال از طریق Peer انجام شود. اگر روش دوم (با رمز) را انجام دادید، آن رمز را در فایل کانفیگ ذکر کنید.

3-4. دانلود سورس کد Odoo (Community و Enterprise)

مراحل مشابه ویندوز است اما در محیط ترمینال اوبونتو:

  1. ورود به کاربر odoo17: ابتدا برای ادامه کار، وارد حساب کاربری odoo17 شوید تا مالک فایل‌های دانلودی همان کاربر باشد:
  2. sudo su - odoo17

پس از اجرای این دستور، پوشه کاری شما باید /opt/odoo17 (خانه کاربر) باشد.

  1. کلون کردن مخزن Community: دستور git clone زیر را اجرا کنید:
  2. git clone https://github.com/odoo/odoo.git --depth 1 --branch 17.0 /opt/odoo17/odoo17

اینکار سورس Odoo 17 را در پوشه /opt/odoo17/odoo17 دانلود می‌کند. (برای Odoo 18، شاخه 18.0 و مسیر مثلاً /opt/odoo18/odoo18).

  1. کلون کردن مخزن Enterprise (در صورت نیاز): اگر نسخه Enterprise را دارید، مشابه زیر عمل کنید:
  2. git clone https://github.com/odoo/enterprise.git --depth 1 --branch 17.0 /opt/odoo17/enterprise

(برای 18، شاخه 18.0). اطمینان حاصل کنید که این دستور را نیز همچنان با کاربر odoo17 اجرا می‌کنید تا فایل‌ها متعلق به او باشد. اگر دسترسی GitHub Enterprise ندارید، کد را به روش دیگری (مثلاً از فایل zip) در مسیر /opt/odoo17/enterprise قرار دهید.

3-5. ایجاد محیط مجازی Python و نصب کتابخانه‌ها

  1. ایجاد محیط مجازی: به پوشه /opt/odoo17 (یا پوشه خانگی کاربر) بروید و venv ایجاد کنید:
  2. cd /opt/odoo17
  3. python3 -m venv odoo17-venv
  4. source odoo17-venv/bin/activate

اکنون باید پرامپت شما حاکی از فعال شدن محیط مجازی باشد (مثلاً `(odoo17-venv) odoo17@hostname:~.

  1. نصب وابستگی‌های Python: ابتدا pip را آپدیت کنید:
  2. pip install --upgrade pip wheel setuptools

سپس وارد پوشه‌ی کد Odoo شوید و کتابخانه‌ها را نصب کنید:

cd /opt/odoo17/odoo17

pip install -r requirements.txt

این کار تمامی نیازمندی‌های Python برای Odoo را نصب می‌کند. (چون قبلاً پیش‌نیازهای سیستمی را نصب کردیم، این مرحله باید بدون خطا طی شود. در صورت برخورد به خطا، بررسی کنید که همه کتابخانه‌های dev در بخش 3-1 نصب شده باشند).

  1. خروج از محیط مجازی: پس از نصب موفقیت‌آمیز، با دستور deactivate از محیط مجازی خارج شوید. (هر زمان که نیاز به نصب پکیج اضافی یا اجرای Odoo داشتید، باید مجدداً source odoo17-venv/bin/activate را اجرا کنید تا محیط فعال شود).

تا اینجا Odoo نصب شده است. یک پوشه اضافی هم برای ماژول‌های سفارشی ایجاد می‌کنیم:

  1. ساخت پوشه ماژول‌های سفارشی:
  2. mkdir /opt/odoo17/odoo17-custom-addons

این پوشه برای قراردادن ماژول‌های اضافی (third-party یا custom) استفاده خواهد شد. با این کار هسته Odoo و ماژول‌های Enterprise جدا از ماژول‌های افزوده‌شده نگهداری می‌شود.

  1. اعمال مالکیت فایل‌ها: چون ما به‌عنوان کاربر odoo17 کار می‌کنیم، احتمالاً مالکیت درست است. اما برای اطمینان:
  2. sudo chown -R odoo17:odoo17 /opt/odoo17
  3. sudo mkdir /var/log/odoo17 && sudo touch /var/log/odoo17/odoo17.log
  4. sudo chown -R odoo17:odoo17 /var/log/odoo17

با این دستورات، تمامی فایل‌های نصب‌شده و پوشه لاگ به کاربر odoo17 تعلق پیدا می‌کند. فایل لاگ /var/log/odoo17/odoo17.log نیز ایجاد شده تا Odoo خروجی‌های لاگ خود را آنجا بنویسد.

3-6. تنظیم فایل کانفیگ Odoo روی لینوکس

مشابه ویندوز، یک فایل کانفیگ برای Odoo می‌سازیم تا تنظیمات در آن نگهداری شود:

sudo nano /etc/odoo17.conf

محتوای زیر را در فایل قرار دهید:

[options]

admin_passwd = YourStrongPasswordHere

db_host = False

db_port = False

db_user = odoo17

db_password = False

xmlrpc_port = 8069

logfile = /var/log/odoo17/odoo17.log

addons_path = /opt/odoo17/odoo17/addons,/opt/odoo17/odoo17-custom-addons

توضیح تنظیمات مهم:

admin_passwd: یک کلمه‌عبور قوی برای مدیر پایگاه‌داده Odoo بگذارید (هنگام مدیریت از طریق وب استفاده می‌شود).

db_host و db_port وقتی مقدار False باشند، Odoo از اتصال Unix socket برای PostgreSQL استفاده می‌کند (که امن‌تر و ساده‌تر است. در این حالت نیاز نیست رمز PostgreSQL در کانفیگ قرار گیرد، به شرطی که نام کاربر سیستم و DB یکی باشد و در PostgreSQL پیکربندی peer auth فعال باشد (که به‌طور پیش‌فرض هست). اگر ترجیح می‌دهید از TCP/IP استفاده کنید، می‌توانید db_host = 127.0.0.1 و db_port = 5432 بگذارید و مقدار db_password را نیز تنظیم کنید.

db_user: نام کاربر پایگاه‌داده (ما odoo17 ساختیم).

db_password: اگر طبق روش peer (False) پیش می‌روید، False بگذارید. در غیر اینصورت رمز را اینجا وارد کنید (مثلاً اگر با CREATE ROLE رمزدار ایجاد کرده‌اید).

addons_path: مسیرهای پوشه ماژول‌ها. ابتدا مسیر ماژول‌های پیش‌فرض Odoo (community/addons) و سپس مسیر ماژول‌های سفارشی. اگر Enterprise نصب کرده‌اید، می‌توانید مسیر Enterprise addons را نیز اضافه کنید. ترتیب مهم است: مسیر enterprise باید قبل از community ذکر 46】تادرصورت وجود ماژول هم‌نام،نسخه Enterprise لود شود. برای مثال:

addons_path = /opt/odoo17/odoo17/enterprise,/opt/odoo17/odoo17/addons,/opt/odoo17/odoo17-custom-addons

(فرض شده کد Enterprise را در /opt/odoo17/enterprise کلون کرده‌اید).

فایل را ذخیره و خارج شوید.

3-7. اجرای Odoo به‌صورت سرویس (Service) و فعال‌سازی خودکار

برای محیط سرور، بهتر است Odoo را به عنوان یک سرویس systemd اجرا کنیم تا بتواند در پس‌زمینه اجرا شده و با راه‌اندازی مجدد سرور، خودکار شروع به کار  کند.

  1. ایجاد فایل سرویس:
  2. sudo nano /etc/systemd/system/odoo17.service

سپس محتوای زیر را در فایل وارد کنید:

[Unit]

Description=Odoo17 Service

After=network.target postgresql.service

[Service]

Type=simple

User=odoo17

Group=odoo17

ExecStart=/opt/odoo17/odoo17-venv/bin/python3 /opt/odoo17/odoo17/odoo-bin -c /etc/odoo17.conf

StandardOutput=journal+console

[Install]

WantedBy=multi-user.target

توضیح: در بخش [Unit] مشخص کردیم که سرویس Odoo پس از شبکه و PostgreSQL آغاز شود. در [Service]، نوع سرویس ساده است و با یوزر/گروه odoo17 اجرا می‌شود. فرمان ExecStart همان اجرای فایل odoo-bin با Python از محیط مجازی و بارگذاری فایل کانفیگ است. تنظیم StandardOutput لاگ‌ها را به ژورنال سیستم می‌فرستد.

  1. بارگذاری فایل سرویس و فعال‌سازی:
  2. sudo systemctl daemon-reload
  3. sudo systemctl start odoo17
  4. sudo systemctl enable odoo17

دستور اول systemd را از وجود فایل جدید آگاه می‌کند. دستور دوم سرویس Odoo17 را راه‌اندازی می‌کند و اگر خطایی ندهد یعنی همه‌چیز صحیح است. دستور سوم سرویس را برای شروع خودکار در بوت فعال می‌کنید.

  1. بررسی وضعیت سرویس: با دستور زیر وضعیت را چک کنید:
  2. sudo systemctl status odoo17

باید وضعیت Active (running) مشاهده کنید. همچنین می‌توانید لاگ سرویس را با sudo journalctl -u odoo17 -n 100 ببینید . اگر خطایی وجود داشت، براساس پیام آن مشکل را رفع کنید (مثلاً اشتباه در فایل کانفیگ، عدم دسترسی به پوشه یا پورت...).

  1. تست دسترسی: در مرورگر خود، آدرس IP یا دامنه سرور را با پورت 8069 باز کنید:
  2. http://<your_server_ip>:8069

باید صفحه خوش‌آمد Odoo ظاهر شود. یک پایگاه‌داده جدید بسازید (یا اگر قبلاً داشتید، متصل شوید) و وارد محیط Odoo شوید.

3-8. تفاوت‌های نصب برای نسخه 18 (اوبونتو)

مراحل نصب برای Odoo 18 در اوبونتو تقریباً همانند نسخه 17 است. تنها تفاوت‌ها در نام‌ها و شاخه‌هاست: مثلاً کاربر odoo18 به جای odoo17، شاخه 18.0 هنگام git clone، و نام فایل‌های کانفیگ و سرویس odoo18 به جای odoo17. همچنین ممکن است نیاز باشد مخازن Python3.11 نصب شود (در Ubuntu 22.04، Python3.10 پیش‌فرض است که برای Odoo 18 کافیست، اما اگر 3.11 نصب کردید استفاده شود).

به عنوان مثال برای ایجاد کاربر و پوشه:

sudo useradd -m -U -r -d /opt/odoo18 -s /bin/bash odoo18

sudo -u postgres createuser -s odoo18

sudo su - odoo18

git clone https://github.com/odoo/odoo.git --depth 1 --branch 18.0 /opt/odoo18/odoo18

python3 -m venv /opt/odoo18/odoo18-venv

... (and so on)

و تنظیمات فایل کانفیگ و سرویس را با نام‌ها و مسیرهای نسخه 18 تطبیق دهید.

نکته: Odoo 18 ممکن است بسته‌های جدیدتری در requirements.txt داشته باشد ولی روند نصب تفاوتی ندارد. همیشه به راهنمای رسمی هر نسخه نگاهی بیندازید تا تغییر احتمالی در پیش‌نیازها را متوجه شوید.

۵. بروزرسانی، نگهداری و نکات پس از نصب Odoo

نصب Odoo پایان کار نیست؛ برای حفظ عملکرد مطلوب نیاز به نگهداری مداوم و بروزرسانی‌های دوره‌ای خواهید داشت. در این بخش به چند نکته مهم می‌پردازیم:

5-1. بروزرسانی کد Odoo (نگارش‌های فرعی)

Odoo به صورت مرتب آپدیت‌های نگارش فرعی (مثلاً 17.1، 17.2 و ... یا به‌روزرسانی‌های Security) منتشر می‌کند. اگر Odoo را از سورس نصب کرده‌اید (با Git):

  • می‌توانید با دستور git pull در شاخه‌ی مربوطه (مثلاً 17.0) آخرین تغییرات پایدار را دریافت کنید. پس از pull، لازم است سرور Odoo را ری‌استارت کنید.
  • توجه کنید که اگر ساختار پایگاه‌داده تغییری کرده باشد، Odoo هنگام راه‌اندازی migration را خود انجام می‌دهد (برای نگارش‌های فرعی در همان سری معمولاً بدون مشکل است).

اگر از بسته Debian/Ubuntu یا Docker استفاده می‌کنید:

  • در Debian/Ubuntu با apt update && apt upgrade می‌توانید Odoo را به‌روز کنید (اگر از مخازن رسمی استفاده کرده باشید).
  • در Docker، همانطور که ذکر شد، گرفتن ایمیج جدید (docker pull odoo:<tag>) و راه‌اندازی مجدد با همان volume داده روش بروزرسانی است.

🔄 نکته: قبل از بروزرسانی، حتماً Backup کامل از پایگاه‌داده و فایل‌های مهم (ماژول‌های سفارشی، فایل‌های پیوست و ...) تهیه کنید. هرچند آپدیت‌های نگارش فرعی معمولاً پایدارند، اما تهیه نسخه پشتیبان همیشه بهترین اقدام پیشگیرانه است.

5-2. ارتقاء به نسخه‌های بزرگ‌تر (مثلاً از 17 به 18)

ارتقاء بین نسخه‌های اصلی Odoo (مانند 16 به 17، یا 17 به 18) پیچیده‌تر است، زیرا تغییرات اساسی در ساختار داده و کد رخ می‌دهد. راه‌های معمول:

  • استفاده از اسکریپت مهاجرت Odoo (که برای مشتریان Enterprise توسط Odoo ارائه می‌شود).
  • استفاده از ابزار متن‌باز OpenUpgrade برای مهاجرت دیتابیس.

این مبحث گسترده‌ای است و خارج از محدوده این راهنما، اما بطور خلاصه: اگر قصد ارتقاء دارید، یک محیط آزمایشی بسازید، دیتابیس را کپی کنید، روی نسخه جدید مهاجرت دهید و تست کنید. سپس در زمان مقرر، روی سیستم اصلی این عملیات را انجام دهید. همواره از پشتیبانی یا مشاوران متخصص در مهاجرت Odoo (در صورت Enterprise داشتن) کمک بگیرید تا ریسک به حداقل برسد.

5-3. نگهداری عمومی سیستم Odoo

چند کار مهم جهت نگهداری منظم:

  • پشتیبان‌گیری (Backup): به‌طور منظم از پایگاه‌داده PostgreSQL بکاپ بگیرید (مثلاً با pg_dump). همچنین اگر فایل‌های مهمی روی دیسک دارید (مانند فایل‌های بارگذاری شده توسط کاربران یا گزارش‌های PDF)، آنها را نیز در پشتیبان لحاظ کنید.
  • نظارت بر لاگ‌ها: فایل لاگ Odoo (odoo.log) یا ژورنال سرویس را گاهی بررسی کنید. خطاها یا Warningها را زیر نظر داشته باشید تا مشکلات را قبل از ایجاد اختلال جدی رفع کنید.
  • به‌روزرسانی سیستم‌عامل و پکیج‌ها: به‌خصوص برای سرورهای لینوکسی، سیستم را بروز نگه دارید تا از patchهای امنیتی بهره‌مند شوید.
  • مدیریت ماژول‌ها: اگر ماژول‌های اضافی نصب کرده‌اید، مطمئن شوید با نسخه Odoo شما سازگارند. پس از هر بروزرسانی Odoo، تست کنید که ماژول‌های third-party درست کار می‌کنند.
  • پاکسازی دوره‌ای: لاگ‌های بسیار قدیمی یا فایل‌های موقت (مثلاً فایل‌های در صف پرینت) را در صورت نیاز پاکسازی کنید تا فضای دیسک اشغال نشود.
  • امنیت اتصال: اگر سرور شما روی اینترنت است، حتماً ارتباط آن را پشت یک پروکسی امن (مانند Nginx/SSL) قرار دهید، از رمزنگاری SSL استفاده کنید و پورت‌های غیرضروری را فایروال کنید. همچنین می‌توانید ماژول‌های امنیتی Odoo (مانند محدودیت تلاش‌های لاگین) را فعال نمایید.

۶. نصب ماژول‌های اضافی و توسعه‌ی ماژول سفارشی

یکی از نقاط قوت Odoo، قابلیت افزودن ماژول‌های جدید (چه از Odoo App Store و چه توسعه سفارشی) است. در این بخش نحوه اضافه‌کردن ماژول‌ها و نکات توسعه را مرور می‌کنیم:

6-1. نصب ماژول‌های اضافی (Third-party)

برای نصب یک ماژول اضافی:

  • ابتدا سورس کد ماژول را تهیه کنید (مثلاً از مخزن گیت GitHub یا خریداری از App Store).
  • کد ماژول (پوشه‌ی ماژول که شامل __manifest__.py است) را در یکی از مسیرهای موجود در addons_path قرار دهید. پیشنهاد می‌شود از پوشه‌ی custom-addons که قبلاً ساختیم استفاده کنید تا هسته‌ی Odoo دست‌نخورده . برای مثال، ماژول X را در /opt/odoo17/odoo17-custom-addons/X کپی کنید.
  • مالکیت/دسترسی پوشه را طوری تنظیم کنید که کاربر Odoo (مثلاً odoo17) به آن دسترسی کامل داشته باشد (در لینوکس با chown -R). در ویندوز نیز اگر سرویس به شکل خاصی نبود، با همان کاربر که اجرا می‌کنید دسترسی خواهد داشت.
  • سرور Odoo را ری‌استارت کنید (یا در حالت debug از طریق UI Apps -> Update Apps List را کلیک کنید). اکنون باید ماژول جدید در لیست اپلیکیشن‌ها قابل مشاهده باشد.
  • از بخش Apps ماژول را نصب کنید. اگر ماژول وابستگی به ماژول‌های دیگر دارد، ابتدا آنها را اضافه کنید.

💡 توجه: اگر ماژول را اضافه کردید ولی در لیست ظاهر نمی‌شود، بررسی کنید که حالت developer (یا نمایش اپ‌های مخفی) فعال باشد و یا فایل __manifest__.py آن installable: True باشد. همچنین مطمئن شوید پوشه‌ی ماژول دقیقاً در addons_path ذکر شده قرار دارد و نام پوشه دقیقاً مطابق نام ماژول است.

6-2. توسعه‌ی ماژول‌های سفارشی

برای نوشتن یک ماژول جدید، گام‌های کلی به شرح زیر است:

  • یک پوشه در مسیر custom-addons خود ایجاد کنید، مثلاً /opt/odoo17/odoo17-custom-addons/my_module.
  • داخل آن، حداقل فایل‌های __manifest__.py (حاوی متادیتا و وابستگی‌های ماژول) و یک پوشه models با یک فایل __init__.py و یک فایل Python (مثلاً my_model.py) و در صورت نیاز پوشه views برای XMLهای رابط، ایجاد کنید.
  • محتویات اولیه __manifest__.py شامل نام، نسخه، depends (وابستگی‌ها) و ... باشد. برای شروع سریع، می‌توانید از دستور scaffold Odoo استفاده کنید:
  • python odoo-bin scaffold my_module /opt/odoo17/odoo17-custom-addons

این دستور یک قالب آماده برای ماژول جدید ایجاد می‌کند (شامل ساختار دایرکتوری و فایل‌های پایه). سپس می‌توانید آن را ویرایش کرده و منطق خود را اضافه کنید.

  • پس از ایجاد ماژول، Odoo را ری‌استارت کرده و از لیست اپ‌ها آن را نصب کنید. احتمالاً در حین توسعه چندین بار نیاز به به‌روزرسانی ماژول (Upgrade) دارید که می‌توانید از UI یا با فرمان -u my_module هنگام اجرای odoo-bin این کار را انجام دهید.

۷. منابع و مراجع رسمی

در پایان، برای مطالعه بیشتر و رفع مشکلات احتمالی، منابع زیر به‌شدت پیشنهاد می‌شوند: