استقرار اودو فقط «نصب نرمافزار» نیست؛ شما دارید یک سیستم عملیاتی برای فروش، مالی، انبار، تولید، منابع انسانی و تجربه مشتری را وارد قلب سازمان میکنید. اگر همان ابتدا مرز بین پیادهسازی فرآیندی و راهاندازی فنی مشخص نشود، معمولاً یا پروژه در سفارشیسازیهای بیپایان گیر میکند، یا با یک Go-Live پرریسک وارد تولید میشود.
در این مقاله یک نقشهی اجرایی میسازیم که هم برای مدیر پروژه قابل فهم باشد، هم برای تیم فنی قابل اجرا: از انتخاب مدل میزبانی (Online / Odoo.sh / On-Premise) تا معماری، امنیت، بکاپ، تست، و نهایتاً Go-Live و پشتیبانی پس از راهاندازی. (نمونهها و استانداردها بر اساس منابع رسمی و معتبر بینالمللی است.)
مدل استقرار اودو را درست انتخاب کنید (Online vs Odoo.sh vs On-Premise)
قبل از هر تصمیم فنی، باید بدانید چه چیزی را میخواهید «کنترل» کنید و چه چیزی را میخواهید «واگذار» کنید.
1) Odoo Online (SaaS)
مناسب وقتی است که کمترین نگهداری زیرساخت را میخواهید و بیشتر تمرکز روی فرآیند و آموزش کاربران است.
نکته مهم: عملیاتهایی مثل حذف دیتابیس برگشتناپذیر است و خود Odoo توصیه میکند قبل از حذف، بکاپ دانلود شود.
2) Odoo.sh (PaaS روی Git)
مناسب برای تیمهایی که توسعه/ماژول اختصاصی دارند اما نمیخواهند درگیر نگهداری همهچیز شوند.
مزیت کلیدی: محیطهای Production / Staging / Development و روند «تست با داده واقعی» از طریق Staging. در مستندات Odoo.sh توضیح داده شده که Staging برای تست با داده تولید ساخته میشود و روند Merge/Deploy با drag & drop انجام میگیرد.
نکته مهم: برخی دیتابیسهای غیرپروداکشن (مثل staging/dev) محدودیت عمر دارند و بکاپ خودکار هم برای همه مراحل یکسان نیست؛ اینها باید در برنامه تست/ریکاوری شما لحاظ شود.
همچنین Odoo.sh درباره «Database workers» و اینکه افزایش worker لزوماً مشکل کندی را حل نمیکند، هشدار میدهد (کندی ممکن است کد/سفارشیسازی باشد).
3) On-Premise (Self-Hosted)
مناسب وقتی است که کنترل کامل روی شبکه، دیتا، امنیت، قوانین داخلی، یا یکپارچگیهای سنگین میخواهید.
اما هزینهاش این است که باید استانداردهای عملیاتی (TLS، بکاپ، مانیتورینگ، آپدیت، سختسازی امنیت) را جدی بگیرید.

نقشه راه پروژه استقرار: از Kick-off تا Go-Live (مدیریت پروژه، نه فقط نصب
یکی از نکات ارزشمند در متدولوژی رسمی Odoo این است که پروژه را فازبندی کنید و «نیازهای حیاتی برای Go-Live» را از «بهبودهای فاز دوم» جدا نگه دارید.
فاز 1: Kick-off و همراستاسازی
در Kick-off باید:
نقشها مشخص شوند (نماینده اصلی مشتری/Single Point of Contact یا SPoC)
برنامه پروژه نهایی شود
یک تحلیل سریع ROI/امکانسنجی انجام شود و سطح تعهد زمانی تیمها روشن شود
فاز 2: تحلیل فرآیند و طراحی (Blueprint سبک، اما دقیق)
هدف این فاز این نیست که «همهچیز را مستندسازی سنگین» کنید؛ هدف این است که:
فرآیندهای کلیدی را انتخاب کنید (Order-to-Cash، Procure-to-Pay، Inventory، Accounting Close…)
شکافها (Gap) را مشخص کنید: استاندارد Odoo؟ تنظیمات؟ توسعه؟
فاز 3: پیکربندی و توسعه حداقلی برای Go-Live
در متدولوژی Odoo توصیه میشود توسعهها را دو دسته کنید:
ضروری برای ورود به تولید
قابل انتقال به فاز دوم بعد از Go-Live Odoo
فاز 4: مهاجرت داده و تست جریانهای واقعی
مهاجرت «دادههای پایه» (محصول، مشتری، تامینکننده، حسابها، موجودی افتتاحیه…) معمولاً ضروری است.
وارد کردن تاریخچه چندسال قبل همیشه ارزش ندارد؛ اگر قرار است بهندرت استفاده شود، میتواند به فاز دوم منتقل شود (این نگاه در متدولوژی Odoo هم مطرح است).
فاز 5: آموزش، UAT و Go-Live
توصیههای اجرایی Odoo برای Go-Live شامل اینهاست:
آموزش باید عملی باشد (کاربر خودش جریان را انجام بدهد)
Go-Live را بیدلیل عقب نیندازید؛ عقبانداختن معمولاً ریسک و هزینه را بالا میبرد
در روزهای اول، واکنش سریع به مشکلات مهمتر از «بینقص بودن» است
فاز 6: Hypercare و فاز دوم
یک ماه بعد از استقرار اولیه، فاز دوم برای بهبودها/سفارشیسازیهای غیرحیاتی و اصلاح اولویتها انجام میشود.
پیشنیازهای فنی Odoo 19 برای On-Premise
اگر نسخه هدف شما Odoo 19 است:
حداقل Python 3.10+
حداقل PostgreSQL 13+ Odoo
اینها را از همان ابتدا معیار قرار دهید، چون ناسازگاری نسخهها میتواند در مرحله نصب یا حتی بعدتر در عملکرد/امنیت مشکل ایجاد کند.
معماری پیشنهادی برای استقرار پایدار (Production-Grade)
اصل معماری: Reverse Proxy جلوی Odoo + HTTPS اجباری
خود مستندات Odoo برای حالت production تأکید میکند:
باید یک proxy جلوی Odoo باشد
و Odoo در حالت --proxy-mode اجرا شود تا هدرهای واقعی کاربر (scheme/host/ip) درست مدیریت شوند Odoo+1
Websocket/LiveChat و پورت gevent
در حالت multi-processing، Odoo یک worker مخصوص LiveChat/Websocket دارد و نیاز است:
مسیرهایی که با /websocket/ شروع میشوند به worker مربوطه هدایت شوند
و proxy-mode فعال باشد Odoo
محاسبه Worker و RAM (تقریبی، اما مفید)
Odoo در مستندات production:
فرمول/مثال محاسبه تعداد worker و برآورد RAM را ارائه میدهد (تفکیک درخواستهای سنگین/سبک و تخمین مصرف RAM)
این اعداد «قانون طبیعت» نیستند؛ مبنا برای شروعاند. تصمیم نهایی باید با مانیتورینگ CPU/RAM و مشاهده p95/p99 زمان پاسخگویی گرفته شود.
سختسازی امنیتی که برای Odoo حیاتی است
در سرور اینترنتی، Odoo صریحاً چند نکته را توصیه میکند که اگر رعایت نشود، ریسک نفوذ واقعی است:
Database Manager را در تولید محدود غیرفعال کنید
پسورد super-admin (admin_passwd) باید قوی باشد
و بهشدت توصیه میشود Database Manager برای سیستمهای اینترنتی غیرفعال شود یا دسترسی آن محدود گردد (چون برای production طراحی نشده و میتواند خطرناک باشد).
dbfilter و list_db = False
dbfilter درست + محدود کردن دیتابیسهای قابل مشاهده، بخشی از امنیت است.
بعد از اینکه هر hostname فقط به یک دیتابیس match شد، list_db را False کنید تا لیست دیتابیسها و صفحات مدیریت دیتابیس عملاً بسته شود.
بدون demo data در سرور عمومی
Odoo هشدار میدهد دیتابیسهای دارای demo data میتوانند شامل لاگین/پسوردهای پیشفرض باشند و روی اینترنت دردسرساز شوند.
ضد Brute Force و کنترل نشستها
Odoo حتی نمونه الگو برای Fail2ban و مسدودسازی تلاشهای ورود ناموفق ارائه میدهد. Odoo
برای دید امنیتی سطح وباپلیکیشن، حداقل با OWASP Top 10 و راهنمای مدیریت نشستها همراستا شوید.
TLS را استاندارد کنید (نه «فقط SSL روشن باشد»)
برای تنظیم امن TLS روی Nginx/سرویسها، از Mozilla SSL Configuration Generator استفاده کنید و خروجی را مبنا قرار دهید.
بکاپ و Disaster Recovery: چیزی که بعد از حادثه تازه جدی گرفته میشود
برای Odoo، بکاپ فقط «dump دیتابیس» نیست؛ چون فایلهای پیوست/filestore و همچنین سناریوهای «بازگشت به یک لحظه خاص» هم مطرحاند.
دو سطح بکاپ پیشنهادی
Logical backup با pg_dump (مناسب برای مهاجرت/Restore ساده)
Physical backup + WAL archiving برای Point-in-Time Recovery (PITR)
PostgreSQL توضیح میدهد که برای PITR باید توالی پیوسته WAL آرشیوشده داشته باشید و قبل از اولین base backup، فرآیند archiving را راهاندازی و تست کنید.
همچنین pg_basebackup ابزار استاندارد گرفتن base backup از یک کلاستر در حال اجراست و برای PITR و replication استفاده میشود.
نکته عملی
هر استراتژی بکاپی که Restore تستشده ندارد، عملاً «امید» است نه بکاپ.
زمان بازیابی (RTO) و میزان داده قابل از دست رفتن (RPO) را از ابتدا تعریف کنید.

چکلیست Go-Live فنی (قبل از قطع وابستگی به سیستم قبلی)
زیرساخت و عملکرد
Reverse proxy فعال + proxy_mode فعال Odoo+1
مسیر /websocket/ درست route شده (اگر پیامرسانی/LiveChat دارید)
تعداد worker و limitها بر اساس تست بار/مانیتورینگ تنظیم شدهاند
امنیت
admin_passwd قوی، عدم استفاده از admin/admin
list_db = False و dbfilter صحیح
لاگگذاری و ضد brute force (Fail2ban یا معادل)
TLS مطابق راهنمای معتبر (Mozilla)
بکاپ
بکاپ دیتابیس + فایلها
تست Restore
اگر PITR لازم است: base backup + WAL archiving تستشده
نتیجهگیری: استقرار موفق یعنی «قابل تکرار، قابل پایش، قابل بازیابی»
اگر بخواهم این مقاله را به یک جمله تبدیل کنم:
استقرار اودو زمانی حرفهای است که بتوانید آن را دوباره بسازید (reproducible)، پایش کنید (observable)، و بعد از خطا برگردانید (recoverable).
برای رسیدن به این نقطه:
مدل میزبانی را بر اساس «کنترل موردنیاز» انتخاب کنید (Online / Odoo.sh / On-Premise)
پروژه را فازبندی کنید و Go-Live را با حداقل توسعه حیاتی انجام دهید
امنیت، TLS، dbfilter، و محدود کردن Database Manager را جدی بگیرید
بکاپ را به «برنامه بازیابی» تبدیل کنید، نه یک فایل روی دیسک