Розгортання
Розробка (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 Container
Тільки для розробки, Dockerfile:
docker build -t agentcore .
docker run -p 3000:3000 --env-file .env agentcore
Запускає npm run dev із hot reload.
Продакшн
Продакшн-деплой автоматизований у .github/workflows/deploy.yml. На кожен пуш у 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
Продакшн-чекліст
- Виставте
NODE_ENV=production - Згенеруйте сильний
JWT_SECRET(32+ випадкових символів) - Згенеруйте
PII_ENCRYPTION_KEYяк 32-байтовий base64-ключ і тримайте його окремо відJWT_SECRET - Використовуйте managed PostgreSQL з pgvector (наприклад, Supabase, RDS)
- Використовуйте managed Redis (наприклад, ElastiCache, Upstash)
- Виставте
ALLOWED_ORIGINSна продакшн-домен фронтенду - Сконфігуруйте креденшли WhatsApp Cloud API
- Сконфігуруйте Telegram bot token
- Налаштуйте reverse proxy (nginx) з SSL
- Увімкніть Langfuse-трейсинг для моніторингу
- Запустіть
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;
}
}
Змінні оточення
Повний список — у таблиці env у конфігурації. У продакшн:
- виставляйте
ALLOWED_ORIGINSтільки на точні фронтенд-origin; CORS-wildcard відхиляється; - задайте
JWT_EXPIRES_INодин раз і покладайтесь на нього як на джерело правди для TTL токенів; - виставте
PII_ENCRYPTION_KEYяк стабільний 32-байтовий base64-ключ до того, як почнете обробляти живі розмови; - тримайте Redis доступним — від нього залежать BullMQ і rate-limit store у проді;
- налаштовуйте WhatsApp Cloud API і Telegram-креденшли лише для тих каналів, які збираєтесь запускати.
Глобальний API rate limit — 100 запитів на хвилину на автентифікованого користувача або клієнтський IP. /api/v1/health і loopback-клієнти у whitelist.