Развёртывание
Разработка (Docker Compose)
Идущий в комплекте docker-compose.yml поднимает PostgreSQL и Redis:
docker compose up -d
Сервисы:
agentcore_postgres— PostgreSQL 16 + pgvector (порт 5432);agentcore_redis— Redis 7 Alpine (порт 6379).
У обоих сервисов есть healthcheck и persistent volumes.
Dev-контейнер
Dockerfile рассчитан только на разработку:
docker build -t agentcore .
docker run -p 3000:3000 --env-file .env agentcore
Запустит npm run dev с hot reload.
Production
Автоматический production-деплой настроен в .github/workflows/deploy.yml. На каждый push в main GitHub Actions подключается по SSH к AX43, тянет репозиторий, накатывает Prisma-миграции, собирает проект, перезапускает PM2-приложение kalheon-api и прогоняет smoke-тесты по health и OpenAPI-эндпоинтам.
Подробный runbook Kalheon — в drop/kalheon/DEPLOYMENT.md.
Требования
- Node.js 22+
- PostgreSQL 16 с расширением pgvector
- Redis 7+
- OpenAI API-ключ
Сборка
npm ci
npx prisma generate
npm run build
База данных
DATABASE_URL=<production-url> npx prisma migrate deploy
Запуск
NODE_ENV=production npm start
Или через PM2:
pm2 start dist/server.js --name agentcore
Production checklist
- Поставить
NODE_ENV=production. - Сгенерировать сильный
JWT_SECRET(32+ случайных символа). - Сгенерировать
PII_ENCRYPTION_KEY— 32-байтовый ключ в Base64, хранить отдельно отJWT_SECRET. - Использовать managed PostgreSQL с pgvector (Supabase, RDS и т.п.).
- Использовать managed Redis (ElastiCache, Upstash и т.п.).
- Прописать
ALLOWED_ORIGINSна production-домен фронтенда. - Настроить креды WhatsApp Cloud API.
- Настроить токен Telegram-бота.
- Поставить reverse proxy (nginx) с SSL.
- Включить Langfuse tracing для мониторинга.
- Прогнать
prisma migrate deploy. - Настроить process manager (PM2, systemd).
- Настроить ротацию логов.
Reverse proxy (nginx)
server {
listen 443 ssl;
server_name api.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/api.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/api.yourdomain.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Переменные окружения
Полный список — в таблице переменных. В production:
- пропишите
ALLOWED_ORIGINSс точным origin фронтенда; wildcard-CORS отклоняется; JWT_EXPIRES_INзадавайте один раз — он задаёт TTL JWT-токенов;PII_ENCRYPTION_KEYдолжен быть стабильным 32-байтовым ключом в Base64 до обработки живых разговоров;- поддерживайте доступность Redis — от него зависят BullMQ и rate limit storage;
- WhatsApp Cloud API и Telegram-креды настраивайте только для тех каналов, которыми реально пользуетесь.
Глобальный API rate limit — 100 запросов в минуту на каждого аутентифицированного пользователя или IP клиента. /api/v1/health и feedback-клиенты в allowlist.