# Установка Odoo в Docker на VPS с Ubuntu

Odoo — open-source CRM-система, обеспечивающая гибкое взаимодействие с пользователями и поддерживающая большое количество плагинов, кастомизирующих работу для различных вариантов бизнеса.

В этой инструкции мы расскажем, как установить Odoo на VPS под управлением Ubuntu 20.04.

Для начала работы нам понадобится предварительно настроенный сервер с Ubuntu и предустановленный Docker.

# Установка Odoo

Устанавливать Odoo будем с помощью Docker-Compose. Это поможет ускорить процесс и сразу установить СУБД для работы Odoo. В качестве системы для работы с базами будем использовать PostgreSQL.

# Установка Docker Compose

Установка Docker Compose и основные принципы его работы описаны в отдельной инструкции. Здесь мы просто приведём команду для установки Compose:

sudo apt update

sudo apt install docker-compose

После завершения установки проверим версию установленного Docker Compose командой:

docker-compose -v

#Output
docker-compose version 1.25.0

# Создание compose-файла

Основная рабочая единица для Docker Compose — compose-файл. Создадим отдельную папку для работы Odoo и поместим в неё compose-файл:

mkdir ~/odoo

cd ~/odoo

vim 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:
      - data:/var/lib/odoo
  postgres:
    image: postgres:13
    env_file: .env
    volumes:
      - db:/var/lib/postgresql/data/pgdata

volumes:
  data:
  db:

Помимо общих сведений об устанавливаемых образах и адресе, на котором будет работать наша сборка, мы также указали файл .env, в котором будут содержаться переменные среды.

Создадим этот файл:

vim .env

В открывшемся пустом текстовом файле укажем следующие сведения:

# postgresql environment variables
POSTGRES_DB=postgres
POSTGRES_PASSWORD=password_for_user
POSTGRES_USER=odoo
PGDATA=/var/lib/postgresql/data/pgdata

# odoo environment variables
HOST=postgres
USER=odoo
PASSWORD=password_for_user

В строках POSTGRES_PASSWORD и PASSWORD нужно указать пароли для пользователя PostgreSQL и Odoo.

Также здесь мы указываем имя пользователя базы данных и её место расположения.

После того как переменные среды будут указаны, можно запустить сборку наших контейнеров:

sudo docker-compose up -d

В консоли появится информация о процессе сборки и установки всех образов.

После завершения Odoo сразу запустится, и можно будет проверить правильность нашей сборки:

curl --head http://localhost:8069

В консоли должна появиться примерно такая информация:

#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, 05 July 2022 12:45:34 GMT

В строке Location здесь указан адрес, по которому расположена стартовая страница Odoo. Сейчас она расположена на localhost. Поскольку нам нужно получить доступ к Odoo из сети, мы должны проксировать запросы, приходящие на общий адрес сервера, к внутреннему адресу нашей сборки.

Используем для проксирования запросов веб-сервер Nginx.

# Установка и настройка Nginx в качестве обратного прокси

Подробнее об установке Nginx и создании виртуальных хостов можно прочитать в нашем отдельном материале. Здесь же мы приведем только общие команды.

Устанавливать веб-сервер будем стандартной командой:

sudo apt install nginx

После установки добавим его в список исключений файрвола:

sudo ufw allow “Nginx Full”

Далее создадим виртуальный хост для наших контейнеров:

sudo vim /etc/nginx/sites-available/odoo.conf

Содержимое виртуального хоста:

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;
  }
}

Здесь в строке server_name нужно указать имя хоста, на котором будет расположен Odoo.

Активируем виртуальный хост:

sudo ln -s /etc/nginx/sites-available/odoo.conf /etc/nginx/sites-enabled/

Проверим конфигурацию веб-сервера:

sudo nginx -t

#Output

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

После этого можно перезагрузить веб-сервер:

sudo systemctl reload nginx

В браузере в адресной строке укажем адрес вашего сервера.

Если всё было сделано правильно, вы увидите стартовую страницу Odoo.

После этого нужно будет только закончить регистрацию (создать новую базу данных и указать пароли), и можно переходить к работе.