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

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

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

Бизнес-приложения в одной системе: CRM, продажи, выставление счетов, склад, сайт, проекты и многое другое

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

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

## Что такое Odoo?

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

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

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

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

1. Вы входите в Pethost — с passkey, через GitHub или Google. Машины еще нет? Вы выбираете тариф, и ссылка ждет, пока машина не будет готова.
2. Окно «Новый проект» открывается на приложении Odoo. Вы заполняете то, что оно просит, и нажимаете «Создать проект»: **Электронная почта**, **Пароль администратора**.
3. Отправка почты необязательна: чтобы приложение Odoo отправляло письма, вы выбираете в окне «Новый проект» **Resend**, **SendGrid** или **Amazon SES** и вставляете то, что выдает провайдер.
4. Окно «Новый проект» также создает для приложения Odoo новую базу данных и подключает ее до первого запуска приложения: **[Postgres](https://pethost.dev/ru/postgres/)** (512 MB). Или вы выбираете одну из своих баз **Postgres**: приложение Odoo получает в ней отдельного пользователя и отдельную базу данных, которые другие приложения там не могут прочитать, а все приложения этой базы попадают в один бэкап и восстанавливаются вместе.
5. Через минуту-две Odoo работает по своему адресу с HTTPS. Секреты создаются случайно, а данные попадают в ночной бэкап.
6. Это проект как любой другой: вы или ваш агент можете его изменить, откатить или восстановить.

## Вопросы про Odoo

**Odoo бесплатный?**

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

**Какие приложения есть в Odoo Community?**

Среди прочих CRM, «Продажи», «Выставление счетов», «Покупка», «Склад», «Производство», «Проект», «Сотрудники», «Отпуск», «Торговая точка», «Сайт», eCommerce, «Рекламная рассылка», «События», «Опросы», «Живой чат» и «Обсуждения».

**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/ru/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/ru/templates/productivity/)

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

Pethost · Stephan Gomer · NIP 1133096755

Pethost

- [Шаблоны](https://pethost.dev/ru/templates/)
- [О нас](https://pethost.dev/about/)
- [Документация](https://pethost.dev/docs/)
- [Блог](https://pethost.dev/ru/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/ru/postgres/)

Сравнения

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

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

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