«غیرفعال کردن مدیر دیتابیس روی هر سیستمِ رو به اینترنت به‌شدت توصیه می‌شود.» این هشدار مستندات Odoo از خود نصب odoo مهم‌تر است. نصب روی Ubuntu 24.04 با مخزن رسمی چهار دستور است؛ دردسر از تصمیم‌های گرفته‌نشده می‌آید.

  • ✅ نسخه: Community یا Enterprise
  • ✅ شماره نسخه: Odoo 20 روی Ubuntu 24.04
  • ✅ ورکرها: به اندازه هسته‌ها و کاربران
  • ✅ پورت websocket: مسیر /websocket در Nginx به 8072
  • ✅ مدیر دیتابیس: list_db خاموش
  • ✅ رمز اصلی: مقدار تصادفی برای admin_passwd
  • ✅ بکاپ: دیتابیس همراه filestore

💡 جای Odoo کنار حسابداری فعلی

نرم‌افزار Odoo فروش و انبار را در یک ERP تحت وب روی دیتابیس PostgreSQL جمع می‌کند.
✅ حسابداری روی سرور مجازی تکلیف شعبه‌هایی را روشن می‌کند که روی نرم‌افزار حسابداری ویندوزی و یک دیتابیس مشترک می‌مانند.

هر پاسخ مدیر یک خط odoo.conf می‌شود؛ هفت پاسخ که بدهید، فایل هم نوشته شده است.

نصب odoo، مسیر درخواست مرورگر از Nginx به پورت‌های 8069 و 8072 و از آنجا به PostgreSQL

کدام نسخه و کدام روش نصب برای کسب‌وکار شما؟

برای کار روزانه یک شرکت، گزینه معقول Odoo 20 با بسته رسمی deb است. شاخه latest مستندات Odoo در آبان ۱۴۰۵ به 20.0 می‌رسد و راهنمای نصب odoo با بسته deb فقط Ubuntu 24.04 را نام می‌برد.

حسابداری کامل در Community هست؟

خیر؛ دفتر کل و تطبیق بانکی در Enterprise است.

در جدول مقایسه نسخه‌های Odoo، اپ Accounting فقط برای Enterprise تیک دارد و Community با Invoicing، Sales و Inventory می‌آید. Community زیر مجوز LGPLv3 است و مجوز Enterprise اجرا را به اشتراک معتبر گره می‌زند. بسته Enterprise از صفحه دانلود Odoo می‌آید.

حسابداری‌ای که فعلاً روی SQL Server می‌ماند، سرورش را با معیارهای سرور حسابداری و ERP انتخاب می‌کند.

بسته رسمی یا اجرای مستقیم از سورس؟

برای یک شرکت، بسته رسمی.

طبق صفحه نصب‌کننده‌های بسته‌ای Odoo، بسته deb نسخه 20 فعلاً Ubuntu Noble (24.04 LTS) را پشتیبانی می‌کند و سرویس و کاربر PostgreSQL را خودش می‌سازد. اجرا از سورس، به گفته صفحه Source install، به کار توسعه‌دهنده ماژول می‌آید. سرویس بسته‌ای پیکربندی را از /etc/odoo/odoo.conf می‌خواند.

فاکتور PDF با سربرگ و پانویس می‌خواهید؟

معمولاً بله، و گره همین‌جاست.

مستندات Odoo برای سربرگ، wkhtmltopdf 0.12.6 را با نصب دستی می‌خواهد. ویکی Odoo بیلد 0.12.6.1-3 را پیشنهاد می‌دهد و بسته مخزن Ubuntu را بی‌سربرگ می‌داند؛ آن بیلد برای jammy هست و برای noble نیست. نصب بیلد jammy روی 24.04 جایی مستند نشده؛ پس پیش از اولین فاکتور، PDF آزمایشی بگیرید.

پایگاه داده PostgreSQL و کاربر سرویس Odoo

پایگاه داده PostgreSQL و کاربر سرویس Odoo

بسته deb انتظار دارد PostgreSQL روی همان سرور باشد و Ubuntu 24.04 نسخه 16 را دارد که حداقل لازم Odoo 20 است. هنگام نصب odoo با این بسته، کاربر سیستمی odoo و نقش PostgreSQL هم‌نامش با اجازه ساخت دیتابیس ساخته می‌شود. دستورها از مستندات Odoo 20:

sudo apt install postgresql -y
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

اگر سرور به nightly.odoo.com راه نداشته باشد، apt-get update خطا می‌دهد؛ پیش از شروع، پاسخ curl -I https://nightly.odoo.com/20.0/nightly/deb/ را ببینید.

هر ماژول Odoo مغازه خودش را می‌گرداند، اما کلید برق ساختمان، یعنی odoo.conf و رمز اصلی، در دفتر مدیریت پاساژ می‌ماند.

کاربر دیتابیس چه اختیاری لازم دارد؟

اجازه ساخت دیتابیس، ولی هرگز superuser.

طبق صفحه پیکربندی سیستم Odoo، مدیر دیتابیس نقشی با createdb می‌خواهد که superuser نباشد؛ نقش بدون createdb و دیتابیسی با مالک دیگر، آن صفحه را بی‌اثر می‌کند. فایل بسته از قبل db_user = odoo را دارد.

پورت‌های 8069 و 8072 از اینترنت بسته‌اند؟

خیر؛ Odoo به‌طور پیش‌فرض روی همه نشانی‌ها گوش می‌دهد.

مرجع خط فرمان پیش‌فرض http_interface را 0.0.0.0 می‌نویسد و ورکر websocket هم همین نشانی را می‌گیرد؛ پس از لحظه نصب، 8069 و 8072 و صفحه مدیر دیتابیس با IP عمومی باز است. Odoo را به 127.0.0.1 ببندید تا فقط Nginx به آن برسد و در فایروال، مثلاً ufw، فقط SSH، 80 و 443 را باز بگذارید. بررسی از خود سرور:

sudo systemctl status odoo
curl -sI http://127.0.0.1:8069
sudo tail -n 50 /var/log/odoo/odoo-server.log

رمز اصلی و اولین دیتابیس را چطور بسازیم؟

از خط فرمان، پیش از باز شدن سرور به روی کاربران.

به هشدار مستندات، نصب on-premise تا تنظیم رمز اصلی برای همه باز است. مقدار تصادفی بسازید و رشته داخل b’…’ را در admin_passwd بگذارید؛ مجوز 0640 فایل را تغییر ندهید. فرمان db init اولین دیتابیس و کاربر admin را با رمز دلخواه شما می‌سازد:

python3 -c 'import base64, os; print(base64.b64encode(os.urandom(24)))'
sudo nano /etc/odoo/odoo.conf
sudo -u odoo odoo db -c /etc/odoo/odoo.conf init erp --password '<admin-password>'
sudo systemctl restart odoo

بخش [options] فایل در این مرحله:

admin_passwd = <random>
http_interface = 127.0.0.1
db_name = erp
dbfilter = ^erp$
list_db = False

⚠️ مدیر دیتابیس رو به اینترنت

مسیر /web/database/manager با رمز اصلی دیتابیس می‌سازد و حذف می‌کند. مستندات آن را ابزار توسعه و دمو می‌داند و پس از تنظیم db_name و dbfilter، بستنش با list_db = False را می‌خواهد. اگر باید برای چند دستگاه باز بماند، مسیرهای /web/database را در Nginx برای بقیه ببندید.

ورکرها، پورت websocket و Nginx را با هم تنظیم کنید

ورکرها، پورت websocket و Nginx را با هم تنظیم کنید

سروری که بعد از نصب odoo بالا می‌آید چندنخی است و مستندات آن را برای توسعه و نمایش می‌داند. با workers غیرصفر، ورکری جدا برای اعلان‌های زنده روی gevent_port (پیش‌فرض 8072) بالا می‌آید که کاربر فقط از راه Nginx به آن می‌رسد.

چند ورکر لازم داریم؟

از هسته‌ها و کاربران هم‌زمان حساب کنید.

قاعده مستندات: سقف نظری ورکر (تعداد CPU × 2) + 1 است و هر ورکر حدود ۶ کاربر هم‌زمان را جواب می‌دهد. در مثال مستندات، سرور ۴ هسته‌ای با ۶۰ کاربر به ۸ ورکر، یک cron و حدود ۳ گیگابایت RAM می‌رسد؛ با همان منطق، سرور ۲ هسته‌ای ۴ ورکر و یک cron می‌گیرد. رفتن از ۴ ورکر به ۸ روی سرور مجازی وب‌داده تیکتی نمی‌خواهد؛ ارتقای منابع را از خود پنل انتخاب می‌کنید.

وب‌سرور Nginx را چطور جلوی Odoo بگذاریم؟

اول گواهی، بعد پیکربندی.

مستندات HTTPS را لازم می‌داند، چون Odoo اطلاعات ورود را بی‌رمزنگاری می‌فرستد. گواهی Let’s Encrypt را certbot در /etc/letsencrypt/live/ می‌گذارد:

sudo apt install nginx certbot python3-certbot-nginx
sudo certbot certonly --nginx -d odoo.example.com

سپس نمونه کوتاه‌شده مستندات را در /etc/nginx/sites-enabled/odoo.conf بنویسید:

upstream odoo { server 127.0.0.1:8069; }
upstream odoochat { server 127.0.0.1:8072; }
map $http_upgrade $connection_upgrade {
  default upgrade;
  ''      close;
}
server {
  listen 80;
  server_name odoo.example.com;
  rewrite ^(.*) https://$host$1 permanent;
}
server {
  listen 443 ssl;
  server_name odoo.example.com;
  proxy_read_timeout 720s;
  ssl_certificate /etc/letsencrypt/live/odoo.example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/odoo.example.com/privkey.pem;
  location /websocket {
    proxy_pass http://odoochat;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $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;
    proxy_cookie_flags session_id samesite=lax secure;
  }
  location / {
    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;
    proxy_redirect off;
    proxy_pass http://odoo;
    proxy_cookie_flags session_id samesite=lax secure;
  }
}

کلید proxy_mode سرآیندهای X-Forwarded-* را معتبر می‌کند و فقط پشت Nginx روشن می‌شود. این سه خط را، با ورکرهای سرور ۲ هسته‌ای، به [options] بیفزایید، سرویس‌ها را دوباره بخوانید و تمدید گواهی را آزمایشی اجرا کنید:

workers = 4
max_cron_threads = 1
proxy_mode = True
sudo nginx -t && sudo systemctl reload nginx
sudo systemctl restart odoo
sudo certbot renew --dry-run

بکاپ بدون filestore نیمه‌کاره است

پیوست‌ها، مانند PDF فاکتور و تصویر کالا، بیرون از PostgreSQL در پوشه filestore می‌مانند. در برنامه بکاپ هر نصب odoo این پوشه هم‌وزن دیتابیس است و pg_dump تنها آن را جا می‌اندازد. مستندات بکاپ روزانه هر دو را روی سرور بایگانی جدا می‌خواهد.

🗂️ پوشه filestore کجاست

مسیر data-dir/filestore است. بدون data_dir، Odoo معمولاً ~/.local/share/Odoo را برمی‌دارد و خانه کاربر odoo مسیر /var/lib/odoo است. با sudo ls بررسی کنید و مسیر را صریح بنویسید: data_dir = /var/lib/odoo/.local/share/Odoo

بکاپ کامل با چه فرمانی؟

با فرمان db خود Odoo، که filestore را هم برمی‌دارد.

در مرجع خط فرمان Odoo، dump به‌طور پیش‌فرض zip همراه filestore می‌سازد، مگر با –no-filestore. این فایل cron هر شب با کاربر odoo یک نسخه می‌گیرد:

sudo -u odoo mkdir -p /var/lib/odoo/backups
echo '30 2 * * * odoo /usr/bin/odoo db -c /etc/odoo/odoo.conf dump erp /var/lib/odoo/backups/erp-$(date +\%F).zip' | sudo tee /etc/cron.d/odoo-backup

نسخه روی همان سرور هنوز بکاپ نیست. سرور بایگانی خودش فایل‌ها را بکشد، مثلاً با rsync، تا سرور Odoo به بایگانی راه نداشته باشد؛ نسخه‌های قدیمی را هم پاک کنید.

بازگردانی را کجا تمرین کنیم؟

روی ماشینی جدا و دیتابیسی خنثی‌شده.

مستندات نسخه آزمایشی را روی ماشینی جدا از تولید می‌خواهد. آنجا گزینه -n در load دیتابیس را خنثی می‌کند تا کارهای زمان‌بندی‌شده و ایمیل خروجی خاموش بمانند.

sudo -u odoo odoo db -c /etc/odoo/odoo.conf load -n erp_test /var/lib/odoo/backups/erp-2026-11-07.zip
پرسش مدیرکلید تنظیممحل
کدام نسخه؟بسته جدا؛ در سورس addons_pathodoo.conf
پورت‌ها بیرون بسته؟مقدار http_interface = 127.0.0.1فایل odoo.conf و فایروال
چند ورکر؟کلید workers و max_cron_threadsodoo.conf
گفت‌وگوی زنده؟پورت gevent_port = 8072 و location /websocketفایل odoo.conf و Nginx
پشت Nginx؟مقدار proxy_mode = Trueodoo.conf
مدیر دیتابیس؟کلید list_db با dbfilterodoo.conf
رمز اصلی؟کلید admin_passwdodoo.conf
بکاپ؟کلید data_dirodoo.conf

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

نسخه Community رایگان است؟

هزینه مجوز ندارد و زیر LGPLv3 است؛ هزینه سرور و نیروی فنی می‌ماند. اپلیکیشن موبایل و Accounting کامل فقط در Enterprise است.

مستندات نصب‌کننده ویندوز را فقط برای آزمایش یا استفاده تک‌کاربره می‌داند و حالت workers روی ویندوز نیست.

عدد ثابتی نیست. برآورد مستندات کد خوش‌طراحی را فرض می‌کند؛ بار CPU را با مانیتورینگ بسنجید.

بسته deb نسخه 20 فقط Ubuntu 24.04 را پشتیبانی می‌کند که PostgreSQL 16 و Python 3.12 را در مخزن دارد.

مقدار admin_passwd را با رمزی موقت عوض کنید، خط را با «;» غیرفعال نکنید و سرویس را دوباره راه بیندازید. سپس در /web/database/manager با Set Master Password رمز تازه بدهید؛ list_db موقتاً باید روشن باشد.

با workers صفر، ورکر websocket روی 8072 بالا نمی‌آید. اگر workers درست است، location /websocket باید به 8072 برود و سرآیندهای Upgrade و Connection را بفرستد.

مخزن به شاخه 20.0 اشاره می‌کند، پس apt-get upgrade فقط بیلدهای همین نسخه را می‌آورد. پیش از هر upgrade یک dump کامل بگیرید.

جمع‌بندی؛ آنچه پیش از نصب odoo باید معلوم باشد Community برای فروش و انبار کافی است و دفتر کل و تطبیق بانکی Enterprise می‌خواهد. Odoo از لحظه نصب روی همه نشانی‌ها گوش می‌دهد، پس http_interface و فایروال اولین کارند. سه تصمیم به هم بسته‌اند: workers غیرصفر ورکر websocket را بالا می‌آورد، Nginx مسیر /websocket را به آن می‌رساند و proxy_mode دامنه واقعی را به Odoo می‌دهد. رمز اصلی پیش از اولین دیتابیس تصادفی می‌شود و list_db بعد از آن خاموش می‌ماند. بکاپ وقتی کامل است که filestore را داشته باشد و روی سروری دیگر بماند.

🚀 وقتی نرم‌افزار حسابداری فعلی ماندنی است

اگر کوچ به ERP به سال بعد افتاده، وصل کردن شعبه‌ها به یک دیتابیس حسابداری قدم کوچک‌تری است.

اولین ماژولی که روی Odoo تازه‌تان روشن می‌کنید کدام است، Invoicing یا Inventory؟

منابع رسمی این راهنما

وب داده
وب داده

جدید ترین مطالب آموزشی و کاربردی را در اینجا بخوانید !
ما با بهره‌گیری از دانش روز و تجربه متخصصان حوزه فناوری، مجموعه‌ای از آموزش‌های کاربردی و مقالات تخصصی را گردآوری کرده‌ایم که هر یک، پاسخی دقیق به پرسش‌های شماست. ؛ از مفاهیم پایه تا پیچیده‌ترین تکنیک‌های حرفه‌ای. اینجا، دانش با زبانی ساده اما عمیق در اختیار شما قرار می‌گیرد.

مقاله‌ها: 281
پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *