آنچه در این مقاله میخوانید
آموزش نصب Odoo با Docker روی سرور مجازی Ubuntu
۱۹ فروردین ۱۴۰۴
Odoo یک پلتفرم متنباز است که برای برنامهریزی منابع سازمانی (ERP) از آن استفاده میشد. این پلتفرم با زبان پایتون توسعه یافته شده است. این سیستم از افزونههای مختلفی برای نیازهای متنوع کاری مانند حسابداری، مدیریت حقوق و دستمزد، انبارداری و موارد دیگر پشتیبانی میکند و میتوانید در تمامی این زمینه ها از آن استفاده کنید.
در این آموزش، Odoo را همراه با پایگاه داده PostgreSQL با Docker Compose نصب میکنید. سپس، Nginx را بهعنوان پروکسی معکوس برای مدیریت ترافیک Odoo تنظیم خواهید کرد. در نهایت، با استفاده از Certbot، یک گواهی SSL از Let’s Encrypt دریافت میکنید تا سایت شما از HTTPS پشتیبانی کند و ارتباطات امن شوند.
برنامهی Odoo را تنها با یک کلیک نصب و راهاندازی کنید.
✅ نصب سریع و خودکار ✅ تنظیمات بهینه ✅ کاربری آسان
نصب Odoo
آنچه در ادامه خواهید خواند:
- پیش نیاز ها
- مرحله اول: نصب Docker Compose
- مرحله دوم: اجرای Odoo و PostgreSQL با Docker Compose
- مرحله سوم: نصب و پیکربندی Nginx
- مرحله چهارم: نصب Certbot و تنظیم گواهینامه TLS
- مرحله پنجم: تنظیم Odoo
- سوالات متداول
- جمع بندی
پیش نیاز ها
اگر از اوبونتو نسخههای قدیمیتر استفاده میکنید، به شما توصیه میکنیم که به نسخه جدیدتری ارتقا دهید، زیرا این نسخهها دیگر توسط اوبونتو پشتیبانی نمیشوند.
برای تکمیل این آموزش، به موارد زیر نیاز دارید:
- یک سرور اوبونتو: با حداقل ۲ پردازنده (CPU)، یک کاربر غیر روت (non-root) با دسترسی sudo و یک فایروال فعال.
برای فعالسازی TLS، نیاز به یک دامنه متصل به IP سرور خود دارید. دامنه میتواند چیزی مانند example.com یا odoo.example.com باشد.
بعد از آنکه پیش نیازها را آماده کردید. به مرحله اول بروید و بسته docker-compose را نصب کنید.
برای ادامه مطالعه و یادگیری: Odoo چیست؟ هرآنچه باید در باره این پلتفرم بدانید

مرحله اول: نصب Docker Compose
برای نصب Docker Compose، باید لیست بستههای خود را به روز رسانی کنید و بعد از آن بسته را با apt نصب کنید.
sudo apt update
sudo apt install docker-compose
در صورتی که این نسخه را نصب کردید، باید از دستور docker compose بهجای docker-compose استفاده کنید.
برای اطمینان از نصب موفق Docker Compose، دستور زیر را اجرا کنید:
docker-compose --version
خروجی این دستور مشابه زیر خواهد بود:
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 پیکربندی و اجرا خواهید کرد.
همین الان، بدون کمترین پیچیدگی، سرور مجازی خودتون رو در کمتر از ۳۰ ثانیه، راهاندازی کنید.
✅ عملکرد پایدار ✅ ترافیک نامحدود ✅ هزینه بهصرفه
خرید سرور مجازی ابری
مرحله دوم: اجرای Odoo و PostgreSQL با Docker Compose
برای راهاندازی کانتینرهای Odoo و PostgreSQL، باید یک دایرکتوری مخصوص برای ذخیره فایلهای موردنیاز ایجاد کنید. این دایرکتوری تمامی فایلهایی که برای اجرای Odoo نیاز دارید را در خود نگه میدارد.
برای ساخت دایرکتوری odoo باید دستور زیر را وارد کنید.
mkdir ~/odoo
cd ~/odoo
حال یک فایل YAML جدیدی به نام docker-compose.yml
را بسازید. برای این کار میتوانید از ویرایشگر nano یا هر ویرایشگر دیگری که میخواهید با آن کار کنید، استفاده کنید:
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:
مطالعه بیشتر: نحوه نصب Git در سرور مجازی اوبونتو
نکات مهم:
- Odoo از ایمیج نسخه ۱۵ استفاده میکند.
- PostgreSQL از ایمیج نسخه ۱۳ استفاده میکند.
- یک فایل
.env
برای مدیریت متغیرهای محیطی در هر دو سرویس تعریف شده است. - اتصال بین Odoo و PostgreSQL به طور خودکار مدیریت میشود.
- پورت ۸۰۶۹ برای Odoo در دسترس قرار گرفته است.
- دو حجم (Volume) برای ذخیرهسازی دادهها تعریف شده است تا اطلاعات Odoo و PostgreSQL بعد از ریاستارت از بین نروند.
در مرحله بعدی، تنظیمات مربوط به محیط (.env
) را اضافه کرده و کانتینرهای Odoo و PostgreSQL را اجرا خواهیم کرد.

مرحله سوم: نصب و پیکربندی Nginx
Nginx به عنوان یک وبسرور و پروکسی معکوس میتواند عملکرد Odoo را بهبود ببخشد. این کار را با مدیریت کشینگ (caching)، فشردهسازی (compression) و ارسال فایلهای استاتیک انجام میدهد. ما از Nginx به عنوان پروکسی معکوس برای Odoo استفاده خواهیم کرد تا درخواستهای کاربران را مدیریت کند و به Odoo ارسال کند. این کار همچنین فرایند صدور گواهینامه Let’s Encrypt در مرحله بعد را آسانتر میکند.
1. نصب Nginx
ابتدا لیست پکیجهای سیستم را بهروز کرده و سپس Nginx را نصب کنید:
sudo apt update
sudo apt install nginx
2. باز کردن دسترسی به پورت های HTTP و HTTPS
برای فعال کردن دسترسی عمومی به پورتهای ۸۰ و ۴۴۳ (مربوط به HTTP و HTTPS)، از پروفایل UFW مخصوص Nginx استفاده کنید:
sudo ufw allow "Nginx Full"
پس از اجرا، خروجی مشابه زیر را خواهید دید:
Rule added
Rule added (v6)
3. ساخت فایل پیکربندی Nginx
یک فایل جدید در مسیر /etc/nginx/sites-available
برای پیکربندی Odoo ایجاد کنید. این فایل را 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) را مدیریت میکند و در مرحله بعد HTTPS را اضافه خواهیم کرد.
- درخواستهای کاربران را به http://localhost:8069 که Odoo روی آن اجرا شده، هدایت میکند.
- لاگ های مربوط به دسترسی و خطاها را در مسیر
/var/log/nginx/
ذخیره میکند.
بعد از ویرایش، فایل را ذخیره کنید و از آن خارج شوید. (در nano با CTRL + X
سپس Y
و Enter
)
4. فعال سازی پیکربندی Nginx برای Odoo
فایل پیکربندی را با ایجاد یک لینک نمادین (symlink) به مسیر /etc/nginx/sites-enabled/
فعال کنید:
sudo ln -s /etc/nginx/sites-available/odoo.conf /etc/nginx/sites-enabled/
5. بررسی صحت پیکربندی Nginx
دستور زیر را اجرا کنید تا مطمئن شوید پیکربندی Nginx درست انجام شده و خطایی وجود ندارد:
sudo nginx -t
خروجی صحیح باید به این شکل باشد:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
6. بارگذاری مجدد Nginx با پیکربندی جدید
پس از اطمینان از درستی تنظیمات، سرویس Nginx را ری لود کنید تا تغییرات اعمال شوند:
sudo systemctl reload nginx.service
7. بررسی دسترسی Odoo از طریق HTTP
- حالا میتوانید Odoo را از طریق HTTP ساده مشاهده کنید.
- آدرس
http://your_domain_here
را در مرورگر باز کنید. - ممکن است مرورگر هشدار امنیتی نمایش دهد (به دلیل نبودن HTTPS).
اکنون که Odoo از طریق HTTP در دسترس است، در مرحله بعد با استفاده از Certbot و Let’s Encrypt آن را به HTTPS ایمن تبدیل خواهیم کرد. توصیه میشود این کار قبل از انجام تنظیمات نهایی در Odoo انجام شود.
بیشتر بخوانید: نصب و استفاده از داکر کامپوز (Docker Compose) در اوبونتو

مرحله چهارم: نصب Certbot و تنظیم گواهینامه TLS
با استفاده از Certbot و مرجع صدور گواهینامه رایگان Let’s Encrypt، میتوانیم بهسادگی اتصالات Odoo را رمزگذاری کنیم. این فرآیند فقط با دو دستور انجام میشود.
1. نصب Certbot و افزونه Nginx
ابتدا Certbot و افزونهی Nginx Certbot را نصب کنید:
sudo apt install certbot python3-certbot-nginx
2. دریافت و نصب گواهینامه SSL
سپس دستور زیر را اجرا کنید تا گواهینامه Let’s Encrypt را دریافت کرده و پیکربندی Nginx را بهطور خودکار تنظیم کند:
sudo certbot --nginx -d your_domain_here
در این دستور، حتماً your_domain_here
را با دامنه واقعی سرور Odoo (مثلاً odoo.example.com
) جایگزین کنید.
در طول انجام کار این پیش نیاز ها از شما خواسته میشود.
- پذیرش قوانین Let’s Encrypt
- وارد کردن ایمیل برای اطلاعرسانی درباره تمدید گواهینامه
بعد از این مراحل، Certbot از شما میپرسد که آیا میخواهید همهی ترافیک HTTP را به HTTPS هدایت کنید؟
پیشنهاد میشود این گزینه را فعال کنید، زیرا باعث افزایش امنیت سایت میشود.
3. تایید صدور گواهینامه SSL
اگر همه چیز را به درستی انجام شود. خروجی زیر را به شما نشان خواهد داد.
Congratulations! You have successfully enabled https://odoo.example.com
در این پیام، مسیر ذخیره گواهینامه ها نمایش داده میشود.
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
به شما پیشنهاد میکنیم که از این مسیر ها بکاپ گیری کنید.
نکته: برای بررسی صحت پیکربندی SSL، میتوانید این آدرس را در مرورگر خود باز کنید: SSL Labs Test
4. بررسی خودکار تمدید گواهینامه SSL
Let’s Encrypt گواهینامههای SSL را به مدت ۹۰ روز صادر میکند. برای تمدید خودکار، از این دستور استفاده کنید:
sudo certbot renew
نکته: این دستور به صورت خودکار خودش اجرا میشود، اما بهتر است که در بعضی از اوقات آن را به صورت دستی هم اجرا کنید تا مطمئن شوید که تمدید گواهینامه شما بدون مشکل انجام خواهد شد.
5. بررسی HTTPS در مرورگر
در این قسمت باید وب سایت خود را باز کنید:
sudo certbot --nginx -d your_domain_here
از شما خواسته میشود که با شرایط استفاده از سرویس Let’s Encrypt موافقت کنید و یک آدرس ایمیل وارد کنید.
سپس، از شما پرسیده میشود که آیا میخواهید تمام ترافیک HTTP را به HTTPS هدایت کنید؟
بعد از این مراحل، Let’s Encrypt درخواست شما را تأیید میکند و Certbot گواهینامه SSL را دانلود خواهد کرد.
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 را با تنظیمات و گواهینامههای جدید بارگذاری (reload) میکند.
سپس سایت خود را در مرورگر بازخوانی (reload) کنید. اگر گزینهی هدایت ترافیک HTTP به HTTPS را انتخاب کرده باشید، سایت شما به صورت خودکار روی HTTPS اجرا خواهد شد.
اکنون سایت شما امن است و میتوانید با خیال راحت مراحل تنظیمات تحت وب Odoo را ادامه دهید.
?مطالعه بیشتر: نحوه میزبانی وبسایت با استفاده از Cloudflare و Nginx در اوبونتو 22.04

مرحله پنجم: تنظیم Odoo
حالا به مرورگر خود برگردید و صفحه را بارگذاری مجدد (Reload) کنید.
باید صفحهی پیکربندی پایگاه داده Odoo را ببینید که حالا بهصورت امن از طریق HTTPS در دسترس است.
در این مرحله میتوانید نام کاربری و رمز عبور را با خیال راحت وارد کنید و نصب Odoo را کامل کنید.
اطلاعاتی که در این صفحه وارد می کنید، مشخص می کند که Oddo چگونه پایگاه داده PostgreSQL را بسازد و جزئیات مربوط به کاربر ادمین را تنظیم کند.
فیلد های مورد نیاز برای تکمیل فرم:
- Database Name (نام پایگاه داده):
odoo
- Email (ایمیل): ایمیل شخصی شما
- Password (رمز عبور): یک رمز قوی و منحصربهفرد برای ورود ادمین
- Demo data (دادههای نمونه): این گزینه را فعال کنید اگر برای اولین بار Odoo را نصب میکنید
نکته: بقیهی فیلدها را در حالت پیشفرض رها کنید. حتماً ایمیل و رمز عبوری که انتخاب میکنید را یادداشت کنید چون برای ورود به Odoo به آنها نیاز خواهید داشت.
حالا روی دکمهی ساخت پایگاه داده (Create database) کلیک کنید.
Odoo چند دقیقه زمان نیاز دارد تا جدولهای پایگاه داده را بسازد.
پس از پایان این مرحله، شما به صفحهی Odoo Apps (اپلیکیشنهای Odoo) هدایت خواهید شد.
نصب ماژولهای Odoo
- در این بخش میتوانید ماژولهای مختلف Odoo را برای مدیریت کسبوکار خود انتخاب و نصب کنید.
- برای تست یک ماژول، روی دکمه Install در بخش Sales کلیک کنید.
- بعد از نصب، Odoo شما را به صفحه Discuss میبرد.
برای دسترسی به ماژول فروش:
- روی آیکون مربعهای کوچک در گوشهی بالای سمت چپ صفحه کلیک کنید.
- گزینهی Sales (فروش) را از منوی بازشونده انتخاب کنید.
سوالات متداول:
در ادامه به سوالاتی که امکان دارد در این زمینه برای شما بدون پاسخ بماند، جوابهای کوتاه اما مفیدی دادهایم که با استفاده از آن میتوانید به سوال خود پاسخ صحیحی را بدهید.
آیا میتوان Odoo را بدون Docker نصب کرد؟
بله، میتوان Odoo را مستقیماً روی سرور Ubuntu نصب کرد، اما استفاده از Docker مدیریت و نگهداری را سادهتر میکند و به شما این امکان را میدهد که Odoo را بدون تغییر در سیستمعامل اصلی اجرا کنید.
آیا برای اجرای Odoo حتماً به Nginx نیاز دارم؟
خیر، اما استفاده از Nginx بهعنوان پروکسی معکوس باعث بهبود عملکرد و امنیت میشود، مخصوصاً وقتی میخواهید Odoo را با HTTPS اجرا کنید.
چگونه میتوانم پورت پیشفرض Odoo را تغییر دهم؟
برای تغییر پورت، فایل docker-compose.yml
را ویرایش کنید و مقدار ports
را تغییر دهید:
ports:
- "127.0.0.1:9090:8069"
رمز عبور PostgreSQL کجاست؟
اطلاعات مربوط به PostgreSQL در فایل .env
ذخیره میشود که هنگام اجرای docker-compose
مقداردهی شده است.
چگونه میتوانم Odoo را آپدیت کنم؟
- ابتدا کانتینر Odoo را متوقف کنید:
docker-compose down
- آخرین نسخه تصویر Odoo را دریافت کنید:
docker pull odoo:15.0
- مجدداً کانتینر را اجرا کنید:
docker-compose up -d
اگر گواهی SSL منقضی شد، چه کار کنم؟
Let’s Encrypt گواهیها را برای ۹۰ روز صادر میکند. برای تمدید دستی، این دستور را اجرا کنید:
sudo certbot renew
برای تمدید خودکار، cronjob
یا systemd timer
تنظیم کنید.
مطالعه بیشتر: نحوه حذف ایمیج (image)، کانتینر (container) و والیوم (volume) در داکر Docker در سرور مجازی

جمع بندی
در این راهنما، مراحل نصب و راه اندازی Odooبا Docker بر روی سرور Ubuntu یاد گرفتید. شما با استفاده از Docker و Docker Compose، محیط اجرایی Odoo در پایگاه داده PostgreSQL پیکربندی کردید تا بتوانید به راحتی آن را مدیریت و نگهداری کنید. بعد از آن با استفاده از راه اندازی Nginx به عنوان یک پروکسی، عملکرد و سرعت سایت را بالا بردید. برای افزایش امنیت بیشتر، از Certbot استفاده کردید. در انتها، تنظیمات اولیه Odoo را انجام دادید تا بتوانید از این سیستم برای مدیریت کسب و کار خود استفاده کنید. اکنون میتوانید یک پلتفرم کامل و مطمئنی را در اختیار خود داشته باشید که با توجه به نیاز های مختلف شما سفارشی شود.