Установка и настройка Odoo 13 на CentOS 8 с Nginx

Важно: перед началом убедитесь, что у вас есть root-доступ к серверу и DNS‑запись для example.com указывает на IP сервера.
О чём эта инструкция
Цель — установка рабочего экземпляра Odoo 13 на CentOS 8 с обратным прокси Nginx. Рассматриваются шаги от подготовки системы до доступа через веб-интерфейс. Включены примеры конфигураций, рекомендации по безопасности и проверки работоспособности.
Ключевые варианты использования: самостоятельная инсталляция для тестовой среды, развёртывание для небольшого бизнеса, базовая подготовка для последующей кастомизации и интеграций.
Краткие определения
- Odoo — модульная ERP-платформа с CRM, продажами, складом, бухгалтерией и пр.
- PostgreSQL — реляционная СУБД, используемая Odoo для хранения данных.
- wkhtmltopdf — утилита для генерации PDF (печать отчётов Odoo).
- Reverse proxy — обратный прокси (здесь Nginx), который принимает внешние запросы и передаёт их приложению.
Требования
- Сервер с CentOS 8, минимум 2 ГБ ОЗУ (рекомендуется 4+ ГБ для продуктивной среды).
- Домен example.com, указывающий на IP сервера.
- Доступ root или пользователь с sudo.
Быстрый план действий
- Обновить систему и установить зависимости.
- Создать системного пользователя odoo.
- Установить и настроить PostgreSQL, создать роль odoo.
- Установить wkhtmltopdf для печати PDF.
- Склонировать Odoo 13, создать виртуальное окружение и установить Python-зависимости.
- Настроить конфигурационный файл и systemd-сервис.
- Установить Nginx и настроить обратный прокси.
- Настроить firewall и SELinux.
- Опционально: настроить HTTPS (Let’s Encrypt).
Факты и ключевые числа
- Версия Odoo: 13.0 (в данном руководстве).
- Порт по умолчанию: 8069.
- Рекомендуемая ОЗУ: 2–4+ ГБ для теста/малого бизнеса.
- Сообщество модулей: сотни/тысячи (в зависимости от репозитория).
Шаг 1 — Обновление системы и установка EPEL
Обновите систему и установите репозиторий EPEL:
dnf update
dnf install epel-releaseУстановите необходимые инструменты и библиотеки:
dnf install python36 python36-devel git gcc wget nodejs libxslt-devel bzip2-devel openldap-devel libjpeg-devel freetype-develПримечание: если в вашей среде нужны другие версии Python или дополнительные библиотеки, скорректируйте пакетный набор.
Шаг 2 — Создание пользователя Odoo
Создайте системного пользователя с домашним каталогом /opt/odoo:
useradd -m -U -r -d /opt/odoo -s /bin/bash odooШаг 3 — Установка и настройка PostgreSQL
Установите PostgreSQL и инициализируйте базу:
dnf install postgresql postgresql-server postgresql-contrib
/usr/bin/postgresql-setup initdb
systemctl start postgresql
systemctl enable postgresql
systemctl status postgresqlСоздайте роль PostgreSQL для пользователя odoo:
su - postgres -c "createuser -s odoo"Проверка: служба должна быть active (running). Если вы используете нестандартную версию PostgreSQL, уточните команды и имена сервисов.
Шаг 4 — Установка wkhtmltopdf
Odoo печатает отчёты через wkhtmltopdf. Установите совместимую сборку:
wget https://downloads.wkhtmltopdf.org/0.12/0.12.5/wkhtmltox-0.12.5-1.centos7.x86_64.rpm
dnf localinstall wkhtmltox-0.12.5-1.centos7.x86_64.rpmПроверьте, что утилита доступна: wkhtmltopdf –version
Совет: для корректной работы PDF-рендеринга используйте рекомендуемую версию, совместимую с Odoo 13.
Шаг 5 — Скачивание Odoo 13 и установка зависимостей Python
Переключитесь на пользователя odoo и клонируйте ветку 13.0:
su - odoo
git clone https://www.github.com/odoo/odoo --depth 1 --branch 13.0 /opt/odoo/odoo13Создайте виртуальное окружение и установите зависимости:
cd /opt/odoo
python3 -m venv odoo13-venv
source odoo13-venv/bin/activate
pip3 install -r odoo13/requirements.txt
deactivate
exitЕсли pip выдаёт ошибки при сборке бинарных зависимостей, установите требуемые -devel пакеты и повторите.
Шаг 6 — Директории и права
Создайте директории для кастомных модулей и логов, смените владельца на odoo:
mkdir /opt/odoo/odoo13-custom-addons
mkdir /var/log/odoo13
touch /var/log/odoo13/odoo.log
chown -R odoo:odoo /opt/odoo/odoo13-custom-addons
chown -R odoo:odoo /var/log/odoo13/Шаг 7 — Конфигурационный файл Odoo
Создайте /etc/odoo.conf и добавьте конфигурацию (измените admin_passwd на надёжный пароль):
[options]
admin_passwd = admin@123
db_host = False
db_port = False
db_user = odoo
db_password = False
xmlrpc_port = 8069
logfile = /var/log/odoo13/odoo.log
logrotate = True
addons_path = /opt/odoo/odoo13/addons,/opt/odoo/odoo13-custom-addonsКлюч: admin_passwd — мастер‑пароль для операций с базами данных. Обязательно замените на сложную строку.
Шаг 8 — Systemd‑сервис для Odoo
Создайте файл /etc/systemd/system/odoo13.service с содержимым:
[Unit]
Description=Odoo13
[Service]
Type=simple
SyslogIdentifier=odoo13
PermissionsStartOnly=true
User=odoo
Group=odoo
ExecStart=/opt/odoo/odoo13-venv/bin/python3 /opt/odoo/odoo13/odoo-bin -c /etc/odoo.conf
StandardOutput=journal+console
[Install]
WantedBy=multi-user.targetПерезагрузите демон systemd и запустите сервис:
systemctl daemon-reload
systemctl start odoo13
systemctl enable odoo13
systemctl status odoo13Проверка порта 8069:
netstat -plntu | grep 8069Если сервис не запускается, смотрите журналы через journalctl -u odoo13 -e и /var/log/odoo13/odoo.log.
Шаг 9 — Установка и настройка Nginx как обратного прокси
Установите Nginx:
dnf install nginxСоздайте виртуальный хост /etc/nginx/conf.d/odoo13.conf с содержимым:
upstream odoo {
server 127.0.0.1:8069;
}
server {
listen 80;
server_name example.com;
access_log /var/log/nginx/odoo13.access.log;
error_log /var/log/nginx/odoo13.error.log;
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_redirect off;
proxy_pass http://odoo;
}
location ~* /web/static/ {
proxy_cache_valid 200 90m;
proxy_buffering on;
expires 864000;
proxy_pass http://odoo;
}
gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
gzip on;
}Запустите и включите Nginx:
systemctl start nginx
systemctl enable nginx
systemctl status nginxПроверьте корректность конфигурации через nginx -t.
Шаг 10 — Настройка брандмауэра и SELinux
Разрешите HTTP через firewalld и перезагрузите правила:
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reloadРазрешите подключение HTTP из процессов под SELinux:
setsebool -P httpd_can_network_connect onЕсли SELinux строго ограничивает доступ к файлам или портам, смотрите audit.log и используйте audit2allow для создания правил.
Шаг 11 — Доступ к веб-интерфейсу Odoo
Откройте браузер и перейдите по адресу http://example.com

Заполните мастер‑пароль, имя базы, email и пароль администратора, выберите страну и нажмите Create database. После создания вы попадёте на страницу администратора Odoo:

Рекомендации по безопасности и производительности
- Обновите admin_passwd в /etc/odoo.conf на уникальную и сложную строку.
- Настройте бэкапы баз данных PostgreSQL (pg_dump/pg_basebackup) и файлов custom-addons.
- Перенесите лог-файлы и данные под LVM или выполняйте снимки (snapshots) для скорого восстановления.
- Для продуктива используйте 4+ ГБ ОЗУ и SSD-диск.
- Настройте систему журналирования (rsyslog или централизованный ELK/Graylog).
Настройка HTTPS (Let’s Encrypt)
Рекомендуется включить HTTPS для публичного доступа. Установите Certbot и плагин для Nginx (способ установки зависит от репозиториев):
# примерная команда, может потребоваться установка snapd или пакетов из EPEL
certbot --nginx -d example.comЕсли автоматическая интеграция не срабатывает, получите сертификат и вручную обновите конфиг nginx, добавив блок listen 443 ssl и пути к сертификатам. Не забудьте настроить автоматическое обновление certbot renew.
Резервное копирование и восстановление (рекомендации)
- База данных: регулярные дампы командой pg_dumpall или pg_dump для отдельных баз.
- Файлы: копируйте /opt/odoo, /var/lib/pgsql и /etc/odoo.conf.
- Тестируйте восстановление на отдельном сервере — только так вы убедитесь в корректности бэкапов.
Пример краткой процедуры восстановления базы:
- Остановить сервисы (odoo13, nginx).
- Восстановить файлы и конфигурацию.
- Восстановить базу через pg_restore/psql.
- Запустить сервисы, проверить логи.
Устранение неполадок — распространённые проблемы
- Odoo не запускается: смотрите journalctl -u odoo13 -e и /var/log/odoo13/odoo.log.
- Ошибки при установке зависимостей Python: установите dev‑пакеты (libjpeg-devel, zlib-devel и пр.).
- wkhtmltopdf генерирует пустые PDF: используйте рекомендованную сборку для CentOS 7/8 и проверьте наличие шрифтов.
- Nginx возвращает 502 Bad Gateway: проверьте, запущен ли odoo13 и слушает порт 8069 (netstat -plntu).
- SELinux блокирует соединение: проверьте /var/log/audit/audit.log и включите httpd_can_network_connect.
Альтернативные подходы
- Использовать встроённый обратный прокси Odoo при тестировании (не рекомендуется для продакшена).
- Разворачивать Odoo в контейнере (Docker) — удобно для изоляции и управления зависимостями.
- Использовать сторонние PaaS/образы (например, менеджеры Odoo-провайдеров) для ускорения продакшена.
Контрольный список по ролям
Системный администратор:
- Проверил обновления системы и установил зависимости.
- Настроил PostgreSQL и сделал роль odoo.
- Создал systemd-сервис, настроил SELinux и firewall.
Разработчик / интегратор:
- Склонировал ветку 13.0, настроил виртуальное окружение.
- Установил зависимости Python и добавил кастомные модули в odoo13-custom-addons.
Бизнес‑пользователь / администратор Odoo:
- Создал базу данных через веб-интерфейс, сохранил мастер‑пароль.
- Установил необходимые приложения и настроил права пользователей.
Критерии приёмки
- Сервис odoo13 активен и слушает порт 8069.
- Nginx принимает внешние запросы по HTTP/HTTPS и корректно проксирует на Odoo.
- Веб-интерфейс Odoo доступен и можно создать рабочую базу данных.
- Резервные копии базы и конфигураций настроены и протестированы.
Мини‑методология обновлений и миграций
- Создайте тестовую копию базы и файлов.
- Выполните миграцию модулей на тестовой среде и прогоните регрессионные тесты.
- Обновите production в окне обслуживания, после успешного теста.
- Иметь план отката: бэкап до миграции и шаги восстановления.
Итоги
Вы установили Odoo 13 на CentOS 8, настроили PostgreSQL, wkhtmltopdf, systemd и Nginx в роли обратного прокси. Дополнительно рассмотрены рекомендации по безопасности, бэкапам, HTTPS и устранению неполадок.
Важно: для продакшена дополнительно настройте мониторинг, автоматическое обновление сертификатов, и протестируйте резервное восстановление.
Дополнительные ресурсы: официальная документация Odoo, документация PostgreSQL и Nginx.
Похожие материалы
Исправить ошибку d3d9.dll в Windows
Отключить всплывающие объявления на Samsung
Как смотреть и чего ждать от мартовского Apple
Как сохранить маршрут Google Maps на ПК
Голосовой ввод на Chromebook — как включить