Odoo 19 в Docker: Повний гайд встановлення на Ubuntu 24.04 (Community & Enterprise)
Вступ
Розгортання ERP-системи часто здається складним завданням, але використання контейнеризації перетворює цей процес на чіткий алгоритм. У цьому посібнику ми розберемо, як підняти Odoo 19 на Ubuntu Server 24.04.
Головна особливість цього методу – універсальність. Ми відразу закладаємо архітектуру, яка дозволяє працювати на безкоштовній Community-версії, але дає змогу миттєво перейти на Enterprise-версію простим копіюванням модулів. Жодних змін у конфігах “на льоту” – тільки чиста робота з контейнерами та автоматичний SSL через Caddy.
Технічний стек, на якому перевірено роботу даної інструкції:
- ОС: Ubuntu 24.04 LTS (оскільки це установка в Docker, то даний метод застосовується і в інших Linux дистрибутивах)
- Контейнеризація: Docker 29.1.5 + Docker Compose
- Веб-сервер: Caddy (автоматичний HTTPS)
- База даних: PostgreSQL 18
- Віртуальна машина: 2 vCPU, 4 ГБ оперативної пам’яті, 40 ГБ NVMe
Крок 0: Встановлення Docker
Встановіть Docker з офіційного репозиторію:
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh
Додайте користувача до групи docker
sudo usermod -aG docker $USER newgrp docker
Увімкніть та запустіть Docker:
sudo systemctl enable docker sudo systemctl start docker
Перевірте його роботу:
docker ps
Крок 1: Підготовка структури
Створіть робочу директорію та папки:
mkdir odoo-stack && cd odoo-stack mkdir -p addons enterprise
Крок 2: Створіть docker-compose.yml
Створити новий docker compose файл:
nano docker-compose.yml
Вставте конфігурацію в цей файл (замініть у db environment та в Odoo depends_on “odoo_secure_password” на ваш пароль):
services:
db:
image: postgres:18
environment:
- POSTGRES_DB=postgres
- POSTGRES_PASSWORD=odoo_secure_password
- POSTGRES_USER=odoo
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- odoo-db-data:/var/lib/postgresql/data/pgdata
restart: unless-stopped
odoo:
image: odoo:19.0
depends_on:
- db
volumes:
- odoo-web-data:/var/lib/odoo
- ./addons:/mnt/extra-addons
- ./enterprise:/mnt/enterprise-addons
environment:
- HOST=db
- USER=odoo
- PASSWORD=odoo_secure_password
command: >
--addons-path=/usr/lib/python3/dist-packages/odoo/addons,/mnt/enterprise-addons,/mnt/extra-addons
--proxy-mode
restart: unless-stopped
caddy:
image: caddy:latest
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy-data:/data
restart: unless-stopped
volumes:
odoo-web-data:
odoo-db-data:
caddy-data:
Крок 3: Створення Caddyfile
Створіть конфігураційний файл Caddy командою:
nano Caddyfile
Вставте наведену нижче конфігурацію (замініть :80 на свій домен для автоматичного SSL):
# Replace :80 with YOUR_DOMAIN for automatic SSL
:80 {
# Increase client max body size for file uploads
request_body {
max_size 300MB
}
# Longpolling for chats and notifications
reverse_proxy /longpolling/* odoo:8072 {
header_up X-Forwarded-Host {host}
header_up X-Forwarded-Proto {scheme}
}
# Main traffic
reverse_proxy odoo:8069 {
header_up X-Forwarded-Host {host}
header_up X-Forwarded-Proto {scheme}
}
}
Крок 4: Запуск стеку
Запустіть стек:
docker compose up -d
Перевірте статус (всі 3 контейнери мають бути "Up"):
docker compose ps
Подивіться логи (не повинно бути помилок):
docker compose logs odoo
Крок 5: Перший вхід
Відкрийте у браузері:
- За IP: http://IP_ВАШОГО_СЕРВЕРА
- За доменом: https://ВАШ_ДОМЕН (Якщо він вже був налаштований у Caddyfile)
Заповніть форму створення бази даних:
- Master Password: Майстер пароль буде запропоновано під час першого входу (зафіксуйте цей пароль, він дуже важливий)
- Database Name: Наприклад, mycompany
- Email: Ваш email, до якого ви маєте доступ – цей email буде логіном у систему
- Password: Це буде ваш пароль для входу до системи
- Language: Виберіть потрібний
- Country: Виберіть потрібну країну
- Demo Data: Якщо потрібна чиста база, то не варто відзначати чекбокс
Натисніть Create database та дочекайтеся її створення (1-2 хвилини).

Перехід з Community на Enterprise
Щоб перейти з версії Community на Enterprise, просто розмістити їх у відведеній стандартній директорії.
Крок 1: Отримати Enterprise-модулі (за підпискою Odoo)
Крок 2: Розпакувати їх у папку ./enterprise/
Крок 3: Перезапустити контейнер:
docker compose restart odoo
Крок 4. Відкрийте браузер, перейдіть до Settings → General Settings і введіть код підписки Enterprise у поле Publisher Warranty Code. Натисніть Save, щоб активувати ліцензію.
Крок 5. Перейдіть до Apps → Update Apps List і встановіть потрібні модулі Enterprise.
Налаштування брандмауера
Якщо використовується ufw:
sudo ufw allow ssh/tcp && \ sudo ufw allow 80/tcp && \ sudo ufw allow 443/tcp && \ sudo ufw default deny incoming && \ sudo ufw default allow outgoing && \ sudo ufw --force enable
Корисні команди
Зупинити все:
docker compose down
Перезапустити тільки Odoo:
docker compose restart odoo
Переглянути логи:
docker compose logs -f odoo docker compose logs -f db docker compose logs -f caddy
Бекап бази даних:
docker compose exec db pg_dumpall -U odoo > backup_$(date +%Y%m%d).sql
Відновити базу:
cat backup_20240125.sql | docker compose exec -T db psql -U odoo
Повністю видалити все (обережно!):
docker compose down -v rm -rf addons enterprise Caddyfile
Для роботи з доменним ім'ям
Щоб отримати автоматичний SSL-сертифікат від Let's Encrypt:
Крок 1: Вкажіть A-запис у DNS: ВАШ_ДОМЕН → IP сервера
Крок 2: Замініть у Caddyfile рядок :80 на ВАШ_ДОМЕН
Перезапусти Caddy:
docker compose restart caddy
Caddy автоматично отримає SSL-сертифікат
Крок 3: Відкрийте Oddo за адресою https://ВАШ_ДОМЕН
Можна перевірити отримання сертифіката:
docker compose logs caddy | grep certificate