Установка Odoo 19 у Docker на Ubuntu 24.04: Повний гайд (Community & Enterprise) | INTROSERV
EUR
european

EUR

usa

USD

Ukraine Ua
Ex. VAT Ex. VAT 0%

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


VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA