bolt Valebyte VPS от $4/мес — NVMe, запуск за 60 секунд.

Получить VPS arrow_forward
eco Начальный Туториал

Установка Odoo на VPS: PostgreSQL, Nginx, Let's Encrypt и автоматические бэкапы

calendar_month Jul 19, 2026 schedule 21 мин. чтения visibility 28 просмотров
info

Нужен сервер для этого гайда? Мы предлагаем выделенные серверы и VPS в 50+ странах с мгновенной настройкой.

Нужен сервер для этого гайда?

Разверните VPS или выделенный сервер за минуты.

Установка Odoo на VPS: PostgreSQL, Nginx, Let's Encrypt и автоматические бэкапы

TL;DR

В этом подробном руководстве мы пошагово настроим Odoo — мощную систему планирования ресурсов предприятия (ERP) — на вашем собственном VPS-сервере. Вы научитесь устанавливать и конфигурировать PostgreSQL для хранения данных, Nginx в качестве высокопроизводительного обратного прокси-сервера, обеспечивать безопасное соединение с помощью Let's Encrypt SSL-сертификатов и настраивать автоматическое резервное копирование для защиты ваших данных.

  • Полная установка Odoo 17/18 на Ubuntu 24.04 LTS.
  • Конфигурация PostgreSQL 16 для оптимальной работы Odoo.
  • Настройка Nginx 1.26 как обратного прокси с поддержкой WebSocket.
  • Автоматическое получение и продление SSL-сертификатов Let's Encrypt через Certbot.
  • Создание скрипта для автоматического резервного копирования базы данных и файлов Odoo.
  • Базовая защита сервера с помощью UFW и Fail2ban.

Что мы настраиваем и зачем

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

В рамках этого руководства мы развернем актуальную версию Odoo (предположительно, Odoo 17 или 18, актуальную на 2026 год) на операционной системе Ubuntu 24.04 LTS. Мы настроим PostgreSQL в качестве основной базы данных, Nginx как высокопроизводительный веб-сервер и обратный прокси для Odoo, а также интегрируем Let's Encrypt для бесплатных SSL-сертификатов, обеспечивающих безопасное HTTPS-соединение. Конечной целью является получение полностью функционирующей, безопасной и легко обслуживаемой установки Odoo, доступной через доменное имя с шифрованием трафика.

Читатель в итоге получит полностью настроенный Odoo-сервер, готовый к развертыванию бизнес-процессов. Это будет не просто установка, а полноценная инфраструктура с учетом безопасности, производительности и возможности восстановления данных.

Существуют альтернативы, такие как облачные управляемые решения Odoo (Odoo Online, Odoo.sh) или сторонние хостинг-провайдеры, предлагающие Odoo как услугу. Однако самостоятельное развертывание на собственном VPS предоставляет ряд значительных преимуществ:

  • Полный контроль: Вы полностью контролируете серверную среду, можете устанавливать любые модули, настраивать параметры производительности и безопасности по своему усмотрению.
  • Экономия затрат: При больших объемах данных или большом количестве пользователей self-hosted решение часто оказывается значительно дешевле в долгосрочной перспективе по сравнению с месячной подпиской на облачные сервисы.
  • Гибкость: Возможность интеграции с другими вашими системами, установки специфических расширений и глубокой кастомизации без ограничений провайдера.
  • Безопасность данных: Ваши данные хранятся на вашем сервере, что может быть критически важно для компаний с строгими требованиями к конфиденциальности и суверенитету данных.

Выбор self-hosted Odoo на VPS идеален для тех, кто ищет максимальную гибкость, контроль над данными и оптимизацию затрат, готовый при этом взять на себя ответственность за администрирование сервера.

Какой VPS-конфиг нужен под эту задачу

Требования к VPS для Odoo могут сильно варьироваться в зависимости от количества пользователей, объема данных, количества установленных модулей и интенсивности использования. Однако для старта и небольших компаний можно выделить следующие минимальные и рекомендуемые требования:

Минимальные требования для Odoo (1-5 пользователей, базовые модули):

  • CPU: 1-2 vCPU (например, Intel Xeon E5 или аналогичный).
  • RAM: 2 ГБ (для Odoo и PostgreSQL).
  • Диск: 40 ГБ SSD (для ОС, PostgreSQL данных и файлов Odoo). SSD критичен для производительности БД.
  • Сеть: 100 Мбит/с пропускная способность.

Рекомендуемый VPS-план для среднего использования (до 20-30 пользователей, несколько активных модулей):

  • CPU: 4 vCPU (чем выше частота ядра, тем лучше).
  • RAM: 8 ГБ (обеспечит комфортную работу при росте нагрузки).
  • Диск: 160-200 ГБ NVMe SSD (NVMe значительно быстрее SATA SSD и рекомендуется для активных БД).
  • Сеть: 1 Гбит/с пропускная способность.

Для нашей задачи по установке Odoo, мы будем ориентироваться на план, который обеспечит стабильную работу для небольшой или средней команды. Можно рассмотреть VPS с указанными характеристиками, например, с 4 vCPU, 8 ГБ RAM и 160 ГБ NVMe SSD. Это обеспечит достаточный запас производительности и дискового пространства для большинства сценариев использования Odoo.

Когда нужен dedicated, а не VPS

Dedicated-сервер становится необходимым, когда:

  • Очень высокая нагрузка: Сотни активных пользователей, сложные и ресурсоемкие ERP-процессы, интенсивные операции с БД.
  • Строгие требования к производительности: Необходимость гарантированной производительности без "шумных соседей" (как это бывает на VPS).
  • Специфичное оборудование: Требуются RAID-массивы, GPU или другие специализированные компоненты.
  • Большой объем данных: Петабайты данных, требующие огромного дискового пространства.
  • Полная изоляция: Максимальный уровень безопасности и изоляции, который не может обеспечить VPS.

Для таких сценариев, когда VPS уже не справляется, стоит рассмотреть подходящий dedicated сервер.

Локация: на что влияет

Выбор локации VPS-сервера влияет на несколько ключевых факторов:

  • Задержка (Latency): Чем ближе сервер к большинству ваших пользователей, тем ниже задержка и быстрее отклик веб-приложения. Для международных команд выбирайте центральную локацию.
  • Соответствие законодательству: Хранение данных в определенной юрисдикции может быть обязательным из-за GDPR, HIPAA или других локальных законов.
  • Стоимость: Цены на VPS могут варьироваться в зависимости от локации дата-центра.
  • Надежность сети: Выбирайте дата-центры с хорошей репутацией и стабильными сетевыми каналами.

Всегда старайтесь размещать сервер как можно ближе к вашей основной аудитории или команде, чтобы минимизировать задержки и обеспечить наилучший пользовательский опыт.

Подготовка сервера

Прежде чем приступать к установке Odoo, необходимо выполнить базовую настройку и защиту вашего свежего VPS на Ubuntu 24.04 LTS. Эти шаги обеспечат безопасность и стабильность вашей системы.

1. Обновление системы

Всегда начинайте с обновления списка пакетов и их установки до последней версии. Это гарантирует, что вы работаете с самыми актуальными исправлениями безопасности и функциональности.


sudo apt update && sudo apt upgrade -y

После обновления может потребоваться перезагрузка, особенно если были обновлены компоненты ядра.


sudo reboot

После перезагрузки войдите снова на сервер.

2. Создание нового пользователя с правами sudo

Работа под пользователем root небезопасна. Создадим нового пользователя, через которого будем подключаться по SSH, и предоставим ему права sudo.


sudo adduser odoo_admin

Следуйте инструкциям, чтобы установить пароль и ввести информацию о пользователе (можно оставить поля пустыми).

Теперь добавим пользователя odoo_admin в группу sudo, чтобы он мог выполнять команды с повышенными привилегиями.


sudo usermod -aG sudo odoo_admin

Теперь выйдите из текущей сессии root и войдите как odoo_admin.


exit

3. Настройка SSH-ключей (рекомендуется)

Для повышения безопасности рекомендуется использовать SSH-ключи вместо паролей. Если вы еще не сгенерировали ключи на своем локальном компьютере, сделайте это:


ssh-keygen -t rsa -b 4096

Скопируйте публичный ключ на сервер для нового пользователя odoo_admin. Замените ~/.ssh/id_rsa.pub на путь к вашему публичному ключу и your_vps_ip на IP-адрес вашего VPS.


ssh-copy-id odoo_admin@your_vps_ip

После успешного копирования ключа, вы можете отключить аутентификацию по паролю в файле /etc/ssh/sshd_config для пользователя odoo_admin, установив PasswordAuthentication no и перезапустив службу SSH.


sudo nano /etc/ssh/sshd_config

Найдите строку PasswordAuthentication yes и измените ее на:


PasswordAuthentication no

Также рекомендуется изменить порт SSH по умолчанию (22) на другой, например, 2222, чтобы уменьшить количество автоматических атак.


Port 2222

Сохраните изменения (Ctrl+O, Enter, Ctrl+X) и перезапустите службу SSH:


sudo systemctl restart sshd

Теперь вы сможете подключиться только по SSH-ключу на новом порту: ssh -p 2222 odoo_admin@your_vps_ip.

4. Настройка брандмауэра (UFW)

Брандмауэр Uncomplicated Firewall (UFW) прост в использовании и позволяет контролировать входящий и исходящий трафик. По умолчанию UFW блокирует все входящие соединения и разрешает все исходящие.


sudo apt install ufw -y
sudo ufw allow 2222/tcp          # Разрешить SSH на новом порту
sudo ufw allow 80/tcp           # Разрешить HTTP (для Let's Encrypt)
sudo ufw allow 443/tcp          # Разрешить HTTPS
sudo ufw enable                 # Включить UFW
sudo ufw status                 # Проверить статус UFW

Подтвердите включение UFW, введя y.

5. Установка Fail2ban

Fail2ban сканирует логи сервера на предмет подозрительной активности (например, многократные неудачные попытки входа SSH) и автоматически блокирует IP-адреса злоумышленников с помощью правил брандмауэра.


sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

В файле jail.local найдите секцию [sshd] и убедитесь, что она включена (enabled = true). Если вы изменили порт SSH, укажите его в параметре port.


[sshd]
enabled = true
port = 2222

Сохраните изменения и перезапустите Fail2ban:


sudo systemctl restart fail2ban
sudo fail2ban-client status sshd # Проверить статус службы sshd в Fail2ban

Теперь ваш сервер готов к установке Odoo и связанных с ним компонентов.

Установка ПО — пошагово

В этом разделе мы установим все необходимые компоненты: PostgreSQL, Python 3 и его зависимости, саму Odoo, а затем Nginx и Certbot.

Все команды будут выполняться от имени пользователя odoo_admin с использованием sudo, если это необходимо.

1. Установка PostgreSQL 16

Odoo использует PostgreSQL в качестве основной базы данных. Установим актуальную версию PostgreSQL и создадим пользователя и базу данных для Odoo.


sudo apt install postgresql postgresql-client -y # Установка PostgreSQL 16 (актуальная на 2026)
sudo systemctl start postgresql                  # Запуск службы PostgreSQL
sudo systemctl enable postgresql                 # Включение автозапуска PostgreSQL

Создадим системного пользователя odoo, который будет владельцем базы данных Odoo.


sudo su - postgres -c "createuser -s odoo"       # Создание пользователя PostgreSQL 'odoo'

Odoo будет использовать этого пользователя для доступа к своей базе данных. Пароль для этого пользователя не требуется, так как Odoo будет подключаться локально с помощью аутентификации peer.

2. Установка Python 3 и его зависимостей

Odoo написан на Python. Нам потребуется Python 3, его менеджер пакетов pip, а также ряд библиотек и зависимостей.


sudo apt install python3 python3-pip python3-dev -y # Установка Python 3, pip и dev-файлов
sudo apt install build-essential libxml2-dev libxslt1-dev libjpeg-dev zlib1g-dev liblcms2-dev libffi-dev libssl-dev -y # Установка системных зависимостей
sudo apt install npm nodejs -y # Установка Node.js и npm для некоторых Odoo-модулей (например, веб-редактор)
sudo npm install -g lessc # Установка Less CSS компилятора

3. Создание системного пользователя и директории для Odoo

Для безопасности Odoo должен работать под отдельным системным пользователем без привилегий root.


sudo adduser --system --home=/opt/odoo --group odoo # Создание системного пользователя 'odoo'

Этот пользователь будет владеть файлами Odoo и запускать сервис.

4. Загрузка и установка Odoo 17/18

Мы будем использовать последнюю стабильную версию Odoo, актуальную на 2026 год, например, Odoo 17 или 18. Загрузим ее из официального репозитория GitHub.


sudo su - odoo -s /bin/bash # Переключение на пользователя 'odoo'
git clone https://www.github.com/odoo/odoo --depth 1 --branch 17.0 /opt/odoo/odoo17 # Клонирование Odoo 17 (или 18)
exit # Возврат к пользователю odoo_admin

Создадим виртуальное окружение Python для Odoo и установим все необходимые Python-зависимости.


sudo python3 -m venv /opt/odoo/odoo17-venv # Создание виртуального окружения
sudo /opt/odoo/odoo17-venv/bin/pip install wheel # Установка wheel
sudo /opt/odoo/odoo17-venv/bin/pip install -r /opt/odoo/odoo17/requirements.txt # Установка зависимостей Odoo

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


sudo apt install libpq-dev -y # Установка библиотеки для PostgreSQL
sudo /opt/odoo/odoo17-venv/bin/pip install psycopg2-binary

5. Установка Wkhtmltopdf

Для генерации PDF-отчетов в Odoo требуется утилита wkhtmltopdf. Важно использовать версию, совместимую с вашей Odoo.


sudo apt install xfonts-base -y # Установка базовых шрифтов
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb # Загрузка wkhtmltopdf (может потребоваться другая версия для Ubuntu 24.04, проверьте на GitHub)
sudo dpkg -i wkhtmltox_0.12.6-1.focal_amd64.deb # Установка пакета
sudo apt --fix-broken install -y # Исправление возможных зависимостей
sudo cp /usr/local/bin/wkhtmltoimage /usr/bin/wkhtmltoimage # Копирование исполняемых файлов
sudo cp /usr/local/bin/wkhtmltopdf /usr/bin/wkhtmltopdf   # Копирование исполняемых файлов

Проверьте версию:


wkhtmltopdf --version

Должно быть что-то вроде wkhtmltopdf 0.12.6.

6. Установка Nginx 1.26

Nginx будет выступать в роли обратного прокси для Odoo, обеспечивая лучшую производительность, безопасность и возможность использования SSL.


sudo apt install nginx -y # Установка Nginx (актуальная версия 1.26 на 2026)
sudo systemctl start nginx # Запуск Nginx
sudo systemctl enable nginx # Включение автозапуска Nginx

По умолчанию Nginx слушает порт 80. Можете проверить его работу, открыв IP-адрес вашего VPS в браузере.

Конфигурация

Теперь, когда все компоненты установлены, необходимо их правильно сконфигурировать для совместной работы. Мы настроим Odoo, Nginx и получим SSL-сертификаты от Let's Encrypt.

1. Конфигурация Odoo

Создадим конфигурационный файл для Odoo. Важно хранить мастер-пароль и другие чувствительные данные в этом файле, но не делать его общедоступным.


sudo nano /etc/odoo/odoo.conf

Добавьте следующее содержимое. Замените your_master_password на надежный, сложный пароль. Запомните его, он потребуется для управления базами данных Odoo через веб-интерфейс.


[options]
; Это мастер-пароль для управления базами данных Odoo (создание, удаление, бэкап)
; Используйте сложный, уникальный пароль!
admin_passwd = your_master_password
db_host = False
db_port = False
db_user = odoo
db_password = False
addons_path = /opt/odoo/odoo17/addons
xmlrpc_port = 8069
longpolling_port = 8072
logfile = /var/log/odoo/odoo.log
logrotate = True
limit_time_cpu = 600
limit_time_real = 1200
workers = 0 ; Установите 0 для отладки, >0 для продакшена (2  CPU_cores + 1)
max_cron_threads = 1

Примечание по workers: Для продакшена рекомендуется установить workers в значение (2 CPU_cores) + 1. Например, для 4-ядерного VPS это будет (2 4) + 1 = 9. Установка workers = 0 запускает Odoo в режиме отладки с одним потоком, что удобно для первоначальной настройки, но не подходит для продакшена.

Создайте директорию для логов и установите правильные права:


sudo mkdir /var/log/odoo
sudo chown odoo:odoo /var/log/odoo

2. Создание системного сервиса Odoo

Создадим юнит-файл Systemd для управления Odoo как сервисом.


sudo nano /etc/systemd/system/odoo.service

Добавьте следующее содержимое:


[Unit]
Description=Odoo ERP Management Software
Requires=postgresql.service
After=network.target postgresql.service

[Service]
Type=simple
User=odoo
Group=odoo
ExecStart=/opt/odoo/odoo17-venv/bin/python3 /opt/odoo/odoo17/odoo-bin -c /etc/odoo/odoo.conf
WorkingDirectory=/opt/odoo/odoo17
StandardOutput=journal+console
StandardError=journal+console
Restart=always
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Сохраните файл и перезагрузите Systemd, затем запустите и включите Odoo сервис:


sudo systemctl daemon-reload # Перезагрузка конфигурации Systemd
sudo systemctl start odoo # Запуск Odoo сервиса
sudo systemctl enable odoo # Включение автозапуска Odoo сервиса
sudo systemctl status odoo # Проверка статуса Odoo

Вы должны увидеть статус active (running). Odoo теперь слушает на порту 8069.

3. Конфигурация Nginx как обратного прокси

Создадим конфигурационный файл Nginx для вашего домена. Замените your_domain.com на ваш фактический домен.


sudo nano /etc/nginx/conf.d/odoo.conf # Использование conf.d для отдельного файла

Добавьте следующее содержимое. Это базовая конфигурация для проксирования трафика Odoo с поддержкой WebSocket.


upstream odoo {
    server 127.0.0.1:8069; # Порт Odoo
}

upstream odoo_longpolling {
    server 127.0.0.1:8072; # Порт Odoo Longpolling
}

server {
    listen 80;
    server_name your_domain.com www.your_domain.com; # Замените на ваш домен

    # Перенаправление HTTP на HTTPS (будет настроено Certbot)
    # return 301 https://$host$request_uri;
}

# Сервер для HTTPS (пока закомментирован, будет заполнен Certbot)
# server {
#     listen 443 ssl;
#     server_name your_domain.com www.your_domain.com;
#
#     ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;
#     ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;
#     ssl_protocols TLSv1.2 TLSv1.3;
#     ssl_prefer_server_ciphers on;
#     ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
#     ssl_session_cache shared:SSL:10m;
#     ssl_session_timeout 10m;
#
#     proxy_read_timeout 720s;
#     proxy_connect_timeout 720s;
#     proxy_send_timeout 720s;
#
#     # Odoo Longpolling
#     location /longpolling {
#         proxy_pass http://odoo_longpolling;
#         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#         proxy_set_header X-Real-IP $remote_addr;
#         proxy_set_header Host $host;
#         proxy_set_header X-Forwarded-Proto $scheme;
#         proxy_http_version 1.1;
#         proxy_set_header Upgrade $http_upgrade;
#         proxy_set_header Connection "upgrade";
#     }
#
#     # Odoo Web
#     location / {
#         proxy_pass http://odoo;
#         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#         proxy_set_header X-Real-IP $remote_addr;
#         proxy_set_header Host $host;
#         proxy_set_header X-Forwarded-Proto $scheme;
#     }
#
#     # Статические файлы (можно настроить кеширование)
#     location ~ /web/static/ {
#         proxy_cache_valid 200 60m;
#         proxy_buffering on;
#         expires 864000;
#         proxy_pass http://odoo;
#     }
#
#     gzip_static on;
# }

Сохраните файл. Проверьте конфигурацию Nginx и перезапустите его:


sudo nginx -t # Проверка синтаксиса Nginx
sudo systemctl restart nginx # Перезапуск Nginx

Удалите дефолтный конфиг Nginx, чтобы избежать конфликтов:


sudo rm /etc/nginx/sites-enabled/default
sudo systemctl reload nginx

На этом этапе Odoo должен быть доступен по вашему домену через HTTP (порт 80).

4. Настройка TLS/HTTPS через Let's Encrypt с Certbot

Установим Certbot, который автоматически настроит Nginx для использования SSL-сертификатов Let's Encrypt.


sudo apt install certbot python3-certbot-nginx -y # Установка Certbot и плагина для Nginx

Запустите Certbot. Он просканирует вашу конфигурацию Nginx и предложит домены для получения сертификата.


sudo certbot --nginx -d your_domain.com -d www.your_domain.com # Замените на ваш домен

Следуйте инструкциям: введите адрес электронной почты, согласитесь с условиями обслуживания и выберите, хотите ли вы перенаправлять HTTP-трафик на HTTPS (рекомендуется). Certbot автоматически изменит ваш файл /etc/nginx/conf.d/odoo.conf, добавив необходимую конфигурацию для SSL и перенаправления.

Проверьте, что автоматическое продление сертификатов работает:


sudo certbot renew --dry-run # Тестовое продление сертификатов

Если команда завершится без ошибок, автоматическое продление будет работать через cron-задание Certbot.

5. Проверка работоспособности

Откройте ваш домен (https://your_domain.com) в веб-браузере. Вы должны увидеть страницу установки Odoo с запросом на создание новой базы данных. Убедитесь, что соединение защищено (зеленый замок в адресной строке).

Вы можете также проверить доступность Odoo и Nginx с помощью curl:


curl -I https://your_domain.com # Проверка HTTP-заголовков
curl http://127.0.0.1:8069 # Проверка прямого доступа к Odoo

В первом случае вы должны увидеть заголовки Nginx и информацию о HTTPS. Во втором — заголовки Odoo.

Бэкапы и обслуживание

Регулярное резервное копирование — критически важная часть эксплуатации любого продакшн-сервиса. Odoo хранит свои данные в базе PostgreSQL и имеет некоторые файлы на диске. Мы настроим простой скрипт для автоматического бэкапа.

1. Что бэкапить

  • База данных PostgreSQL: Содержит все бизнес-данные Odoo. Это самый важный компонент.
  • Файлы конфигурации Odoo: /etc/odoo/odoo.conf и /etc/systemd/system/odoo.service.
  • Кастомные модули и аттачменты: Если вы используете свои модули, они обычно находятся в /opt/odoo/odoo17/addons или в отдельной директории. Аттачменты (загруженные пользователями файлы) хранятся в директории filestore внутри каталога данных Odoo (по умолчанию /opt/odoo/.local/share/Odoo/filestore/).
  • Конфигурация Nginx: /etc/nginx/conf.d/odoo.conf.
  • Сертификаты Let's Encrypt: Хотя они автоматически продлеваются, иметь их копию не помешает (/etc/letsencrypt/).

2. Простой скрипт автобэкапа

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


sudo mkdir -p /opt/odoo/backups
sudo chown odoo:odoo /opt/odoo/backups
sudo nano /opt/odoo/backup_script.sh

Добавьте следующий контент. Замените your_odoo_db_name на имя вашей базы данных Odoo (вы увидите его при создании БД в веб-интерфейсе).


#!/bin/bash

# Каталог для бэкапов
BACKUP_DIR="/opt/odoo/backups"
DATE=$(date +%Y%m%d_%H%M%S)
DB_NAME="your_odoo_db_name" # Имя вашей базы данных Odoo
ODOO_CONF="/etc/odoo/odoo.conf"
ODOO_SERVICE="/etc/systemd/system/odoo.service"
NGINX_CONF="/etc/nginx/conf.d/odoo.conf"
LETSENCRYPT_DIR="/etc/letsencrypt"
ODOO_HOME="/opt/odoo"
ODOO_FILENAMES_DIR="/opt/odoo/.local/share/Odoo/filestore/${DB_NAME}" # Путь к filestore Odoo

# Создание директории для текущего бэкапа
CURRENT_BACKUP_DIR="${BACKUP_DIR}/odoo_backup_${DATE}"
mkdir -p "$CURRENT_BACKUP_DIR"

echo "Начинаем резервное копирование Odoo..."

# 1. Бэкап базы данных PostgreSQL
echo "Дамп базы данных PostgreSQL..."
sudo -u postgres pg_dump "$DB_NAME" > "${CURRENT_BACKUP_DIR}/${DB_NAME}.sql"
if [ $? -eq 0 ]; then
    echo "Дамп базы данных успешно создан."
else
    echo "Ошибка при создании дампа базы данных."
    exit 1
fi

# 2. Копирование файлов конфигурации
echo "Копирование конфигурационных файлов..."
cp "$ODOO_CONF" "$CURRENT_BACKUP_DIR/"
cp "$ODOO_SERVICE" "$CURRENT_BACKUP_DIR/"
cp "$NGINX_CONF" "$CURRENT_BACKUP_DIR/"

# 3. Копирование директории с аттачментами (filestore)
if [ -d "$ODOO_FILENAMES_DIR" ]; then
    echo "Копирование директории с аттачментами (filestore)..."
    cp -R "$ODOO_FILENAMES_DIR" "$CURRENT_BACKUP_DIR/"
else
    echo "Директория с аттачментами не найдена: $ODOO_FILENAMES_DIR. Пропускаем."
fi

# 4. Копирование кастомных модулей (если они есть в отдельной директории)
# Пример: если у вас есть кастомные модули в /opt/odoo/custom_addons
# if [ -d "/opt/odoo/custom_addons" ]; then
#     echo "Копирование кастомных модулей..."
#     cp -R /opt/odoo/custom_addons "$CURRENT_BACKUP_DIR/"
# else
#     echo "Директория с кастомными модулями не найдена. Пропускаем."
# fi

# 5. Архивация всего бэкапа
echo "Архивация бэкапа..."
tar -czf "${BACKUP_DIR}/odoo_backup_${DATE}.tar.gz" -C "$CURRENT_BACKUP_DIR" .
if [ $? -eq 0 ]; then
    echo "Бэкап успешно заархивирован: ${BACKUP_DIR}/odoo_backup_${DATE}.tar.gz"
    rm -rf "$CURRENT_BACKUP_DIR" # Удаление временной директории
else
    echo "Ошибка при архивации бэкапа."
    exit 1
fi

# 6. Удаление старых бэкапов (например, хранить последние 7 дней)
echo "Удаление старых бэкапов (старше 7 дней)..."
find "$BACKUP_DIR" -type f -name ".tar.gz" -mtime +7 -delete
echo "Резервное копирование завершено."

Сделайте скрипт исполняемым:


sudo chmod +x /opt/odoo/backup_script.sh

Проверьте работу скрипта, запустив его вручную:


sudo /opt/odoo/backup_script.sh

Убедитесь, что в /opt/odoo/backups появился архив.

3. Настройка Cron для автоматического запуска

Добавим скрипт в планировщик задач Cron, чтобы он запускался автоматически, например, каждый день в 03:00 утра.


sudo crontab -e

Если запросит редактор, выберите nano. Добавьте следующую строку в конец файла:


0 3    /opt/odoo/backup_script.sh > /dev/null 2>&1

Эта строка означает: "Каждый день в 3 часа 0 минут запускать скрипт, а вывод перенаправлять в /dev/null".

4. Куда складывать (внешний S3 / отдельный VPS)

Хранение бэкапов на том же сервере, что и основной сервис, крайне рискованно. Если сервер выйдет из строя или будет скомпрометирован, вы потеряете и данные, и бэкапы. Рекомендуется использовать внешнее хранилище:

  • S3-совместимое хранилище: Облачные сервисы, такие как Amazon S3, DigitalOcean Spaces, Backblaze B2, или MinIO на другом сервере. Для этого можно интегрировать s3cmd или rclone в ваш скрипт бэкапа.
  • Отдельный VPS: Вы можете арендовать небольшой, недорогой VPS и использовать rsync или scp для регулярной синхронизации бэкапов на него.
  • NFS-шара или сетевое хранилище: Если у вас есть собственная инфраструктура, можно монтировать сетевой диск.

Пример добавления rclone для S3-хранилища (требует предварительной настройки rclone config):


# Добавьте в ваш скрипт backup_script.sh после архивации
echo "Загрузка бэкапа в S3..."
/usr/bin/rclone copy "${BACKUP_DIR}/odoo_backup_${DATE}.tar.gz" "your_s3_remote_name:your_s3_bucket_name/"
if [ $? -eq 0 ]; then
    echo "Бэкап успешно загружен в S3."
else
    echo "Ошибка при загрузке бэкапа в S3."
fi

5. Обновления: rolling vs maintenance window

Odoo, как и любая сложная система, требует регулярных обновлений. Существует два основных подхода:

  • Rolling updates (непрерывные обновления): Применяются к отдельным компонентам без полного простоя системы. Для Odoo это может быть обновление модулей или небольшие исправления. Требует тщательно спланированной архитектуры (например, кластер из нескольких Odoo-инстансов) и не всегда применим к мажорным обновлениям.
  • Maintenance window (окно обслуживания): Запланированный период простоя системы для выполнения мажорных обновлений (например, с Odoo 17 на Odoo 18), обновления ОС, PostgreSQL и т.д. Это наиболее распространенный и безопасный подход для одиночного VPS.

Для Odoo на VPS рекомендуется использовать подход с окном обслуживания. Планируйте обновления на время минимальной активности, предварительно создав полный бэкап. Процесс обновления Odoo между мажорными версиями может быть сложным и часто требует миграции базы данных, поэтому всегда тестируйте обновления на копии продакшн-системы.

Для обновления Python-зависимостей Odoo:


sudo systemctl stop odoo
sudo su - odoo -s /bin/bash
cd /opt/odoo/odoo17
/opt/odoo/odoo17-venv/bin/pip install --upgrade -r requirements.txt
exit
sudo systemctl start odoo

Для обновления самой Odoo (если вы клонировали из git):


sudo systemctl stop odoo
sudo su - odoo -s /bin/bash
cd /opt/odoo/odoo17
git pull origin 17.0 # Или другая ваша ветка
exit
sudo systemctl start odoo

Всегда внимательно читайте changelog Odoo перед обновлением и тестируйте на стейджинге.

Troubleshooting + FAQ

В этом разделе собраны распространенные проблемы и вопросы, которые могут возникнуть при установке и эксплуатации Odoo на VPS.

Odoo не запускается или выдает ошибку 500/502 в браузере. Что проверить?

В первую очередь проверьте логи Odoo: sudo journalctl -u odoo.service или sudo tail -f /var/log/odoo/odoo.log. Ищите сообщения об ошибках. Частые причины: неправильный путь к Python-интерпретатору, отсутствующие зависимости, проблемы с подключением к PostgreSQL (неверный пользователь/пароль, PostgreSQL не запущен), синтаксические ошибки в odoo.conf. Также проверьте статус сервиса Odoo: sudo systemctl status odoo.

Nginx выдает ошибку 502 Bad Gateway.

Это означает, что Nginx не может соединиться с бэкендом Odoo. Убедитесь, что сервис Odoo запущен и слушает на порту 8069 (sudo systemctl status odoo, sudo ss -tulpn | grep 8069). Проверьте конфигурацию Nginx на предмет опечаток в proxy_pass. Также посмотрите логи Nginx: sudo tail -f /var/log/nginx/error.log.

Я не могу получить SSL-сертификат от Let's Encrypt.

Убедитесь, что ваш домен корректно указывает на IP-адрес вашего VPS (проверьте A-запись в DNS). Убедитесь, что порты 80 и 443 открыты в вашем брандмауэре (sudo ufw status). Временно отключите Nginx или убедитесь, что Certbot может использовать его для проверки домена. Проверьте логи Certbot, если они доступны.

Odoo очень медленно работает. Как оптимизировать?

Проверьте, сколько оперативной памяти доступно (free -h). Odoo может быть требователен к RAM. Увеличьте количество воркеров в odoo.conf (workers = (2 * CPU_cores) + 1) и перезапустите Odoo. Убедитесь, что диск SSD или NVMe. Рассмотрите оптимизацию PostgreSQL (настройка postgresql.conf, например, shared_buffers, work_mem). Убедитесь, что Odoo не запущен в режиме отладки (--dev флаг или workers=0).

Какой VPS-конфиг минимально подойдёт?

Для одного-двух пользователей с базовыми модулями Odoo минимальные требования составят 1 vCPU, 2 ГБ RAM и 40 ГБ SSD. Однако для более комфортной работы и возможности роста рекомендуется начинать с 2 vCPU, 4 ГБ RAM и 80 ГБ NVMe SSD. Это обеспечит лучший отклик системы и запас для будущих расширений.

Что выбрать — VPS или dedicated для этой задачи?

Для большинства малых и средних предприятий VPS является оптимальным выбором, предлагая хороший баланс стоимости, производительности и гибкости. Dedicated-серверы становятся необходимы при очень высоких нагрузках (сотни активных пользователей), строгих требованиях к гарантированной производительности без "соседей", необходимости в специфическом оборудовании (например, RAID-массивы) или огромных объемах данных. Если вы только начинаете с Odoo или ваша команда не превышает 50-70 пользователей, VPS, скорее всего, будет более чем достаточен.

Я хочу установить кастомные модули Odoo. Куда их положить?

Создайте отдельную директорию для кастомных модулей, например, /opt/odoo/custom_addons. Убедитесь, что пользователь odoo имеет к ней доступ. Затем добавьте эту директорию в параметр addons_path в /etc/odoo/odoo.conf, разделив пути запятыми: addons_path = /opt/odoo/odoo17/addons,/opt/odoo/custom_addons. После этого перезапустите Odoo и обновите список приложений в веб-интерфейсе.

Выводы и следующие шаги

Поздравляем! Вы успешно установили и настроили Odoo на вашем VPS-сервере, обеспечив его работоспособность, безопасность с помощью HTTPS и надежное резервное копирование. Теперь у вас есть мощная платформа для управления всеми аспектами вашего бизнеса, полностью под вашим контролем.

Вот несколько практических шагов, куда можно двигаться дальше:

  • Импорт данных и настройка Odoo: Начните с создания базы данных в веб-интерфейсе Odoo, затем импортируйте существующие данные (клиенты, продукты, заказы) и настройте основные модули в соответствии с вашими бизнес-процессами.
  • Мониторинг производительности: Установите инструменты мониторинга (например, Prometheus + Grafana или Netdata) для отслеживания загрузки CPU, RAM, диска и сетевого трафика. Это поможет вам выявлять "узкие места" и планировать масштабирование.
  • Оптимизация производительности PostgreSQL: Для больших баз данных и высокой нагрузки изучите параметры postgresql.conf, такие как shared_buffers, work_mem, effective_cache_size, чтобы тонко настроить производительность базы данных под ваши нужды.
  • Горизонтальное масштабирование: Если одного VPS станет недостаточно, рассмотрите возможность разделения компонентов: отдельный VPS для базы данных PostgreSQL, несколько Odoo-инстансов за балансировщиком нагрузки (Nginx или Haproxy).
  • Разработка кастомных модулей: Изучите документацию Odoo по разработке модулей, чтобы адаптировать систему под уникальные требования вашего бизнеса или интегрировать ее с другими системами.

Был ли этот гайд полезен?

Ваш отзыв помогает нам улучшать гайды.

Поделиться записью:

Отправьте гайд тому, кому он может пригодиться.

Telegram VKVK WhatsApp Facebook LinkedIn XX

установка odoo на vps: postgresql, nginx, let's encrypt и автоматические бэкапы
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.