Перейти к содержанию

Чеклист production cutover

AgentBI на общем VPS (Traefik HTTPS). Живой пример: https://agentbi.online.

Предварительные условия

  1. DNS — A-запись для AGENTBI_DOMAIN → публичный IP VPS (см. deploy/DNS.md).
  2. Secrets на VPS — в /home/smdg/agentbi: bash cp .env.production.example .env # Обязательно: POSTGRES_PASSWORD, REDIS_PASSWORD, SECRET_KEY, ADMIN_PASSWORD # Обязательно: AGENTBI_DOMAIN, CORS_ORIGINS=https://$AGENTBI_DOMAIN # Рекомендуется: ADMIN_API_KEY (bootstrap platform tenant) # SSO (Google): GOOGLE_SSO_ENABLED=true, GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET # SSO_PUBLIC_BASE_URL / SSO_FRONTEND_URL = https://$AGENTBI_DOMAIN # Billing: BILLING_ENABLED=true, YOOKASSA_SHOP_ID, YOOKASSA_SECRET_KEY # BILLING_SUCCESS_URL / BILLING_CANCEL_URL → …/settings.html?billing=success|cancel # Observability: SENTRY_DSN, LOG_JSON=true, JWT_EXPIRE_MINUTES=480 chmod 600 .env
  3. Google OAuth — redirect URI: https://$AGENTBI_DOMAIN/api/v1/auth/sso/callback
  4. ЮKassa — webhook: https://$AGENTBI_DOMAIN/api/v1/billing/webhooks/yookassa
    События: payment.succeeded, payment.canceled

Развёртывание

  1. Новый пароль БД — если volume Postgres использовал слабый пароль, выполните ALTER USER или один раз очистите volumes (потеря данных).
  2. Deploy — push в main (CI → Deploy) или: bash COMPOSE_FILE=docker-compose.prod.yml ./deploy.sh Deploy собирает SHA-тегированные образы, делает бэкап БД перед migrate, запускает Alembic, записывает VERSION.
  3. Проверка
  4. curl -sf https://$AGENTBI_DOMAIN/api/v1/health/ready
  5. curl -sf https://$AGENTBI_DOMAIN/api/v1/version → совпадает с SHA деплоя
  6. Откройте UI, войдите; /docs должен возвращать 404 в production
  7. SSO: кнопка Google; сначала сопоставьте email-домены (Users → Organizations)
  8. Изоляция cross-tenant ingest (bt_ keys)
  9. Settings → Billing / годовой checkout ЮKassa
  10. Settings → Domain (опциональный vanity host — только БД)

Tenant + SSO mapping

Предпочтительно через UI: Users → Organizations → SSO email domains (через запятую, уникально между tenants).

bash curl -X POST https://$AGENTBI_DOMAIN/api/v1/tenants \ -H "X-Admin-Key: $ADMIN_API_KEY" \ -H "Content-Type: application/json" \ -d '{"name":"Acme Corp","allowed_email_domains":["acme.com"]}'

Пользователи SSO @acme.com автоматически создаются в этом tenant. Неизвестные домены отклоняются. Роли IdP ограничены admin (никогда super_admin).

Ops

  1. Бэкапы — cron ./scripts/backup_postgres.sh + pre-migrate dumps из deploy.sh; копируйте off-host.
  2. Docker prune./scripts/vps/install_vps_ops.sh (ежедневный safe prune).
  3. Swapsudo /home/smdg/bin/setup-swapfile один раз (2G, низкий swappiness).
  4. Ротация — смените bootstrap admin password в приложении.
  5. Мониторинг — алерты Sentry + uptime на /api/v1/health/ready в течение 48ч после cutover.

Откат

```bash ./scripts/rollback.sh --sha "$(cat VERSION.prev)"

опционально: --restore backups/backup_….dump.gz

```

Или повторный деплой предыдущего git SHA через Actions (workflow_dispatch / prior commit).