---
title: "Odoo: Docker Compose і хостинг в один клік"
description: "Odoo — бізнес-програма з відкритим кодом: CRM, продажі, рахунки, склад, вебсайт та інше в одному. Self-hosted Odoo Community в один клік."
---

[← Усі шаблони](https://pethost.dev/uk/templates/) · [Продуктивність](https://pethost.dev/uk/templates/productivity/)

# Задеплойте Odoo в один клік

Бізнес-застосунки в одному: CRM, продажі, рахунки, склад, вебсайт, проєкти та інше

Альтернатива Salesforce, SAP Business One і NetSuite на вашій машині.

[Задеплоїти на Pethost](https://console.pethost.dev/?template=odoo)

## Що таке Odoo?

Odoo — набір бізнес-застосунків з відкритим кодом, які працюють окремо або разом як одна ERP-система. Невелика компанія веде в одній базі даних CRM і воронку продажів, комерційні пропозиції й рахунки, закупівлі й склад, виробництво, проєкти й табелі, співробітників і відпустки, касовий термінал, вебсайт з онлайн-магазином, email-маркетинг, події й живий чат, тож виграна угода стає замовленням, доставкою й рахунком без повторного введення.

Кожен застосунок встановлюється з меню «Додатки», коли він вам знадобиться, а всі користувачі входять в один вебінтерфейс із правами доступу для кожного застосунку. Безкоштовна редакція Odoo Community має застосунки, названі вище; Odoo S.A. продає Odoo Enterprise, де є ще повний бухоблік, «Студія», «Служба підтримки», «Документи», «Підписати», «Планування», «Виїзне обслуговування» і «Знання».

Цей шаблон запускає Odoo Community з офіційного образу Odoo версії 20 разом із базою даних Postgres 18, яку «Новий проєкт» створює поруч, або однією з ваших, яку ви оберете. База даних ініціалізується, а адміністратор отримує пошту й пароль, які ви вводите, ще до того, як Odoo комусь відповість; сторінка керування базами даних лишається закритою, а клієнти реєструються лише за запрошенням. Пошту Odoo надсилає через Resend, SendGrid або Amazon SES — який сервіс ви оберете у вікні «Новий проєкт», а поки сервіс не обрано, не надсилає зовсім.

## Хостинг Odoo на Pethost

1. Ви входите в Pethost — з ключем доступу, через GitHub або Google. Машини ще немає? Ви обираєте тариф, і посилання чекає, доки машина не буде готова.
2. Вікно «Новий проєкт» відкривається на застосунку Odoo. Ви заповнюєте те, що він просить, і натискаєте «Створити проєкт»: **Електронна пошта**, **Пароль адміністратора**.
3. Надсилання пошти необов’язкове: щоб застосунок Odoo надсилав листи, ви обираєте у вікні «Новий проєкт» **Resend**, **SendGrid** або **Amazon SES** і вставляєте те, що видає провайдер.
4. Вікно «Новий проєкт» також створює для застосунку Odoo нову базу даних і підключає її до першого запуску застосунку: **[Postgres](https://pethost.dev/uk/postgres/)** (512 MB). Або ви обираєте одну зі своїх баз **Postgres**: застосунок Odoo отримує в ній окремого користувача й окрему базу даних, яких інші застосунки там не можуть прочитати, а всі застосунки цієї бази потрапляють в один бекап і відновлюються разом.
5. За хвилину-дві Odoo працює за власною адресою з HTTPS. Секрети створюються випадково, а дані потрапляють у щонічний бекап.
6. Це проєкт як будь-який інший: ви або ваш агент можете його змінити, відкотити або відновити.

## Питання про Odoo

**Odoo безкоштовний?**

Odoo Community має відкритий код за ліцензією LGPL-3.0 і безкоштовний для будь-якої кількості користувачів. Odoo Enterprise оплачується за кожного користувача й додає такі застосунки, як повний бухоблік, «Студія», «Служба підтримки» й «Документи».

**Які застосунки є в Odoo Community?**

Серед інших — «CRM», «Продажі», «Виставлення рахунків», «Купівля», «Склад», «Виробництво», «Проект», «Співробітники», «Відпустка», «Касовий термінал», «Веб-сайт», «Електронна комерція», «Email-маркетинг», «Події», «Опитування», «Живий чат» і «Обговорення».

**Odoo чи Salesforce: у чому різниця?**

Salesforce — CRM у хмарі самої Salesforce з оплатою за кожного користувача. CRM в Odoo — один застосунок із багатьох: у тій самій базі даних є ще продажі, рахунки, склад і проєкти, а Odoo Community нічого не коштує.

**Чи можна додати модулі з Odoo App Store?**

Так. Модуль для Odoo 20 Community копіюють у том addons, тобто в /mnt/extra-addons сервісу odoo; потім пункт «Оновити список додатків» у «Додатках», коли ввімкнено режим розробника, показує його для встановлення.

**Чи є в Odoo Community бухоблік?**

У ньому є застосунок «Виставлення рахунків»: рахунки клієнтам і рахунки постачальників, платежі, податки й план рахунків вашої країни. Повний бухоблік із синхронізацією з банком і звіркою, фінансовими звітами та інструментами бухгалтера є в Odoo Enterprise.

**Скільки пам’яті й диска потрібно Odoo?**

Odoo займає близько 150 MB пам’яті поруч із його базою Postgres на 512 MB, а більше — коли ви встановлюєте й використовуєте застосунки; вкладення займають стільки, скільки їхні файли. Вікно «Новий проєкт» дає кожній базі даних застосунку стільки пам’яті, скільки радить шаблон, якщо ви це не зміните: Postgres (512 MB). На Pethost йому вистачить тарифу Starter, і поруч залишиться місце для інших застосунків.

## Odoo: файл Docker Compose

Шаблон — це цей compose.yaml і змінні, які записуються в .env проєкту під час його створення. Pethost запускає файл так, як його написано. Машина записує туди, як застосунок входить у свої бази даних, коли підключає їх. Вікно «Новий проєкт» записує туди вибрані в ньому налаштування пошти або залишає їх порожніми, якщо застосунок не надсилає листів.

**Контейнери:** odoo (odoo:20).

**Бази даних, кожна — окремий проєкт:** [Postgres](https://pethost.dev/uk/postgres/) (512 MB).

**Томи, у щонічному бекапі:** data, addons.

```
services:
  odoo:
    image: odoo:20
    restart: unless-stopped
    environment:
      PGHOST: ${DATABASE_HOST:?reload New project to link a Postgres database, or send link_databases with env_prefix DATABASE}
      PGPORT: ${DATABASE_PORT:?reload New project to link a Postgres database, or send link_databases with env_prefix DATABASE}
      PGUSER: ${DATABASE_USER:?reload New project to link a Postgres database, or send link_databases with env_prefix DATABASE}
      PGPASSWORD: ${DATABASE_PASSWORD:?reload New project to link a Postgres database, or send link_databases with env_prefix DATABASE}
      PGDATABASE: ${DATABASE_NAME:?reload New project to link a Postgres database, or send link_databases with env_prefix DATABASE}
      # Odoo's bus and cron listen on this database: the app's own, as it may reach no other.
      PGDATABASE_SYSTEM: ${DATABASE_NAME:?reload New project to link a Postgres database, or send link_databases with env_prefix DATABASE}
      ADMIN_EMAIL: ${ADMIN_EMAIL}
      ADMIN_PASSWORD: ${ADMIN_PASSWORD}
      MASTER_PASSWORD: ${MASTER_PASSWORD}
      # The mail provider picked in New project, by STARTTLS on its port; with none, Odoo sends no
      # mail until an outgoing mail server is added in its settings.
      SMTP_HOST: ${SMTP_HOST}
      SMTP_PORT: ${SMTP_PORT}
      SMTP_USER: ${SMTP_USER}
      SMTP_PASSWORD: ${SMTP_PASSWORD}
      SMTP_FROM: ${SMTP_FROM}
    # The configuration is written at every start from the lines above: one database, the
    # database manager closed, the proxy's headers trusted, and a pool within the connections the
    # Postgres part gives. A new database is initialised before Odoo answers anyone, with
    # auth_signup, which turns free sign-up on when it is installed: so it is installed here, and
    # sign-up set to "On invitation" in the step that gives Odoo's administrator, whose login Odoo
    # makes "admin" with the password "admin", the email and password of the fields. A start that
    # finds auth_signup not installed, or the login still "admin", does what an earlier start left
    # undone.
    command:
      - bash
      - -c
      - |
        set -e
        {
          echo "[options]"
          echo "addons_path = /mnt/extra-addons"
          echo "data_dir = /var/lib/odoo"
          echo "http_interface = 0.0.0.0"
          echo "admin_passwd = $$MASTER_PASSWORD"
          echo "db_name = $$PGDATABASE"
          echo "dbfilter = ^$$PGDATABASE\$$"
          echo "list_db = False"
          echo "proxy_mode = True"
          echo "db_maxconn = 24"
          echo "max_cron_threads = 1"
          if [ -n "$$SMTP_HOST" ]; then
            echo "smtp_server = $$SMTP_HOST"
            echo "smtp_port = $$SMTP_PORT"
            echo "smtp_ssl = True"
            echo "smtp_user = $$SMTP_USER"
            echo "smtp_password = $$SMTP_PASSWORD"
            echo "email_from = $$SMTP_FROM"
          fi
        } > /etc/odoo/odoo.conf
        wait-for-psql.py --timeout=120
        installed="select 1 from ir_module_module where name = 'auth_signup' and state = 'installed'"
        if [ -z "$$(psql -tAc "$$installed" 2>/dev/null)" ]; then
          psql -c 'create extension if not exists pg_trgm'
          odoo -d "$$PGDATABASE" -i base,auth_signup --stop-after-init --no-http
        fi
        admin="select u.login from res_users u join ir_model_data d on d.res_id = u.id where d.module = 'base' and d.name = 'user_admin'"
        if [ "$$(psql -tAc "$$admin" 2>/dev/null)" = admin ]; then
          odoo shell -d "$$PGDATABASE" --no-http <<'PYTHON'
        import os
        admin = env.ref('base.user_admin')
        admin.write({'login': os.environ['ADMIN_EMAIL'], 'email': os.environ['ADMIN_EMAIL'], 'password': os.environ['ADMIN_PASSWORD']})
        env['ir.config_parameter'].set_str('auth_signup.invitation_scope', 'b2b')
        env.cr.commit()
        PYTHON
        fi
        exec odoo
    volumes:
      # Attachments, sessions and the files of installed apps.
      - data:/var/lib/odoo
      - addons:/mnt/extra-addons
    healthcheck:
      test: ["CMD", "curl", "-fsS", "-o", "/dev/null", "http://127.0.0.1:8069/web/health"]
      interval: 10s
      timeout: 5s
      retries: 30
      start_period: 300s
volumes:
  data:
  addons:
```

[compose.yaml](https://pethost.dev/templates/odoo/compose.yaml)[Відкрити на GitHub](https://github.com/pethost-dev/templates/tree/main/odoo)

## [Ще в категорії «Продуктивність»](https://pethost.dev/uk/templates/productivity/)

- [**Mealie**Менеджер рецептів і планувальник харчування](https://pethost.dev/uk/templates/mealie/)
- [**Ryot**Трекер фільмів, серіалів, книжок, ігор і тренувань](https://pethost.dev/uk/templates/ryot/)
- [**Vikunja**Списки завдань і проєкти, з канбаном і діаграмою Ганта](https://pethost.dev/uk/templates/vikunja/)
- [**Excalidraw**Дошка для діаграм і ескізів від руки зі спільною роботою наживо](https://pethost.dev/uk/templates/excalidraw/)
- [**NocoDB**No-code база даних: таблиці у вигляді електронних таблиць, форми, канбан-дошки й календарі, з API](https://pethost.dev/uk/templates/nocodb/)
- [**PLANKA**Канбан-дошки для проєктів і команд, що оновлюються для всіх у реальному часі](https://pethost.dev/uk/templates/planka/)

Pethost · Stephan Gomer · NIP 1133096755

Pethost

- [Шаблони](https://pethost.dev/uk/templates/)
- [Про нас](https://pethost.dev/about/)
- [Документація](https://pethost.dev/docs/)
- [Блог](https://pethost.dev/uk/blog/)
- [API](https://pethost.dev/docs/api/)
- [CLI](https://pethost.dev/docs/cli/)
- [Плагін](https://github.com/pethost-dev/plugin)
- [Умови](https://pethost.dev/terms/)
- [Конфіденційність](https://pethost.dev/privacy/)
- [Повернення коштів](https://pethost.dev/refunds/)
- [support@pethost.dev](mailto:support@pethost.dev)

Бази даних

- [Postgres](https://pethost.dev/uk/postgres/)

Порівняння

- [Coolify vs Dokploy vs CapRover vs Dokku](https://pethost.dev/uk/blog/coolify-vs-dokploy-vs-caprover-vs-dokku/)
- [Coolify Cloud vs Dokploy Cloud](https://pethost.dev/uk/blog/coolify-cloud-vs-dokploy-cloud/)
- [Ціни Railway vs Render vs Fly.io](https://pethost.dev/uk/blog/railway-vs-render-vs-fly-io-pricing/)
- [Керований хостинг Docker Compose](https://pethost.dev/uk/blog/managed-docker-compose-hosting/)

Альтернативи

- [Альтернативи Railway](https://pethost.dev/uk/blog/railway-alternatives/)
- [Альтернативи Heroku](https://pethost.dev/uk/blog/heroku-alternatives/)
- [Альтернативи Dokploy](https://pethost.dev/uk/blog/dokploy-alternatives/)
- [Альтернативи Coolify](https://pethost.dev/uk/blog/coolify-alternatives/)
- [Альтернативи Render](https://pethost.dev/uk/blog/render-alternatives/)
- [Альтернативи Sliplane](https://pethost.dev/uk/blog/sliplane-alternatives/)
