Найти тему
Тюнинг Админа

Бесплатная ERP система на базе Ubuntu 22.04LTS + Odoo 17

Оглавление

В этой статье постараюсь поподробнее вам рассказать про вопрос установки, настройки и доработки самого популярного решения класса 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:

-2
-3

Скачать готовый инсталляционный пакет можно тут:

https://www.odoo.com/ru_RU/page/download

Дистрибьюция

Могу посоветовать надёжного дистрибьютора из республики Беларусь, так как сам с ним сотрудничаю. Он ведущий разработчик Odoo(занимается интеграцией решения), а также автор курсов на русском языке, работает по безналичному расчёту с юр лицами:

Гречанюк Вадим Семёнович

-4

Telegram: @unicoding

-5

Видеокурс по Odoo для разработчиков:

https://academy.odoo.com/

Для тех кто хочет расширить возможности community версию за счёт визуального редактора Odoo studio, здесь можно отдельно приобрести модуль:

https://odoo-studio.com/

-6

Системные требования

Данное решение поддерживает следующие 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

-7

Устанавливаем пакет 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

-8

Сервис автоматически стартует при загрузке и доступен на порту 8069:

ss -tunelp | grep 8069

-9

Установка и настройка прокси-сервера 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

-10

Настройка и получение 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 — префикс для перечисление доменов, для которых требуется сертификат.
-11

Если нужно сохранить существующий сертификат нажимаем 1

Если требуется продление или замена выбираем 2

-12

Вот наши сертификаты:

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

-13

Заполняем таблицу и нажимаем Create database, после создания базы нас перекинет на страницу авторизации в системе:

-14
-15

На этом с установкой всё, статью публикую и буду дописывать в процессе реализации.

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

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
  • База знаний

Доработка расширений

Блоки статьи в разработке

Вывод