Odoo (ранее известное как OpenERP) — это самохостируемый набор из более чем 10 000 открытых Odoo — это бесплатное ERP-решение с открытым исходным кодом для различных типов бизнеса. Оно предоставляет функции управления взаимоотношениями с клиентами (CRM), конвейера продаж, управления проектами, производства, выставления счетов, бухгалтерского учета, электронной коммерции и многое другое.
Odoo — одно из комплексных ERP-решений для вашего бизнеса. По умолчанию оно включает 30 основных модулей и предоставляет более 4500 модулей сообщества, которые могут помочь в ведении различных видов бизнеса.
В этом руководстве мы установим ERP с открытым исходным кодом Odoo на сервере Ubuntu 22.04. Мы установим и настроим последнюю стабильную версию Odoo 16, настроим базу данных PostgreSQL для Odoo и, наконец, настроим Nginx в качестве обратного прокси для приложения Odoo.
Необходимые условия
Чтобы приступить к выполнению этого руководства, вам потребуется следующее:
- Сервер Ubuntu 22.04 — в этом примере используется сервер Ubuntu с именем хоста ‘odoo-server‘.
- Пользователь без прав root, но с привилегиями root/администратора через sudo — либо вы также можете использовать пользователя root.
- Доменное имя, указывающее на IP-адрес сервера — для рабочей среды вам понадобится доменное имя для установки Odoo.
Установка зависимостей
Чтобы установить Odoo, вам сначала нужно установить некоторые пакеты-зависимости в вашу систему Ubuntu. ERP-система Odoo — это веб-приложение, написанное в основном на Python, поэтому вам также понадобится установить некоторые пакеты Python.
Перед началом установки пакетов запустите следующую команду apt, чтобы обновить и освежить индекс пакетов.
sudo apt update
Затем установите пакеты, необходимые для Odoo, с помощью следующей команды apt. Эта установка будет включать последнюю версию Python 3.10, build-essentials для компиляции пакетов Python и некоторые библиотеки, необходимые для Odoo.
sudo apt install git wget python3 build-essential libzip-dev python3-dev libxslt1-dev python3-pip libldap2-dev python3-wheel libsasl2-dev python3-venv python3-setuptools node-less libjpeg-dev xfonts-75dpi xfonts-base libxrender1 libpq-dev libffi-dev fontconfig
Когда появится запрос, введите y для подтверждения и нажмите ENTER , чтобы продолжить. Установка начнется.

После установки Python и других зависимостей следующим шагом будет установка Node.js , который будет использоваться для генерации статических файлов, а также установка wkhtmltopdf для генерации отчетов в формате PDF.
Установка Node.js
Для установки Odoo необходимо убедиться, что в вашей системе установлен Node.js. Node.js используется для генерации статических файлов для веб-приложений Odoo. На этом этапе вы установите Node.js 16 из стороннего репозитория Nodesource.
Выполните следующую команду, чтобы загрузить и настроить репозиторий Nodesource для Node.js 16.
sudo curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
Эта команда загрузит и запустит скрипт установщика, после чего скрипт установщика автоматически настроит репозиторий для Node.js, добавит ключ GPG, а также автоматически обновит и освежит индекс пакетов в вашей системе.

Затем выполните следующую команду apt для установки пакета Node.js. При появлении запроса введитеt y для подтверждения и нажмите ENTER , чтобы продолжить.
sudo apt install nodejs

После установки Node.js выполните следующую команду npm, чтобы установить пакет «rtlcss».
Пакет ‘rtlcss‘ необходим для Odoo, особенно если вы используете интерфейс с направлением справа налево для определенных языков, таких как арабский и иврит.
sudo npm install -g rtlcss
Установка приложения Wkhtmltopdf
Для работы открытой ERP-системы Odoo требуется установка пакета wkhtmltopdf. Этот пакет необходим для преобразования HTML-страниц в PDF и различные форматы изображений с помощью Qt Webkit. Пакет wkhtmltopdf будет установлен вручную в систему Ubuntu с помощью пакета .deb.
Выполните следующую команду, чтобы загрузить файл .deb пакета Wkhtmltopdf.
cd /tmp wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_amd64.deb
Установите пакет Wkhtmltopdf с помощью приведенной ниже команды dpkg.
sudo dpkg -i wkhtmltox_0.12.6.1-2.jammy_amd64.deb

Если вы получили ошибку, например, о отсутствующем пакете, исправьте ее с помощью следующей команды apt.
sudo apt install -f
После установки Wkhtmltopdf вы можете проверить наличие бинарного файла пакета Wkhtmltopdf, который по умолчанию находится в каталоге ‘/usr/local/bin‘. Вы должны увидеть две программы: ‘wkhtmltopdf» и «wkhtmltoimage».
ls /usr/local/bin
Теперь выполните следующую команду, чтобы проверить переменную среды $PATH и убедитесь, что каталог ‘/usr/local/bin’ доступен в бинарном $PATH. В противном случае пакет Wkhtmltopdf не будет работать должным образом.
echo $PATH
Наконец, выполните следующую команду, чтобы убедиться, что путь к бинарному файлу пакета Wkhtmltopdf доступен. Если пакет Wkhtmltopdf доступен, вы должны увидеть в выводе полный путь к пакету Wkhtmltopdf.
which wkhtmltopdf which wkhtmltoimage

Установка сервера баз данных PostgreSQL
ERP с открытым исходным кодом Odoo поддерживает такие базы данных, как MySQL, SQLite и PostgreSQL. На этом этапе вы установите и будете использовать PostgreSQL в качестве базы данных по умолчанию для вашей установки Odoo. Вы также настроите роль PostgreSQL и внесете изменения в конфигурацию PostgreSQL.
Выполните следующую команду apt для установки сервера базы данных PostgreSQL. При появлении запроса на подтверждение введите yи нажмите ENTER.
sudo apt install postgresql

После установки PostgreSQL выполните следующую команду, чтобы проверить PostgreSQL и убедиться, что служба включена и работает.
sudo systemctl is-enabled postgresql sudo systemctl status postgresql
В следующем выводе вы можете видеть, что служба PostgreSQL включена и будет запускаться автоматически при запуске системы. А состояние PostgreSQL — «работает».

Далее вам нужно будет создать новую роль для Odoo. Выполните следующую команду, чтобы войти в систему под именем пользователя ‘postgres» и создайте новую роль с именем «odoo».
su - postgres createuser -sdP odoo
Введите пароль для новой роли «odoo» и повторите его.
Теперь войдите в оболочку PostgreSQL с помощью приведенной ниже команды psql.
psql
Выполните следующий запрос, чтобы проверить список ролей в PostgreSQL и убедиться, что роль ‘odoo‘ доступна.
\du
Теперь введите ‘\q‘, чтобы выйти из оболочки PostgreSQL. Затем введите ‘exit‘, чтобы выйти из учетной записи пользователя postgres.

Теперь, после того как вы создали роль для odoo, вам нужно настроить аутентификацию для роли ‘odoo‘.
Отредактируйте конфигурацию PostgreSQL ‘/etc/postgresql/14/main/pg_hba.conf‘ с помощью редактора nano.
sudo nano /etc/postgresql/14/main/pg_hba.conf
Добавьте в файл следующую конфигурацию. Таким образом, вы разрешите доступ к PostgreSQL для роли ‘odoo‘ с аутентификацией по паролю ‘scram-sha-256».
host all odoo 127.0.0.1/32 scram-sha-256
Сохраните файл и закройте редактор, когда закончите.
Теперь выполните следующую команду, чтобы перезапустить службу PostgreSQL и применить новые изменения.
sudo systemctl restart postgresql
Наконец, войдите в систему как пользователь «postgres» и проверьте роль «odoo», войдя в оболочку PostgreSQL с помощью команды psql, как показано ниже.
su - postgres psql -h 127.0.0.1 -U odoo -d postgres
После входа в систему проверьте с помощью следующего запроса.
\conninfo
Теперь вы должны увидеть, что подключены к PostgreSQL с использованием роли ‘odoo‘.

На этом этапе подготовка базы данных PostgreSQL для Odoo завершена. Далее вы начнете установку Odoo, загрузив исходный код и установив зависимости Python.
Загрузка Odoo 16
Для этой демонстрации вы настроите и запустите Odoo v16 с пользователем ‘odoo‘. Теперь вы создадите нового пользователя Unix ‘odoo’ и загрузите последнюю версию исходного кода Odoo 16.
Выполните следующую команду, чтобы создать нового пользователя ‘odoo‘. В этом примере домашний каталог по умолчанию для пользователя ‘odoo» — это «/opt/odoo» , а оболочкой по умолчанию является bash.
sudo adduser --system --group --home=/opt/odoo --shell=/bin/bash odoo
Теперь перейдите в рабочий каталог ‘/opt/odoo» и загрузите исходный код Odoo с помощью следующей команды git. В этом примере вы установите Odoo 16.
cd /opt/odoo git clone https://github.com/odoo/odoo.git --depth 1 --branch 16.0 --single-branch odoo-server
Теперь у вас должен появиться новый каталог «odoo-server» внутри каталога «/opt/odoo‘.
Наконец, выполните следующую команду, чтобы изменить владельца исходного кода Odoo на пользователя и группу ‘odoo‘.
sudo chown -R odoo:odoo /opt/odoo/odoo-server

После загрузки исходного кода odoo вы приступите к установке пакетов зависимостей Python для odoo.
Установка зависимостей Python для Odoo
На этом этапе вы настроите виртуальную среду Python для Odoo и установите зависимости Python с помощью команды pip3.
Перейдите в рабочий каталог ‘/opt/odoo/odoo-server‘ и создайте новую виртуальную среду Python ‘venv» с помощью следующей команды.
cd /opt/odoo/odoo-server python3 -m venv venv
Затем активируйте виртуальную среду Python ‘venv‘ с помощью следующей команды.
source venv/bin/activate
После активации виртуальной среды Python вы увидите, что ваша текущая оболочка изменилась на ‘(venv) root@hostname…’.

Теперь запустите следующую команду pip3, чтобы установить пакет Python wheel и установить зависимости Odoo для Python через файл requirements.txt.
pip3 install wheel pip3 install -r requirements.txt

После установки зависимостей Python выполните следующую команду, чтобы выйти из виртуальной среды Python ‘venv‘.
deactivate
Теперь вы загрузили исходный код Odoo и установили зависимости Python. Далее вы создадите новую конфигурацию и каталог для установки Odoo.
Создание конфигурации Odoo
После установки пакетов зависимостей для Odoo вы начнете создавать конфигурацию Odoo и настраивать Odoo в качестве службы systemd.
Создайте новый файл конфигурации ‘/etc/odoo.conf‘ с помощью редактора nano.
sudo nano /etc/odoo.conf
Добавьте в файл следующую конфигурацию. Обязательно замените ‘admin_passwd» и данные пользователя и пароля базы данных на свои данные.
[options] ; This is the password that allows database operations: admin_passwd = adminpassodoo db_host = 127.0.0.1 db_port = 5432 db_user = odoo db_password = odoopass addons_path = /opt/odoo/odoo-server/addons xmlrpc_port = 8069 logfile = /var/log/odoo/odoo-server.log log_level = debug
Сохраните файл и закройте редактор.
Теперь измените владельца файла конфигурации odoo ‘/etc/odoo.conf» на системного пользователя «odoo».
sudo chown odoo:odoo /etc/odoo.conf
Затем выполните следующую команду, чтобы создать новый каталог, который будет использоваться для хранения логов Odoo.
sudo mkdir /var/log/odoo
Затем измените владельца каталога журналов odoo ‘/var/log/odoo‘ на пользователя ‘odoo» и измените права доступа на 755.
sudo chown odoo:odoo /var/log/odoo sudo chmod 755 /var/log/odoo

Запуск Odoo в качестве службы Systemd
На данном этапе вы можете запустить Odoo вручную через командную строку. Чтобы упростить задачу, вы можете запустить Odoo в качестве службы systemd. Это позволит вам управлять Odoo с помощью команды systemctl.
Теперь вы создадите новый файл службы systemd и запустите Odoo в качестве службы systemd.
Для начала создайте новый файл службы systemd ‘/lib/systemd/system/odoo-server.service’ с помощью редактора nano.
sudo nano /lib/systemd/system/odoo-server.service
Добавьте в файл следующую конфигурацию.
[Unit] Description=Odoo 16.0 Service Requires=postgresql.service After=network.target postgresql.service [Service] Type=simple SyslogIdentifier=odoo PermissionsStartOnly=true User=odoo Group=odoo ExecStart=/opt/odoo/odoo-server/venv/bin/python3 /opt/odoo/odoo-server/odoo-bin -c /etc/odoo.conf StandardOutput=journal+console [Install] WantedBy=multi-user.target
Сохраните файл и закройте редактор, когда закончите.
Затем перезагрузите менеджер systemd, чтобы применить новый файл службы с помощью приведенной ниже команды systemctl.
sudo systemctl daemon-reload
Запустите и включите службу ‘odoo-server’ с помощью следующей команды.
sudo systemctl start odoo-server sudo systemctl enable odoo-server

Наконец, проверьте службу odoo, чтобы убедиться, что она работает.
sudo systemctl status odoo-server
Вы должны получить вывод службы ‘odoo-server‘ работает.

Запуск Odoo с обратным прокси Nginx
Рекомендуемый способ развертывания Odoo в производственной среде — использование обратного прокси. Это позволяет запускать Odoo только на localhost, а весь клиентский доступ будет обрабатываться обратным прокси.
На этом этапе вы установите и настроите веб-сервер Nginx в качестве обратного прокси для веб-приложения Odoo. Вы также обеспечите защиту установки Odoo с помощью SSL. Итак, прежде чем приступить к настройке Nginx, убедитесь, что доменное имя указывает на IP-адрес сервера и что сгенерирован SSL-сертификат Letsencrypt.
Сначала измените файл конфигурации Odoo ‘/etc/odoo.conf‘ с помощью редактора nano.
sudo nano /etc/odoo.conf
Добавьте в файл следующую конфигурацию. Эта конфигурация запустит Odoo в качестве бэкэнд-приложения, которое будет работать на 127.0.0.1.
xmlrpc_interface = 127.0.0.1 proxy_mode = True
Сохраните файл и закройте редактор, когда закончите.
Теперь запустите следующую команду, чтобы перезапустить службу ‘odoo-server‘ и применить новые изменения.
sudo systemctl restart odoo-server
Теперь проверьте службу ‘odoo-server», чтобы убедиться, что она работает.
sudo systemctl status odoo-server

Далее вам нужно установить и настроить Nginx.
Запустите следующую команду apt, чтобы установить пакет веб-сервера Nginx. Введите y при появлении запроса и нажмите ENTER , чтобы продолжить и подтвердить установку.
sudo apt install nginx

После установки Nginx создайте новый конфигурационный файл блока сервера Nginx ‘/etc/nginx/sites-available/odoo.conf’ с помощью редактора nano.
sudo nano /etc/nginx/sites-available/odoo.conf
Добавьте в файл приведенную ниже конфигурацию и обязательно замените доменное имя и путь к SSL-сертификатам на свои настройки.
#odoo server
upstream odoo {
server 127.0.0.1:8069;
}
upstream odoochat {
server 127.0.0.1:8072;
}
# http -> https
server {
listen 80;
server_name odoo.local;
rewrite ^(.*) https://$host$1 permanent;
}
server {
listen 443 ssl http2;
server_name odoo.local;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
# Add Headers for odoo proxy mode
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;
# SSL parameters
ssl_certificate /etc/letsencrypt/live/odoo.local/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/odoo.local/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
# log
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;
# Redirect longpoll requests to odoo longpolling port
location /longpolling {
proxy_pass http://odoochat;
}
# Redirect requests to odoo backend server
location / {
proxy_redirect off;
proxy_pass http://odoo;
}
# common gzip
gzip_types text/css text/scss text/plain text/xml application/xml application/json application/javascript;
gzip on;
}
Сохраните файл и закройте редактор, когда закончите.
Теперь активируйте новую конфигурацию блока сервера Nginx и проверьте конфигурацию Nginx, чтобы убедиться в правильности настроек.
sudo ln -s /etc/nginx/sites-available/odoo.conf /etc/nginx/sites-enabled/ sudo nginx -t
Если ваши настройки верны, вы увидите сообщение типа ‘тест прошел успешно — синтаксис в порядке‘.
Наконец, выполните следующую команду systemctl, чтобы перезапустить службу Nginx и применить новые изменения.
sudo systemctl restart nginx
На этом установка и настройка обратного прокси Nginx для ERP-системы Odoo завершены. Теперь вы можете получить доступ к установке через веб-браузер.

Выполните следующую команду, чтобы проверить службу Nginx и убедиться, что она работает.
sudo systemctl restart nginx
Вы должны увидеть, что служба Nginx работает.

Настройка брандмауэра UFW
Рекомендуется включить брандмауэр в вашей установке Odoo. На этом этапе вы узнаете, как настроить брандмауэр UFW.
По умолчанию на стандартном сервере Ubuntu установлен пакет ufw, поэтому вы можете сразу приступить к его настройке.
Выполните следующую команду, чтобы добавить приложение OpenSSH в брандмауэр ufw. Затем запустите и включите ufw.
sudo ufw allow "OpenSSH" sudo ufw enable
Когда появится запрос на подтверждение, введите y и нажмите ENTER, чтобы продолжить. После этого служба брандмауэра ufw будет включена и запущена.

Далее выполните следующую команду, чтобы добавить приложение ‘Nginx Full‘. Этот профиль приложения предоставляется пакетами Nginx при установке по умолчанию и откроет для вашего приложения как HTTP-, так и HTTPS-порты.
sudo ufw allow "Nginx Full"
Наконец, проверьте список включенных правил в ufw. Вы должны увидеть два приложения: ‘OpenSSH‘ и ‘Nginx Full’ включенные.
sudo ufw status

Перенос базы данных и установка Odoo 16
Откройте веб-браузер и перейдите по доменному имени вашей установки Odoo (например: https://odoo.local/).
Сначала вам нужно перенести базу данных Odoo и создать нового пользователя-администратора.
Главный пароль здесь — это ‘admin_passwd‘, который вы только что добавили в файл ‘/etc/odoo.conf‘.
Введите новое имя базы данных, которая будет создана автоматически, а также данные нового администратора и пароль для вашей установки Odoo. Кроме того, вы также можете установить флажок «Демо-данные», чтобы добавить демо-данные в вашу установку.
Нажмите «Создать базу данных», чтобы начать установку Odoo.
После установки Odoo вы будете перенаправлены на страницу входа в Odoo. Введите адрес электронной почты администратора и пароль для вашего Odoo и нажмите «Войти».
Теперь вы должны увидеть панель управления пользователя Odoo.
Заключение
Поздравляем! Вы установили ERP-систему с открытым исходным кодом Odoo на сервере Ubuntu 22.04. Вы также освоили базовую установку сервера баз данных PostgreSQL и веб-сервера Nginx, настроенного в качестве обратного прокси.
На этом этапе вы полностью обеспечили безопасность установки Odoo на вашем сервере Ubuntu. Теперь вы можете приступить к добавлению дополнительных плагинов/надстроек, подходящих для вашего бизнеса.