Odoo — это мощная open-source ERP-система, написанная на Python. Она охватывает широкий спектр бизнес-процессов: от бухгалтерии и складского учёта до CRM и управления проектами. Благодаря модульной архитектуре Odoo легко адаптируется под специфику любого бизнеса.
В этом руководстве мы установим Odoo через Docker Compose вместе с PostgreSQL, настроим Nginx в качестве reverse proxy и защитим соединение TLS-сертификатом от Let's Encrypt.
Необходимые условия
Для выполнения инструкций вам потребуется:
Сервер Ubuntu с минимум 2 CPU и следующими параметрами:
- Непривилегированный пользователь с sudo-правами
- Настроенный firewall (UFW)
- Следуйте нашему руководству по начальной настройке сервера
Установленный Docker:
- Выполните шаги 1 и 2 из руководства по установке Docker на Ubuntu
- Убедитесь, что ваш пользователь может выполнять команды docker без sudo
Доменное имя для включения HTTPS:
- Настройте A-запись, указывающую на IP-адрес вашего сервера
- Это может быть
odoo.example.comили любой другой поддомен
Если вы используете DigitalOcean, можете начать с готового образа One-Click Docker, в котором уже предустановлены Docker, Docker Compose и UFW.
Шаг 1. Установка Docker Compose
Docker Compose — инструмент для управления многоконтейнерными приложениями через единый конфигурационный файл.
Обновите список пакетов и установите Docker Compose:
sudo apt update
sudo apt install docker-compose
Проверьте установку:
docker-compose --version
Вы должны увидеть вывод вроде:
docker-compose version 1.29.2, build unknown
Альтернатива: если хотите использовать более свежую версию Docker Compose, установите её напрямую из GitHub. В этом случае команда будет docker compose (через пробел) вместо docker-compose.
Шаг 2. Запуск Odoo и PostgreSQL через Docker Compose
Создайте директорию для проекта:
mkdir ~/odoo
cd ~/odoo
Создайте файл docker-compose.yml:
nano docker-compose.yml
Добавьте следующую конфигурацию:
version: '3'
services:
odoo:
image: odoo:15.0
env_file: .env
depends_on:
- postgres
ports:
- "127.0.0.1:8069:8069"
volumes:
- odoo-dаta:/var/lib/odoo
postgres:
image: postgres:13
env_file: .env
volumes:
- postgres-dаta:/var/lib/postgresql/data/pgdata
volumes:
odoo-dаta:
postgres-dаta:
Разбор конфигурации:
odoo— сервис с приложением Odoo версии 15.0postgres— база данных PostgreSQL 13depends_on— Odoo запустится только после PostgreSQLports— порт 8069 доступен локально на хостеvolumes— данные сохраняются в именованных томахenv_file— переменные окружения загружаются из файла .env
Сохраните файл (Ctrl+O, Enter, Ctrl+X в nano).
Теперь создайте файл с переменными окружения:
nano .env
Добавьте следующие строки, заменив пароли на сгенерированные:
# PostgreSQL settings
POSTGRES_DB=postgres
POSTGRES_PASSWORD=ваш_пароль_для_postgres
POSTGRES_USER=odoo
PGDATA=/var/lib/postgresql/data/pgdata
# Odoo settings
HOST=postgres
USER=odoo
PASSWORD=ваш_пароль_для_postgres
Генерация безопасного пароля:
openssl rand -base64 30
Скопируйте сгенерированную строку и используйте её в качестве пароля в обоих местах (POSTGRES_PASSWORD и PASSWORD).
Сохраните файл.
Запустите контейнеры:
docker-compose up -d
Флаг -d запускает контейнеры в фоновом режиме. Docker Compose скачает необходимые образы и запустит сервисы:
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:15.0)...
...
Creating odoo_postgres_1 ... done
Creating odoo_odoo_1 ... done
Проверьте, что Odoo работает:
curl --head http://localhost:8069
Вы должны увидеть HTTP-заголовки с кодом 303 SEE OTHER:
HTTP/1.0 303 SEE OTHER
Content-Type: text/html; charset=utf-8
Location: http://localhost:8069/web
...
Это означает, что Odoo успешно запущен и перенаправляет на страницу установки.
Управление контейнерами:
Остановить контейнеры:
docker-compose stop
Перезапустить:
docker-compose start
Просмотр логов:
docker-compose logs -f odoo
Шаг 3. Установка и настройка Nginx
Nginx будет выступать в роли reverse proxy, обрабатывая входящие запросы и передавая их контейнеру Odoo. Это повышает производительность и безопасность.
Установите Nginx:
sudo apt install nginx
Разрешите HTTP и HTTPS трафик через файрвол:
sudo ufw allow "Nginx Full"
Создайте конфигурационный файл для Odoo:
sudo nano /etc/nginx/sites-available/odoo.conf
Добавьте следующую конфигурацию, заменив your_domain на ваш реальный домен:
server {
listen 80;
listen [::]:80;
server_name your_domain;
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;
location / {
proxy_pass http://127.0.0.1:8069;
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;
}
location /longpolling {
proxy_pass http://127.0.0.1:8072;
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;
}
client_max_body_size 100M;
}
Объяснение конфигурации:
location /— обработка всех обычных запросовlocation /longpolling— специальный эндпоинт Odoo для WebSocket-соединенийproxy_set_header— передача важных заголовков в Odooclient_max_body_size— максимальный размер загружаемых файлов
Активируйте конфигурацию:
sudo ln -s /etc/nginx/sites-available/odoo.conf /etc/nginx/sites-enabled/
Проверьте синтаксис:
sudo nginx -t
Если всё в порядке, перезагрузите Nginx:
sudo systemctl reload nginx
Теперь Odoo доступен по адресу http://your_domain. Но перед настройкой системы нужно защитить соединение HTTPS-сертификатом.
Шаг 4. Установка Certbot и настройка TLS
Certbot автоматизирует получение и обновление бесплатных SSL-сертификатов от Let's Encrypt.
Установите Certbot с плагином для Nginx:
sudo apt install certbot python3-certbot-nginx
Запустите Certbot для вашего домена:
sudo certbot --nginx -d your_domain
Certbot запросит:
- Email — для уведомлений об истечении сертификата
- Согласие с условиями — ответьте Yes
- Перенаправление HTTP → HTTPS — рекомендуется выбрать Yes
После успешного завершения вы увидите:
Congratulations! You have successfully enabled https://your_domain
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/your_domain/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/your_domain/privkey.pem
Your cert will expire on 2025-03-15. 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"
Certbot автоматически:
- Получил сертификат от Let's Encrypt
- Изменил конфигурацию Nginx для поддержки HTTPS
- Настроил автоматическое обновление сертификата
Теперь ваш сайт доступен по безопасному протоколу HTTPS.
Проверка автообновления:
sudo systemctl status certbot.timer
Таймер должен быть активен. Он автоматически обновит сертификаты перед истечением срока действия.
Шаг 5. Настройка Odoo через веб-интерфейс
Откройте браузер и перейдите по адресу https://your_domain. Вы увидите страницу начальной настройки Odoo.
Заполните форму:
Master Password (главный пароль):
- Это административный пароль для управления базами данных
- Сгенерируйте сложный пароль и сохраните его в безопасном месте
- Используется только для создания/удаления баз данных
Database Name:
- Введите
productionили любое другое имя
Email:
- Ваш email для входа в систему
Password:
- Пароль администратора Odoo (не путайте с master password)
Demo dаta:
- Оставьте включённым, если хотите протестировать систему с примерами данных
- Отключите для реальной работы
Нажмите Create database. Процесс займёт 1-2 минуты.
После создания базы вы будете перенаправлены на главную панель Odoo с каталогом доступных модулей.
Установка и использование модулей Odoo
Odoo предлагает множество модулей для различных бизнес-процессов:
Популярные модули:
- Sales — управление продажами, предложениями и заказами
- CRM — работа с клиентами и лидами
- Invoicing — выставление счетов и финансовый учёт
- Inventory — складской учёт и логистика
- Project — управление проектами и задачами
- Website — конструктор сайтов
- eCommerce — интернет-магазин
Для установки модуля:
- Кликните на плитку нужного модуля
- Нажмите Install
- Дождитесь завершения установки
После установки модуль появится в главном меню приложений (иконка в левом верхнем углу).
Резервное копирование и восстановление
Создание бэкапа базы данных
Через веб-интерфейс:
- Перейдите по адресу
https://your_domain/web/database/manager - Введите master password
- Выберите базу данных
- Нажмите Backup
- Скачайте архив
Через командную строку:
docker exec -t odoo_postgres_1 pg_dump -U odoo postgres > odoo_backup.sql
Восстановление из бэкапа
Через веб-интерфейс:
- Перейдите в Database Manager
- Нажмите Restore
- Загрузите файл бэкапа
Через командную строку:
cat odoo_backup.sql | docker exec -i odoo_postgres_1 psql -U odoo postgres
Обновление Odoo
Для обновления на новую версию Odoo:
- Сделайте резервную копию данных
- Измените версию в
docker-compose.yml:
services:
odoo:
image: odoo:16.0 # новая версия
- Пересоберите контейнеры:
docker-compose down
docker-compose pull
docker-compose up -d
- Обновите модули через веб-интерфейс или командой:
docker exec -it odoo_odoo_1 odoo -u all -d postgres
Оптимизация производительности
Увеличение рабочих процессов
Отредактируйте docker-compose.yml:
services:
odoo:
image: odoo:15.0
command: --workers=4 --max-cron-threads=2
Настройка лимитов памяти
services:
odoo:
image: odoo:15.0
deploy:
resources:
limits:
memory: 2G
Включение логирования
services:
odoo:
image: odoo:15.0
volumes:
- ./logs:/var/log/odoo
Устранение частых проблем
Проблема: Odoo не запускается после перезагрузки сервера.
Решение: Настройте автозапуск Docker-контейнеров:
services:
odoo:
restart: always
postgres:
restart: always
Проблема: Ошибка "Database connection failure".
Решение: Проверьте, что PostgreSQL запущен:
docker-compose ps
Проверьте пароли в .env файле.
Проблема: Не загружаются большие файлы.
Решение: Увеличьте client_max_body_size в конфигурации Nginx:
client_max_body_size 500M;
Перезагрузите Nginx:
sudo systemctl reload nginx
Проблема: Медленная работа Odoo.
Решение: Увеличьте количество воркеров и проверьте ресурсы сервера:
docker stats
Безопасность
Ограничение доступа к Database Manager
Добавьте в конфигурацию Nginx:
location /web/database {
deny all;
return 404;
}
Это заблокирует публичный доступ к странице управления базами данных.
Настройка firewall
Убедитесь, что порт 8069 закрыт извне:
sudo ufw status
Должны быть открыты только порты 80, 443 и SSH.
Регулярное обновление
Следите за обновлениями безопасности:
sudo apt update
sudo apt upgrade
docker-compose pull
docker-compose up -d
Заключение
Вы развернули полнофункциональную ERP-систему Odoo с использованием Docker Compose, настроили reverse proxy через Nginx и защитили соединение TLS-сертификатом от Let's Encrypt.
Odoo готова к использованию. Теперь вы можете устанавливать необходимые модули, настраивать бизнес-процессы и интегрировать систему с другими сервисами.
Следующие шаги:
- Изучите официальную документацию Odoo для углубленной настройки
- Настройте интеграции с email, платёжными системами
- Разработайте собственные модули для специфических задач
- Настройте регулярное резервное копирование
Для разработки собственных модулей обратитесь к Developer Documentation.