# Установка 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.
После этого нужно будет только закончить регистрацию (создать новую базу данных и указать пароли), и можно переходить к работе.