Установка Odoo с Docker на Ubuntu: полное руководство

11.12.2025
19:26

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.0
  • postgres — база данных PostgreSQL 13
  • depends_on — Odoo запустится только после PostgreSQL
  • ports — порт 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 — передача важных заголовков в Odoo
  • client_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 запросит:

  1. Email — для уведомлений об истечении сертификата
  2. Согласие с условиями — ответьте Yes
  3. Перенаправление 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 — интернет-магазин

Для установки модуля:

  1. Кликните на плитку нужного модуля
  2. Нажмите Install
  3. Дождитесь завершения установки

После установки модуль появится в главном меню приложений (иконка в левом верхнем углу).

Резервное копирование и восстановление

Создание бэкапа базы данных

Через веб-интерфейс:

  1. Перейдите по адресу https://your_domain/web/database/manager
  2. Введите master password
  3. Выберите базу данных
  4. Нажмите Backup
  5. Скачайте архив

Через командную строку:

docker exec -t odoo_postgres_1 pg_dump -U odoo postgres > odoo_backup.sql

Восстановление из бэкапа

Через веб-интерфейс:

  1. Перейдите в Database Manager
  2. Нажмите Restore
  3. Загрузите файл бэкапа

Через командную строку:

cat odoo_backup.sql | docker exec -i odoo_postgres_1 psql -U odoo postgres

Обновление Odoo

Для обновления на новую версию Odoo:

  1. Сделайте резервную копию данных
  2. Измените версию в docker-compose.yml:
services:
  odoo:
    image: odoo:16.0  # новая версия
  1. Пересоберите контейнеры:
docker-compose down
docker-compose pull
docker-compose up -d
  1. Обновите модули через веб-интерфейс или командой:
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.

Другие статьи

11.12.2025
79
База знаний / Автоустановка скриптов
Как установить Odoo на VPS всего за пару минут
11.12.2025
120
База знаний / Инструкции
Файлы /etc/passwd и /etc/shadow: структура и работа