Документация Формулы
Разделы документации

Руководство

Обзор руководства

Бизнес-процессы и задачи

Бизнес-процессы и задачи

ВВЕДЕНИЕ

Установка и обновление

«Формула» ставится одной командой. Установщик сам поднимает нужное окружение (Node.js, pnpm и настоящий MySQL), скачивает дистрибутив, раскладывает его в отдельную папку, создаёт базу данных, заводит системную службу с автозапуском и сразу запускает платформу — останется открыть напечатанный адрес.

Для одиночной установки есть два установщика:

ОСУстановка
Linuxcurl -sSL https://getformula.ru/install.sh | bash
Windows 10/11irm https://getformula.ru/install.ps1 | iex

# Что понадобится

ТребованиеДетали
Операционная системаLinux: Debian/Ubuntu, Fedora, RHEL-совместимые (CentOS Stream, Rocky, AlmaLinux, Oracle, EL7–10), Arch и производные, openSUSE Leap/Tumbleweed. Windows 10/11 (x64). Отдельного установщика для macOS нет — на macOS разворачивают вручную
ПраваLinux — root (скрипт сам повышает права через sudo); Windows — администратор (скрипт сам перезапускается через UAC)
Node.js24 LTS — установщик поставит сам, если его нет (Linux — через nvm, Windows — официальный MSI)
pnpmставится автоматически (через corepack; если не выйдет — npm install -g pnpm)
MySQLименно MySQL 8.x, не MariaDB. Установщик ставит его с официального источника; если MySQL уже стоял, спросит пароль root и ничего не сбросит
Портпервый свободный начиная с 3000. У каждого экземпляра на машине — свой порт
Серийный ключформат FORM-XXXX-XXXX-XXXX-XXXX, получить на getformula.ru
Интернетдля скачивания дистрибутива с getformula.ru

Несколько экземпляров на одной машине. Ставить можно сколько угодно копий: у каждой своя папка, свой порт, своя база данных и своя служба. Экземпляры не мешают друг другу, а список установленных хранится в реестре (Linux — /etc/formula/*.cfg, Windows — C:\ProgramData\Formula\*.cfg).

# Установка на Linux

bash
curl -sSL https://getformula.ru/install.sh | bash

Запускать sudo заранее не нужно — скрипт сам запросит повышение прав. При запуске «через пайп» он сначала перекачивает себя во временный файл, поэтому установка по ссылке и по локальному файлу работает одинаково.

# Что спросит установщик

  1. Пароль root MySQL — только если MySQL стоял на машине раньше и скрипт не смог войти без пароля. Пароль останется прежним и попадёт в .env.local; если в нём есть символы, небезопасные для файла .env (пробел, ', ", \, #), скрипт попросит задать новый пароль.
  2. Имя экземпляра (по умолчанию formula). Из него получаются папка /opt/formula/<имя>, имя базы данных и имя службы. Допустимы латиница, цифры, - и _.
  3. Лицензионный ключ FORM-XXXX-XXXX-XXXX-XXXX.

Порт, каталог и параметры базы отдельно не спрашиваются: порт подбирается автоматически, а база называется так же, как экземпляр (символы кроме букв, цифр и _ заменяются на _).

# Что установщик делает по шагам

  1. Определяет дистрибутив и пакетный менеджер (apt / dnf / yum / pacman / zypper), доставляет базовые пакеты (curl, unzip, openssl, компилятор и т. д.).
  2. Ставит Node.js 24 LTS через nvm и pnpm через corepack.
  3. Ставит MySQL:
  • Debian/Ubuntu — официальный APT-репозиторий dev.mysql.com;
  • Fedora — пакеты community-mysql(-server);
  • RHEL-совместимые (EL7–10) — официальный YUM/DNF-репозиторий dev.mysql.com (8.0 LTS для EL7–9, 8.4 LTS для EL10);
  • Arch/openSUSE — официальный generic-бинарник Oracle в /opt/mysql (в этих репозиториях настоящего MySQL нет, только MariaDB). Затем настраивает доступ root@localhost по TCP так, как его будет использовать приложение.
  1. Скачивает https://getformula.ru/release.zip и распаковывает в /opt/formula/<имя>.
  2. Выполняет pnpm install. Если pnpm блокирует build-скрипты зависимостей, установщик сам их разрешает и повторяет установку.
  3. Пишет <папка>/.env.local, создаёт базу данных <имя> (utf8mb4) и регистрирует экземпляр в /etc/formula/<имя>.cfg.
  4. Создаёт юнит systemd formula-<имя>.service в /etc/systemd/system/, включает автозапуск, запускает службу и ждёт её HTTP-ответа.
  5. Печатает итог и адрес входа, например http://localhost:3000.

Схему и таблицы базы создаёт само приложение при первом запуске, там же появляется учётная запись Администратор с пустым паролем — см. Первый вход.

# Установка на Windows

powershell
irm https://getformula.ru/install.ps1 | iex

Установщик делает то же, что и на Linux: проверяет/ставит Node.js 24.x (официальный MSI с nodejs.org), pnpm (через npm) и MySQL (официальный дистрибутив dev.mysql.com), настраивает доступ root, спрашивает имя экземпляра и лицензионный ключ, подбирает свободный порт, скачивает и распаковывает релиз в C:\Formula\<имя>, выполняет pnpm install, создаёт .env.local, базу данных и службу Windows Formula-<имя> с автозапуском.

# Повторный запуск: управление экземплярами

На машине, где уже есть установленные экземпляры, установщик показывает меню.

Linux:

1) установить новый экземпляр
2) обновить существующий
3) удалить существующий (если он последний — предложу снести и зависимости)
4) удалить ВСЁ: экземпляры + Node.js, pnpm, MySQL (чистая система)
5) выйти

Windows: меню строится по списку экземпляров — «Установить новый», затем «Обновить «<имя>»» и «Удалить «<имя>»» для каждого, затем «Удалить ВСЁ» и «Выход».

ДействиеЧто происходит
ОбновитьЗаново скачивает свежий релиз, сохраняет .env.local, обновляет зависимости, перезаписывает службу и перезапускает её. MySQL и .env.local не трогает
УдалитьОтдельно спрашивает, удалять ли базу данных (по умолчанию — нет). Останавливает и удаляет службу, папку и запись реестра. Если экземпляр последний, предлагает снести и зависимости
Удалить ВСЁСносит все экземпляры, затем Node.js/nvm, pnpm, MySQL вместе со всеми его базами, каталоги приложения и логи. Операция необратима

# Где что лежит

ЧтоLinuxWindows
Папка экземпляра (код и .env.local)/opt/formula/<имя>C:\Formula\<имя>
Реестр экземпляров/etc/formula/<имя>.cfgC:\ProgramData\Formula\<имя>.cfg
Служба/etc/systemd/system/formula-<имя>.serviceслужба Formula-<имя>
Журнал приложения/var/log/formula-<имя>.log<папка экземпляра>\service.log
База данныхMySQL, имя = имя экземпляраMySQL, имя = имя экземпляра

В файле реестра (.cfg) хранятся только служебные сведения: имя, папка, путь к .env.local, URL релиза, имя базы, порт, версия и даты установки/обновления. Секретов в нём нет — пароли и ключи лежат в .env.local.

# Что записывается в .env.local

ПеременнаяНазначение
DB_HOSTхост MySQL (localhost)
DB_USERпользователь MySQL (root)
DB_PASSWORDпароль root MySQL
DB_DATABASEимя базы данных экземпляра
JWT_SECRETсекрет подписи сессий (генерируется установщиком)
SERIAL_KEYлицензионный ключ

На Linux файл получает права 600. Дополнительно в него можно вписать DB_CLEAR_RECOVERY_PASSWORD — пароль для аварийных операций с базой на экране входа (по умолчанию db_clear_recovery_password, см. Первый вход).

# Обслуживание службы

Linux:

bash
systemctl status formula-<имя>     # состояние
journalctl -u formula-<имя> -f     # журнал
systemctl restart formula-<имя>    # перезапуск

Windows:

powershell
Get-Service Formula-<имя>
sc.exe stop  Formula-<имя>
sc.exe start Formula-<имя>
Get-Content -Wait "C:\Formula\<имя>\service.log"

# Обновление платформы

Запустите установщик снова и выберите пункт «обновить существующий» — или неинтерактивно:

bash
FORMULA_ACTION=update FORMULA_INSTANCE=<имя> curl -sSL https://getformula.ru/install.sh | bash

Установщик скачает свежий релиз, сохранит .env.local, обновит зависимости, перезапишет службу и перезапустит её.

Если браузер держит старую версию приложения, экран входа покажет блок «Доступно обновление платформы» с кнопкой Выполнить обновление — она сбросит кэш и перезагрузит приложение.

# Удаление

bash
# Linux: удалить экземпляр (база данных остаётся)
FORMULA_ACTION=delete FORMULA_INSTANCE="<имя>" FORMULA_CONFIRM=yes \
  curl -sSL https://getformula.ru/install.sh | bash

# удалить экземпляр вместе с его базой данных
FORMULA_ACTION=delete FORMULA_INSTANCE="<имя>" FORMULA_CONFIRM=yes FORMULA_DROP_DB=yes \
  curl -sSL https://getformula.ru/install.sh | bash

# полная очистка машины: экземпляры + Node.js, pnpm, MySQL со всеми базами
FORMULA_ACTION=purge FORMULA_CONFIRM=yes curl -sSL https://getformula.ru/install.sh | bash

На Windows — -Action delete -Instance <имя> -Yes (при необходимости добавить -DropDb и/или -PurgeDeps). Полная очистка: -Action purge -Yes.

Осторожно

Полная очистка сносит все базы данных на этом MySQL, включая базы других приложений. Перед ней сделайте резервную копию — см. Обслуживание БД.

# Дальше