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

Отримати VPS arrow_forward
eco Початковий Туторіал

Встановлення Odoo на

calendar_month Jul 19, 2026 schedule 21 хв. читання visibility 29 переглядів
info

Потрібен сервер для цього гайду? Ми пропонуємо виділені сервери та VPS у 50+ країнах з миттєвим налаштуванням.

Потрібен сервер для цього гайду?

Розгорніть VPS або виділений сервер за хвилини.

Встановлення Odoo на VPS: PostgreSQL, Nginx, Let's Encrypt та автоматичні резервні копії

TL;DR

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

  • Повне встановлення 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 перед оновленням та тестуйте на стейджингу.

Усунення несправностей + 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 з розробки модулів, щоб адаптувати систему під унікальні вимоги вашого бізнесу або інтегрувати її з іншими системами.

Чи був цей гайд корисним?

Ваш відгук допомагає нам покращувати гайди.

Share this post:

Надішліть гайд тому, кому він може стати в пригоді.

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.