MAATRIX / Блог / ERPNext на Ubuntu 24.04: пошаговая установка

ERPNext на Ubuntu 24.04: пошаговая установка

MAATRIX

ERPNext — редкий случай, когда open-source ERP не требует ни лицензий, ни внедренцев с многомесячным контрактом: закупки, склад, бухгалтерия, CRM и HR собраны в одном приложении, и вы полностью контролируете, где оно живёт. Разворачивается система через фреймворк Frappe и его инструмент bench, и хотя официальный путь не самый короткий, пройти его на чистой Ubuntu 24.04 можно за час, если понимать, что и зачем вы устанавливаете. Дальше — рабочий маршрут от голого сервера до входа в веб-интерфейс.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Что понадобится и почему именно так

ERPNext — это приложение на Python (фреймворк Frappe), которое опирается на MariaDB как основную СУБД, Redis — для кэша, очередей и веб-сокетов, Node.js — для сборки фронтенда, и supervisor с nginx — для продакшен-режима. Всё это ставится и связывается инструментом bench — CLI-обёрткой Frappe, которая управляет сайтами, приложениями и процессами.

Минимальные системные требования для комфортной работы одного сайта — 2 vCPU, 4 ГБ RAM, 20+ ГБ диска. На 2 ГБ RAM bench соберёт assets с трудом или не соберёт вовсе — сборка фронтенда прожорлива по памяти. Если берёте сервер под ERPNext всерьёз (несколько пользователей, реальные данные), закладывайте 4-8 ГБ и SSD — база с проводками растёт быстро.

Мы ставим на Ubuntu 24.04 LTS с чистого сервера, от пользователя с правами sudo (не под root напрямую — bench сознательно не даёт себя так запускать).

Подготовка системы: пользователь, пакеты, часовой пояс

Создаём отдельного пользователя для bench — это не прихоть, а требование самого инструмента:

adduser frappe
usermod -aG sudo frappe
su - frappe

Дальше — базовые пакеты и часовой пояс (несовпадение времени сервера и ожидаемого ломает некоторые фоновые задачи):

sudo timedatectl set-timezone Europe/Moscow
sudo apt update && sudo apt upgrade -y
sudo apt install -y git python3-dev python3-setuptools python3-pip python3-venv \
  software-properties-common build-essential curl wget \
  libmysqlclient-dev libffi-dev libssl-dev

Python 3.11-3.12 в Ubuntu 24.04 идёт из коробки — отдельно ставить не нужно, но проверьте версию:

python3 --version

Frappe Framework версии 15 (актуальной на конец 2026 года для ERPNext v15) требует Python 3.10+, так что штатный интерпретатор Ubuntu 24.04 подходит без плясок с deadsnakes.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

MariaDB: установка и настройка под Frappe

ERPNext требует MariaDB 10.6+ с определённой конфигурацией — стандартный набор настроек Ubuntu ей не подходит без правок.

sudo apt install -y mariadb-server mariadb-client
sudo mysql_secure_installation

На вопросы mysql_secure_installation отвечайте: удалить анонимных пользователей — да, запретить root-логин удалённо — да, удалить тестовую БД — да, перечитать привилегии — да. Root-пароль для MariaDB запомните — он понадобится при создании каждого нового сайта в bench.

Дальше правим конфиг под требования Frappe — кодировка utf8mb4 и определённый character-set обязательны, иначе установка упадёт на создании таблиц:

sudo tee /etc/mysql/mariadb.conf.d/50-frappe.cnf > /dev/null <<'EOF'
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

[mysql]
default-character-set = utf8mb4
EOF

sudo systemctl restart mariadb

Если позже понадобится сравнить MariaDB с альтернативами или разобраться в тонких местах конфигурации, у нас есть отдельный разбор MariaDB на Ubuntu 24.04 — там подробнее про репликацию и бэкапы, которые для продакшен-ERP тоже пригодятся.

Redis, Node.js и yarn

Redis нужен Frappe для трёх ролей одновременно: кэш, брокер очередей (RQ) и хранилище для веб-сокетов. В Ubuntu 24.04 он ставится из репозитория без версии-костыля:

sudo apt install -y redis-server
sudo systemctl enable --now redis-server

Node.js для сборки фронтенда ERPNext нужен версии 18 LTS — репозиторный пакет Ubuntu 24.04 обычно новее и тоже подходит, но безопаснее поставить через NodeSource, чтобы не зависеть от того, что попадёт в дистрибутив к моменту вашей установки:

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs

sudo npm install -g yarn

Проверка версий:

node -v
yarn -v

Установка bench и создание bench-окружения

bench ставится через pip, но с флагом, обходящим системную защиту Python 3.12 (PEP 668) — иначе pip откажется писать в системные пакеты:

sudo apt install -y python3-pip
pip install --break-system-packages frappe-bench

Если на вашей системе pip ругается на externally-managed-environment и без флага — это ожидаемо для Ubuntu 24.04, флаг выше решает проблему штатно, без ручного удаления EXTERNALLY-MANAGED.

Инициализируем bench-окружение (это создаёт папку frappe-bench с виртуальным окружением Python внутри и клонирует сам фреймворк):

bench init --frappe-branch version-15 frappe-bench
cd frappe-bench

Процесс скачивает Frappe Framework и разворачивает venv — на слабом канале или медленном диске может занять несколько минут, это нормально.

Создание сайта и установка приложения ERPNext

Bench умеет обслуживать несколько сайтов в одном окружении (мультитенантность на уровне приложения), но для начала создаём один:

bench new-site erp.example.ru \
  --db-root-password ВАШ_ROOT_ПАРОЛЬ_MARIADB \
  --admin-password ВАШ_АДМИН_ПАРОЛЬ

Замените erp.example.ru на реальный домен (или укажите произвольное имя, если пока работаете без домена — DNS настроите позже; про это у нас есть отдельная статья про настройку домена и DNS на Ubuntu 24.04). Bench создаст отдельную БД под сайт с логином, сгенерированным автоматически.

Теперь скачиваем и подключаем приложение ERPNext:

bench get-app --branch version-15 erpnext
bench --site erp.example.ru install-app erpnext

Установка erpnext разворачивает схему БД поверх Frappe, накатывает начальные фикстуры (план счетов по умолчанию, роли, отчёты) — на это уходит несколько минут, процесс печатает прогресс по каждой миграции.

Запуск в продакшен-режиме: nginx, supervisor, systemd

По умолчанию bench поднимает встроенный dev-сервер (bench start) — он удобен для проверки, но не годится для реальной работы: без supervisor процессы не переживут перезагрузку сервера, а без nginx перед ними у вас будет открытый порт 8000 без TLS.

Настройка продакшена делается одной командой bench, которая генерирует конфиги supervisor и nginx автоматически:

sudo bench setup production frappe --yes

Команда создаёт unit-файлы под gunicorn (веб-воркеры), worker-процессы очередей (short/long/default), scheduler и конфиг nginx с проксированием на сокет gunicorn. После неё сайт слушает 80-й порт через nginx, а все процессы Frappe управляются supervisor и поднимаются автоматически при рестарте сервера.

Проверить, что всё живо:

sudo supervisorctl status
sudo systemctl status nginx

Для HTTPS дальше используется обычный certbot поверх уже настроенного nginx — конфиг bench не мешает этому шагу:

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d erp.example.ru

Если сомневаетесь, certbot или acme.sh лучше подходят для вашего случая, у нас есть сравнение — certbot или acme.sh: что выбрать. Отдельно закройте лишние порты фаерволом — 8000/9000 (внутренние порты bench) снаружи торчать не должны, только 80/443 через nginx; базовая настройка описана в статье про UFW на Ubuntu 24.04.

Что проверить после установки и типичные грабли

После первого входа (логин Administrator, пароль — тот, что задали флагом --admin-password) пройдите мастер настройки: страна, валюта, план счетов, часовой пояс компании. Это заполнит базовые справочники, без которых модули учёта и закупок работать не начнут.

Частые проблемы на установке ERPNext на Ubuntu 24.04, с которыми реально сталкиваются:

  • Сборка assets падает по памяти (yarn install или bench build убиваются OOM killer'ом) — типично на серверах с 2 ГБ RAM. Решение: временный swap-файл на время установки (fallocate -l 2G /swapfile && mkswap /swapfile && swapon /swapfile) или сразу брать сервер с 4+ ГБ.
  • Ошибка character set при создании сайта — если пропустили шаг с конфигом MariaDB (50-frappe.cnf), bench new-site падает на создании таблиц с несовместимой кодировкой. Проверьте, что MariaDB перезапущена после правки конфига.
  • ERR_TOO_MANY_REDIRECTS в браузере — обычно значит, что certbot настроил редирект на HTTPS, но сайт в Frappe (site_config.json) считает себя за другим протоколом. Проверьте bench --site erp.example.ru set-config и хост в nginx-конфиге.
  • Scheduler не выполняет фоновые задачи (email-уведомления, автоматизации не срабатывают) — проверьте, что scheduler включён: bench --site erp.example.ru scheduler enable и что процесс frappe-bench-workers жив в supervisorctl status.
  • Обновление ERPNext делается через bench update из папки frappe-bench — команда сама подтягивает новые версии Frappe и ERPNext, прогоняет миграции и пересобирает assets. Перед мажорным обновлением обязательно снимите бэкап (bench --site erp.example.ru backup --with-files).

Для наблюдения за состоянием сервера, на котором крутится продакшен ERPNext (память, диск, доступность), пригодится связка из статьи про Zabbix на Ubuntu 24.04 — ERP-система, которая легла ночью и никто не заметил, обходится бизнесу дороже, чем настройка мониторинга.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

Частые вопросы

Можно ли поставить ERPNext через Docker вместо bench?

Да, у Frappe есть официальные Docker-образы, и это заметно быстрее в развёртывании. Но ручная установка через bench даёт больше контроля над апдейтами и удобнее для отладки на старте — если вы не уверены в Docker-варианте, начните с bench, миграция на контейнеры возможна позже.

Сколько пользователей выдержит сервер на 4 ГБ RAM?

Впрямую зависит от активности и объёма данных, но как ориентир — небольшая команда из 5-15 человек с обычной нагрузкой (заказы, склад, базовая бухгалтерия) на 4 ГБ работает нормально. Для 30+ активных пользователей закладывайте 8 ГБ и мониторьте потребление через htop в первые недели.

Нужен ли отдельный сервер под БД?

Для старта — нет, MariaDB прекрасно живёт на одном сервере с приложением. Разносить БД на отдельный инстанс имеет смысл, когда база вырастает до десятков гигабайт или нагрузка на диск становится узким местом.

ERPNext бесплатен полностью или есть платные модули?

Сам код полностью open-source (GPL), без скрытых платных модулей. Платят обычно за хостинг (если не поднимать самостоятельно), кастомную разработку под свои процессы или облачную версию Frappe Cloud — но self-hosted вариант, который мы здесь разворачиваем, не требует никаких лицензий.

Как перенести ERPNext на новый сервер?

Через bench --site name backup --with-files на старом сервере, затем bench new-site на новом с восстановлением из полученного дампа флагом --source_sql_file и переносом папки files/private из бэкапа.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →