В этой статье постараюсь поподробнее вам рассказать про вопрос установки, настройки и доработки самого популярного решения класса ERP для бизнеса с открытым исходным кодом, в котором доступен следующий функционал:
- Продажи
- Платежные документы
- CRM
- MRP II
- Вебсайт
- Склад
- Бухгалтерский учёт
- База знаний
- Закупки
- Касса
- Проект
- eCommerce
- Производство
- Почтовые рассылки
- Табели
- Расходы
- Студия
- Отсутствие
- Найм
- Выездные сотрудники
- Сотрудники
- Очистка данных
- Обслуживание
- Подпись
- Служба поддержки
- Подписки
- Качество
- Онлайн-обучение
- Планирование
- События
- Общение
- Контакты
- Жизненный цикл продукта (PLM)
- Календарь
- Маркетинг в соцсетях
- Аттестация
- Автопарк
- Маркетинг
- Живой чат
- Онлайн-запись
- Опросы
- Android & iPhone
- Ремонты
- Посещаемость
- SMS-маркетинг
- Штрих-код
- Заметки
- Управление навыками
- VoIP
- Обеды
- Онлайн-вакансии
- коннектор eBay
- Контракты сотрудников
- И многое другое, для решения существует более 16000 расширений под всесторонние задачи как платные так и бесплатные в своём собственном Маркетплейсе.
Статья будет огромной и будет опубликована после описания процесса установки и постепенно будет мною дописываться в ходе реализации небольшого проекта.
На момент написания материала вышла 17-я версия, её то мы с вами и будем разбирать, конфиг быстренько перепишу.
Содержание статьи
- Варианты лицензирования продукта и дистрибьюция
- Системные требования
- Настройка DNS записей на локальных серверах и у провайдера
- Проброс портов на маршрутизаторе
- Варианты развертывания решения
- 1-й вариант развертывания решения - локальная установка
- Подготовка сервера
- Установка и настройка сервера баз данных PostgreSQL
- Установка Odoo 17
- Установка и настройка прокси-сервера Nginx
- Настройка и получение SSL-сертификата Let's Encrypt
- Web интерфейс Odoo
- Резервное копирование и восстановление
- 2-й вариант развертывания решения в Docker
- Установка Docker и Docker-Compose
- Создание папок под проект
- Написание сценария
- Запуск контейнеров Docker
- Резервное копирование и восстановление
- Инструменты и IDE с помощью которых можно вести разработки
- Бизнес процессы и задачи
- Подключаемые расширения
- Доработка расширений
- Блоки статьи в разработке
- Вывод
Варианты лицензирования продукта и дистрибьюция
Существуют две версии Odoo:
- Odoo Community
- Odoo Enterprise
Odoo Community полностью бесплатное решение, в этой статье рассматривать будем именно её.
Odoo Enterprise расширенное платное решение за счёт визуального редактора odoo studio и некоторых блоков, а также присутствует техподдержка от сообщества разработчиков и регулярные обновления типовых блоков.
Разница между редакциями Odoo:
Скачать готовый инсталляционный пакет можно тут:
https://www.odoo.com/ru_RU/page/download
Дистрибьюция
Могу посоветовать надёжного дистрибьютора из республики Беларусь, так как сам с ним сотрудничаю. Он ведущий разработчик Odoo(занимается интеграцией решения), а также автор курсов на русском языке, работает по безналичному расчёту с юр лицами:
Гречанюк Вадим Семёнович
Telegram: @unicoding
Видеокурс по Odoo для разработчиков:
Для тех кто хочет расширить возможности community версию за счёт визуального редактора Odoo studio, здесь можно отдельно приобрести модуль:
Системные требования
Данное решение поддерживает следующие 64-битные платформы:
- Любой Linux дистрибутив
- Операционная система Windows, как серверная так и десктопная.
В качестве операционной системы я использую Ubuntu server 22.04LTS, которую я установил в виртуальной машине со следующими параметрами:
- Процессор: 2-х ядерный 3,6Ггц
- Оперативная память: 2ГБ
- Жёсткий диск: от 10ГБ
Настройка DNS записей на локальных серверах и у провайдера
На локальных DNS серверах создаёте зону "домен.ру" и в этой зоне прописываем запись типа А с именем odoo и ip адресом нашего сервера.
У вашего доменного провайдера в DNS прописываем запись типа А с ip адресом вашего маршрутизатора.
Проброс портов на маршрутизаторе
На своём маршрутизаторе настраиваем одним правилом dnat проброс портов 80,443 с интерфейса WAN на ip адрес нашего сервера.
Варианты развертывания решения
Данное решение можно развернуть на linux или windows сервере в локальном исполнении или в контейнерах докер. В этой статье я рассмотрю оба варианта на Ubuntu 22.04LTS.
Подготовка сервера
Повышаем наши права в системе:
sudo -s
Обновляем систему:
apt update && apt upgrade -y
Устанавливаем дополнительные компоненты:
apt install mc wget net-tools -y
Устанавливаем имя нашему серверу:
hostnamectl set-hostname odoo
Устанавливаем временную зону:
timedatectl set-timezone Europe/Moscow
Устанавливаем службу синхронизации времени:
apt install chrony -y
Добавляем службу в автозагрузку:
systemctl enable chrony
Настройка сети:
nano /etc/netplan/00-installer-config.yaml
network:
ethernets:
ens18:
dhcp4: false
addresses: [192.168.0.10/24]
gateway4: 192.168.0.254
nameservers:
addresses: [192.168.0.254, 8.8.8.8]
version: 2
Сохранить и закрыть:
CTRL+O, CTRL+X
Применяем настройки сети:
netlan apply
Установка и настройка сервера баз данных PostgreSQL
Odoo использует сервер базы данных, мы установим PostgreSQL доступный в репозиториях Ubuntu:
apt install postgresql postgresql-client -y
Проверяем статус службы:
systemctl status postgresql
Устанавливаем пакет wkhtmltopdf, необходимый для печати отчетов, так как он выполняет преобразование HTML в PDF:
apt install wkhtmltopdf -y
Установка Odoo 17
Импорт GPG-ключа репозитория APT
curl -fsSL https://nightly.odoo.com/odoo.key|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/odoo.gpg
Добавим репозиторий Odoo:
echo "deb http://nightly.odoo.com/17.0/nightly/deb/ ./" | sudo tee /etc/apt/sources.list.d/odoo.list
Обновим пакетную базу и установим Odoo:
apt update && apt install odoo -y
Проверяем статус службы odoo:
systemctl status odoo
Сервис автоматически стартует при загрузке и доступен на порту 8069:
ss -tunelp | grep 8069
Установка и настройка прокси-сервера Nginx
Устанавливаем Nginx:
apt install nginx -y
Настройка конфигурационного файла хоста Nginx
Создаем новый конфигурационный файл для odoo:
nano /etc/nginx/conf.d/odoo.conf
Измените этот фрагмент конфигурации в соответствии с вашей установкой.
# Odoo Upstreams
upstream odoo.tuning-admina.ru {
server 127.0.0.1:8069;
}
# http to https redirection
server {
listen 80;
server_name odoo.tuning-admina.ru;
return 301 https://odoo.tuning-admina.ru$request_uri;
}
server {
listen 443;
server_name odoo.tuning-admina.ru;
access_log /var/log/nginx/odoo_access.log;
error_log /var/log/nginx/odoo_error.log;
# Proxy settings
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
# Request for root domain
location / {
proxy_redirect off;
proxy_pass http://odoo.tuning-admina.ru;
}
# Cache static files
location ~* /web/static/ {
proxy_cache_valid 200 90m;
proxy_buffering on;
expires 864000;
proxy_pass http://odoo.tuning-admina.ru;
}
# Gzip Compression
gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
gzip on;
}
Сохраняем и закрываем:
CTRL+O, CTRL+X
Проверьте конфигурационный файл на наличие ошибок:
nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Заставляем nginx перечитать конфиг:
systemctl reload nginx
Проверяем статус службы:
systemctl status nginx
Настройка и получение SSL-сертификата Let's Encrypt
Установим certbot:
apt install certbot -y
Запрашиваем Центр сертификации на получение SSL-сертификата:
В консоли пишем запрос:
certbot certonly --webroot --agree-tos --email admin@tuning-admina.ru --webroot-path /usr/share/nginx/html/ -d odoo.tuning-admina.ru
где:
- certonly — запрос нового сертификата;
- webroot — проверка выполняется на основе запроса к корню сайта;
- agree-tos — Лицензионное соглашение;
- email — почтовый адрес администратора домена;
- webroot-path — корневой каталог web сервера;
- d — префикс для перечисление доменов, для которых требуется сертификат.
Если нужно сохранить существующий сертификат нажимаем 1
Если требуется продление или замена выбираем 2
Вот наши сертификаты:
Certificate is saved at: /etc/letsencrypt/live/odoo.tuning-admina.ru/fullchain.pem
Key is saved at: /etc/letsencrypt/live/odoo.tuning-admina.ru/privkey.pem
Напишем задание для планировщика Cron, для автоматического продления сертификатов:
crontab -e
1 3 * * * /usr/bin/certbot renew --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx"
Сохранить и закрыть:
CTRL+O, CTRL+X
После отработки задания сертификаты будут обновлены автоматически и добавлены пути в конфигурационный файл хоста Nginx.
Готовый конфигурационный файл хоста должен выглядеть так:
nano /etc/nginx/conf.d/odoo.conf
# Odoo Upstreams
upstream odoo.tuning-admina.ru {
server 127.0.0.1:8069;
}
# http to https redirection
server {
listen 80;
server_name odoo.tuning-admina.ru;
return 301 https://odoo.tuning-admina.ru$request_uri;
}
server {
listen 443 ssl;
server_name odoo.tuning-admina.ru;
access_log /var/log/nginx/odoo_access.log;
error_log /var/log/nginx/odoo_error.log;
# SSL
ssl_certificate /etc/letsencrypt/live/odoo.tuning-admina.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/odoo.tuning-admina.ru/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/odoo.tuning-admina.ru/chain.pem;
# Proxy settings
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
# Request for root domain
location / {
proxy_redirect off;
proxy_pass http://odoo.tuning-admina.ru;
}
# Cache static files
location ~* /web/static/ {
proxy_cache_valid 200 90m;
proxy_buffering on;
expires 864000;
proxy_pass http://odoo.tuning-admina.ru;
}
# Gzip Compression
gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
gzip on;
}
Сохранить и закрыть:
CTRL+O, CTRL+X
Проверяем файл конфигурации на синтаксические ошибки:
nginx -t
Видим, что все отлично:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Перезапускаем nginx:
systemctl restart nginx
Web интерфейс Odoo
Теперь наш ресурс доступен по адресу: https://odoo.tuning-admina.ru
Заполняем таблицу и нажимаем Create database, после создания базы нас перекинет на страницу авторизации в системе:
На этом с установкой всё, статью публикую и буду дописывать в процессе реализации.
Резервное копирование и восстановление
2-й вариант развертывания решения в Docker
Установка Docker и Docker-Compose
Создание папок под проект
Написание сценария
1-й вариант: PostgreSQL + Odoo
При использовании этого варианта сценария нам может потребоваться перенаправление портов или SSL сертификаты от Let's Encrypt, в связи с чем нужно будет на хосте с Docker установить Nginx + Certbot.
2-й вариант: PostgreSQL + Odoo + Nginx + Certbot(Let's Encrypt)
Запуск контейнеров Docker
Резервное копирование и восстановление
Черновик - Бизнес процессы и задачи
Компания в которой планируется внедрение занимается следующей деятельностью:
- Разработка и производство медицинского оборудования
- Разработка и внедрение программного обеспечения
- Продажи прямые и через посредников
- Гарантийное и послегарантийное обслуживание
Блок в процессе написания
Подключаемые расширения
Разделы и расширения, которые нам потребуются:
Приложения для веб-сайтов:
- Конструктор сайтов
- Блоги
- Форум
- Электронное обучение
- Чат
Отдел продаж:
- CRM
- Продажи
- Контрагенты и регионы(самописный)
- Планирование продаж(самописный)
- Планирование и встречи(самописный)
Отдел закупок:
- Закупки
- Потребности производства
- Контрагенты(самописный)
- Заявки на приобретение (самописный)
- Отчёты(самописный)
Бухгалтерия:
- Бухгалтерский учет
- Выставление счетов
- Учет расходов
- Электронные таблицы
- Документы
Приложения для инвентаризации и производства:
- Производство
- Изделия и спецификации
- Потребности производства
- Обслуживание
- Качество
Приложения для управления персоналом:
- Сотрудники
- Подбор персонала
- Отгулы
- Оценки
- Направления
Маркетинговые приложения:
- Автоматизация маркетинга
- Маркетинг по электронной почте
- SMS маркетинг
- Социальный маркетинг
- Опросы
Приложения служб:
- Проект
- Расписание
- Обслуживание на местах
- Справочная служба
- Планирование
- Встречи
Приложения для повышения производительности:
- Обсуждения
- Утверждения
- VOIP
- База знаний