Локальный запуск без Docker (PostgreSQL демоном)
Этот гайд описывает полный локальный запуск проекта с:
- локально собранным API (без Docker);
- PostgreSQL демоном на машине;
- runtime-backend, runtime-host и builder-web.
Инструкция ориентирована на Linux (Ubuntu/Debian). Для macOS/Windows шаги похожи, но команды установки пакетов отличаются.
1. Предварительные требования
1.1. Node.js + pnpm
Рекомендуемая версия Node.js указана в репозитории. Пример установки через nvm:
curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install 20
nvm use 20
corepack enable
corepack prepare pnpm@latest --activate
Проверка:
node -v
pnpm -v
1.2. Git
sudo apt update
sudo apt install -y git
2. Установка PostgreSQL
sudo apt update
sudo apt install -y postgresql postgresql-contrib
sudo systemctl enable postgresql
sudo systemctl start postgresql
Проверка статуса:
sudo systemctl status postgresql
3. Создание пользователей и баз
Ниже пример с двумя пользователями:
lowcode_userдля API;runtime_backendдля preview‑DB.
3.1. Создать пользователя и базы для API
sudo -u postgres psql <<'SQL'
CREATE USER lowcode_user WITH PASSWORD 'lowcode_password';
CREATE DATABASE lowcode OWNER lowcode_user;
CREATE DATABASE lowcode_shadow OWNER lowcode_user;
SQL
3.2. Создать пользователя и базу для preview‑DB
sudo -u postgres psql <<'SQL'
CREATE USER runtime_backend WITH PASSWORD 'password';
CREATE DATABASE preview_db OWNER runtime_backend;
SQL
Проверка подключения:
psql postgresql://lowcode_user:lowcode_password@localhost:5432/lowcode -c "\dt"
psql postgresql://runtime_backend:password@localhost:5432/preview_db -c "\dt"
4. Конфигурация .env
4.1. API
Файл: apps/api/.env
Обязательно:
DATABASE_URL=postgresql://lowcode_user:lowcode_password@localhost:5432/lowcode
SHADOW_DATABASE_URL=postgresql://lowcode_user:lowcode_password@localhost:5432/lowcode_shadow
JWT_ACCESS_SECRET=change-me-access
JWT_REFRESH_SECRET=change-me-refresh
SERVICE_AUTH_ID=runtime-backend
SERVICE_AUTH_SECRET=dev-service-secret
SERVICE_AUTH_JWT_SECRET=dev-service-jwt-secret
PROJECT_SECRETS_KEY=<случайный_64_hex>
Где взять PROJECT_SECRETS_KEY
Сгенерируйте 32 байта в hex:
openssl rand -hex 32
S3/Storage
Для работы с attachments нужен S3‑совместимый storage. Можно использовать MinIO локально или любой внешний S3. Минимальные поля:
S3_ENDPOINT=...
S3_BUCKET=...
S3_ACCESS_KEY_ID=...
S3_SECRET_ACCESS_KEY=...
S3_REGION=...
Если storage не настроен, загрузки файлов и attachments работать не будут.
4.2. runtime-backend
Файл: apps/runtime-backend/.env (можно скопировать из .env.example).
Ключевые поля:
API_BASE_URL=http://localhost:3000
DATABASE_URL=postgres://runtime_backend:password@localhost:5432/preview_db
RUNTIME_BACKEND_AUTH_TOKEN=dev-runtime-backend-token
API_SERVICE_ID=runtime-backend
API_SERVICE_SECRET=dev-service-secret
API_SERVICE_*должны совпадать сSERVICE_AUTH_*из API.
4.3. runtime-host
Файл: apps/runtime-host/.env
VITE_API_BASE_URL=http://localhost:3000
VITE_RUNTIME_BACKEND_URL=http://localhost:3001
VITE_RUNTIME_BACKEND_TOKEN=dev-runtime-backend-token
VITE_RUNTIME_BACKEND_TOKENдолжен совпадать сRUNTIME_BACKEND_AUTH_TOKEN.
4.4. builder-web
Файл: apps/builder-web/.env.development
VITE_API_BASE_URL="http://localhost:3000"
VITE_RUNTIME_HOST_BASE_URL="http://localhost:4174"
5. Установка зависимостей
Из корня репозитория:
pnpm install
6. Миграции Prisma (API)
pnpm --filter @lowcode/api prisma:generate
pnpm --filter @lowcode/api prisma:migrate
Prisma
migrate devиспользует shadow‑DB. ПоэтомуSHADOW_DATABASE_URLдолжен быть рабочим.
Если не хотите shadow‑DB — можно выполнить:
pnpm --filter @lowcode/api exec prisma migrate deploy --schema prisma/schema.prisma
7. Запуск сервисов
7.1. API
pnpm --filter @lowcode/api dev
API будет доступен на http://localhost:3000.
7.2. runtime-backend
pnpm --filter @lowcode/runtime-backend dev
runtime-backend будет доступен на http://localhost:3001.
7.3. runtime-host
pnpm --filter @lowcode/runtime-host dev
runtime-host по умолчанию доступен на http://localhost:4174.
7.4. builder-web
pnpm --filter @lowcode/builder-web dev
builder-web по умолчанию доступен на http://localhost:5173.
8. Проверка работоспособности
- Открой
builder-web(5173), авторизуйся. - Создай проект, добавь страницу.
- Нажми Open in runtime-host — откроется runtime-host.
- В runtime-host проверь, что:
- статус
ready; - dataSources выполняются через runtime-backend;
- preview‑DB подключена.
- статус
- Нажми Export project и скачай архив.
9. Частые ошибки
9.1. Prisma просит reset базы
Обычно это означает drift между миграциями и фактической схемой. Самый быстрый вариант без потери данных — использовать:
pnpm --filter @lowcode/api exec prisma migrate deploy --schema prisma/schema.prisma
9.2. runtime-host не может вызвать runtime-backend
Проверь:
VITE_RUNTIME_BACKEND_URLVITE_RUNTIME_BACKEND_TOKENRUNTIME_BACKEND_AUTH_TOKEN
Токены должны совпадать.
9.3. runtime-backend пишет DATABASE_URL is not configured
Проверь apps/runtime-backend/.env и перезапусти сервис.
10. Полезные команды
pnpm --filter @lowcode/api prisma:generate
pnpm --filter @lowcode/api prisma:migrate
pnpm --filter @lowcode/api dev
pnpm --filter @lowcode/runtime-backend dev
pnpm --filter @lowcode/runtime-host dev
pnpm --filter @lowcode/builder-web dev