Установка
Docker или вручную, оба способа рабочие
Собрать образ Docker и не думать про версии Node или развернуть всё руками на сервере. Разницы в поведении нет, выбирайте по привычке.
Docker
Забрать исходники
git clone https://github.com/MCXTeam/UnicoreCMS.git
cd UnicoreCMS
cp .env.example .envЗаполнить .env
Минимум, без чего не стартует: BASEURL, API_BASEURL, DATABASE_NAME, JWT_KEY. Плюс блок MYSQL_* — из него поднимется контейнер с базой.
Обязательно поменяйте JWT_KEY и ENCRYPTION_KEY, значения из примера не годятся:
openssl rand -hex 32Все переменные разобраны на отдельной странице.
Поднять
docker compose --profile prod up -d --buildПервая сборка долгая, внутри ставятся зависимости всех четырёх пакетов и собираются оба фронта. Последующие занимают минуты.
Профили в docker-compose.yml:
| Профиль | Что поднимает |
|---|---|
prod | Само приложение (все три процесса в одном контейнере) |
nginx | Реверс-прокси с раскладкой по доменам из CLIENT_HOST, ADMIN_HOST, SERVER_HOST |
dev | phpMyAdmin на :8081 |
MariaDB поднимается всегда, профиль ей не нужен.
Свой прокси уже есть
Если снаружи уже стоит nginx или Traefik, профиль nginx не включайте, иначе контейнер займёт порты 80 и 443. Проксируйте сразу на CLIENT_PORT, ADMIN_PORT и BACKEND_PORT.
Создать таблицы
docker compose exec app pnpm run syncКоманда синхронизирует схему базы с сущностями. Дальше идёт первый запуск.
Вручную
Node и pnpm
Нужен Node 22–24, рекомендуется 22 (версия зафиксирована в .nvmrc). pnpm ставится через corepack:
corepack enable
corepack prepare pnpm@11.20.0 --activateВерсию pnpm держит поле packageManager в корневом package.json, так что вручную следить за ней не придётся: corepack подставит нужную сам.
Установка в CI
Начиная с одиннадцатой версии pnpm спрашивает подтверждение, когда собирается снести node_modules, и без терминала падает с ERR_PNPM_ABORTED_REMOVE_MODULES_DIR_NO_TTY. В контейнерах и на сборочных агентах ставьте переменную CI=true — в Dockerfile проекта она уже прописана.
База данных
Создайте базу и пользователя. Для MySQL/MariaDB:
CREATE DATABASE unicore CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'unicore'@'localhost' IDENTIFIED BY 'пароль';
GRANT ALL PRIVILEGES ON unicore.* TO 'unicore'@'localhost';Реквизиты положите в DATABASE_* в .env.
Зависимости, сборка, схема
cp .env.example .env
# отредактировать .env
pnpm run bootboot прогоняет три шага подряд: pnpm install, сборку общего пакета и сервера, синхронизацию схемы базы. Фронты он не собирает, их соберите отдельно:
pnpm run build:client
pnpm run build:adminЗапуск
pnpm run startСтартуют сразу три процесса. На проде запускайте их через pm2, в корне уже лежит ecosystem.config.js:
pm2 start ecosystem.config.js
pm2 saveРазработка
pnpm run devОбщий пакет собирается один раз, дальше поднимаются все три приложения в watch-режиме. Сервер слушает :5000, сайт :3000, админка :4000, если порты не переопределяли.
Тестовые данные
Поставьте DEV_SEED=1 в .env и выполните pnpm run seed — в базу насыпется 250 фейковых игроков, серверы, новости и подарки. На боевой базе так делать не надо.