Введение
Odoo — это система планирования ресурсов предприятия (ERP) с открытым исходным кодом, написанная на Python. Она поддерживает ряд плагинов для различных бизнес-задач, таких как бухгалтерский учёт, расчёт заработной платы, управление запасами и многое другое. В этом руководстве вы установите Odoo и базу данных PostgreSQL с помощью Docker Compose, а затем установите Nginx в качестве обратного прокси-сервера для вашего сайта Odoo. Наконец, вы включите безопасные HTTPS-соединения, загрузив и настроив TLS-сертификат от центра сертификации Let's Encrypt с помощью Certbot.
Предпосылки
- Сервер Ubuntu с 2 или более процессорами, пользователь без прав root с привилегиями sudo и включенный брандмауэр.
- Докер установлен
- Наконец, для включения TLS вам потребуется доменное имя, указывающее на публичный IP-адрес вашего сервера. Например, example.com или odoo.example.com.
Как только все предварительные условия будут готовы, перейдите к шагу 1, где вы установите пакет docker-compose.
Шаг 1 — Установка Docker Compose
Чтобы установить инструмент командной строки docker-compose, обновите список пакетов, затем установите пакет с помощью уместно Установить:
sudo apt update
sudo apt install docker-composeПроверить установку пакета можно, выполнив следующую команду:
docker-compose –versionВы должны получить следующий вывод:
Output
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.
Шаг 2 — Запуск Odoo и PostgreSQL с помощью Docker Compose
Чтобы приступить к созданию контейнеров Odoo и PostgreSQL, создайте каталог odoo в своём домашнем каталоге для хранения файлов, которые вы создадите в этом руководстве. Этот каталог будет использоваться для хранения всех файлов, необходимых для работы Odoo.
Выполните следующие команды, чтобы создать каталог, а затем компакт-диск Запустите его:
mkdir ~/odoo
cd ~/odooТеперь создайте новый пустой файл YAML с именем docker-compose.yml с использованием нано Или откройте ваш любимый редактор:
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:В файле определены две службы. Первая называется odoo и запускает приложение Odoo. Вторая называется postgres и представляет собой контейнер базы данных PostgreSQL. Обе службы указывают на тома, которые они используют для хранения данных вне запущенных экземпляров контейнера. Наконец, служба odoo предоставляет порт 8069 на вашем сервере контейнеру Odoo, который работает на том же порту 8069.
Закончив редактирование файла, сохраните его и выйдите. Если вы используете nano, нажмите CTRL+O, затем RETURN для сохранения, а затем CTRL+X для выхода.
Контейнеры Odoo и PostgreSQL используют переменные окружения для своей конфигурации. Файл docker-compose.yml определяет директиву env_file для обеих служб. Эта директива включает в себя справочный файл, содержащий переменные, необходимые для запуска каждой службы.
Этот подход обычно рекомендуется вместо добавления переменных окружения непосредственно в файл docker-compose.yml, поскольку рекомендуется хранить пароли вне файла docker-compose.yml. Этот подход особенно полезен, если вы коммитите файлы в репозиторий Git или другую систему управления версиями.
Откройте новый env-файл с помощью nano:
nano .envДобавьте следующие строки в файл и замените выделенные значения на POSTGRES_USER и POSTGRES_PASSWORD Замените ваш выбор:
# postgresql environment variables
POSTGRES_DB=postgres
POSTGRES_PASSWORD=a_strong_password_for_user
POSTGRES_USER=odoo
PGDATA=/var/lib/postgresql/data/pgdata
# odoo environment variables
HOST=postgres
USER=odoo
PASSWORD=a_strong_password_for_userЧтобы сгенерировать пароль для Odoo и PostgreSQL, используйте команду openssl, которая должна быть доступна в большинстве систем Linux. Выполните следующую команду на сервере, чтобы сгенерировать случайный набор байтов и вывести его версию в кодировке base64, которую можно использовать в качестве пароля:
openssl rand -base64 30Используйте полученную строку вместо паролей защиты. сильный_пароль_для_пользователя В файле .env Завершив редактирование файла .env, сохраните его и выйдите из текстового редактора.
Теперь вы готовы создавать контейнеры. оду и постгрес с командой docker-compose Начать:
docker-compose up -dПодкоманда up указывает docker-compose запустить контейнеры и связанные с ними тома и сети, определённые в файле docker-compose.yml. Флаг -d (что означает “daemonize”) указывает docker-compose запускать контейнеры в фоновом режиме, чтобы ваша команда терминала не перехватила управление. docker-compose выводит краткий вывод по мере загрузки необходимых образов Docker и последующего запуска контейнеров:
Output
Creating network "odoo_default" with the default driver
Creating volume "odoo_odoo_data" with default driver
Creating volume "odoo_postgres_data" with default driver
Pulling odoo (odoo:14.0)...
15.0: Pulling from library/odoo
. . .После этого Odoo должен запуститься. Вы можете проверить работу веб-сервера, загрузив домашнюю страницу с помощью команды curl. 127.0.0.1:8069 Прогоны:
curl --head http://localhost:8069Это выведет только HTTP-заголовки из ответа:
Output
HTTP/1.0 303 SEE OTHER
Content-Type: text/html; charset=utf-8
Content-Length: 215
Location: http://localhost:8069/web
Set-Cookie: session_id=142fa5c02742d0f5f16c73bc14ec8144b8230f8a; Expires=Mon, 06-Jun-2022 20:45:34 GMT; Max-Age=7776000; HttpOnly; Path=/
Server: Werkzeug/0.14.1 Python/3.7.3
Date: Tue, 08 Mar 2022 20:45:34 GMTОтвечать 303 СМОТРЕТЬ ДРУГИЕ Это означает, что сервер Оду Он запущен и работает, но для завершения установки вам потребуется перейти на другую страницу. Заголовок http://localhost:8069/web Указанное место указывает, где в вашем браузере следует открыть страницу установщика Odoo.
Затем мы настроим Nginx для проксирования публичного трафика в контейнер Odoo.
Шаг 3 — Установка и настройка Nginx
Размещение веб-сервера, например Nginx, перед сервером Odoo может повысить производительность за счёт разгрузки кэширования, сжатия и обработки статических файлов для более эффективного процесса. Мы установим Nginx и настроим его для обратного проксирования запросов к Odoo, то есть он будет отвечать за отправку запросов ваших пользователей в Odoo и обратно. Использование процесса Nginx, не являющегося контейнером, упростит добавление TLS-сертификатов Let's Encrypt на следующем этапе.
Сначала обновите список пакетов, затем установите Nginx с помощью уместно Установить:
sudo apt update
sudo apt install nginxИспользуя профиль приложения Nginx Full UFW, разрешите публичный трафик на порты 80 и 443 (HTTP и HTTPS):
sudo ufw allow "Nginx Full"Output
Rule added
Rule added (v6)Затем откройте новый файл конфигурации Nginx в каталоге /etc/nginx/sites-available. Мы назовём его 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, так как на следующем этапе мы позволим Certbot настроить TLS. Оставшаяся часть файла конфигурации настраивает местоположения регистраторов, а затем отправляет весь трафик, а также некоторые важные заголовки прокси-сервера, на http://localhost:8069 — контейнер Odoo, который мы запустили на предыдущем этапе.
Сохраните и закройте файл, затем включите конфигурацию, связав ее с /etc/nginx/sites-enabled/:
sudo ln -s /etc/nginx/sites-available/odoo.conf /etc/nginx/sites-enabled/Используйте nginx -t для проверки синтаксиса файла конфигурации:
sudo nginx -tOutput
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulИ наконец, перезагрузите службу nginx с новой конфигурацией:
sudo systemctl reload nginx.serviceТеперь ваш сайт Odoo должен быть доступен по обычному протоколу HTTP. Загрузите http://your_domain_here (возможно, вам придётся нажать на предупреждение системы безопасности), и он будет выглядеть так:
Теперь, когда ваш сайт настроен по протоколу HTTP, пора защитить соединение с помощью сертификатов Certbot и Let's Encrypt. Это необходимо сделать перед началом настройки веб-версии Odoo.
Шаг 4 — Установка Certbot и настройка сертификатов TLS
Благодаря Certbot и бесплатной лицензии Let's Encrypt добавление шифрования TLS в ваше приложение Odoo выполняется всего двумя командами.
Сначала установите Certbot и его плагин Nginx:
sudo apt install certbot python3-certbot-nginxЗатем запустите certbot в режиме –nginx и укажите тот же домен, который вы использовали в директиве конфигурации Nginx server_name:
sudo certbot --nginx -d your_domain_hereВам будет предложено принять условия обслуживания Let's Encrypt и ввести адрес электронной почты. После этого вам будет предложено перенаправить весь HTTP-трафик на HTTPS. Это зависит от вас, но обычно рекомендуется и безопасно.
После этого Let's Encrypt одобрит ваш запрос, а Certbot загрузит ваш сертификат:
Output
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-leCertbot автоматически загрузит Nginx с новой конфигурацией и сертификатами. Перезагрузите сайт в браузере, и он должен автоматически переключить вас на HTTPS, если вы выберете вариант перенаправления.
Теперь ваш сайт защищен, и вы можете спокойно продолжить процесс настройки через Интернет.
Шаг 5 — Настройка Odoo
Вернитесь в браузер и перезагрузите страницу. Теперь вы сможете открыть страницу настройки базы данных Odoo по защищённому https://-соединению. Теперь вы можете безопасно ввести имя пользователя и пароль для завершения установки.
Информация, которую вы вводите на этой странице, сообщает приложению Odoo, как создать свою базу данных PostgreSQL, а также сведения об административном пользователе по умолчанию.
Заполните следующие поля:
- Имя базы данных: odoo
- Электронная почта: Ваш адрес электронной почты
- Пароль: надежный и уникальный пароль для вашего имени администратора.
- Демонстрационные данные: Если вы устанавливаете Odoo впервые, убедитесь, что эта опция отмечена.
Для остальных полей подойдут значения по умолчанию. Обязательно запишите выбранные вами адрес электронной почты и пароль, так как они понадобятся вам для входа в Odoo в будущем.
Теперь нажмите кнопку «Создать базу данных» в левом нижнем углу страницы. Создание таблиц базы данных Odoo может занять одну-две минуты. После завершения процесса вы будете перенаправлены на страницу администрирования приложений Odoo.
Здесь вы можете выбрать модули Odoo, которые хотите установить и использовать для своей ERP-системы. Чтобы протестировать приложение, нажмите кнопку «Установить» на плитке «Продажи». Odoo установит модуль и перенаправит вас на персональную страницу приложения «Обсуждение».
Нажмите на значок разделенного квадрата в левом верхнем углу страницы, а затем выберите ссылку «Продажи» в раскрывающемся списке параметров.
Вы окажетесь на странице, которая поможет вам настроить данные, цены, заказы и список образцов продаж, с которыми вы можете поэкспериментировать.
Результат
В этом руководстве вы развернули приложение Odoo ERP и базу данных PostgreSQL с помощью Docker Compose, затем настроили обратный прокси-сервер Nginx и защитили его с помощью TLS-сертификатов Let's Encrypt.












