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

Развёртывание (администратор)

Руководство по конфигурации AegisAI для production-окружения.

Чеклист production

  • [ ] Сменить SECRET_KEY, ADMIN_API_KEY, WEBHOOK_SECRET
  • [ ] Задать надёжные пароли PostgreSQL
  • [ ] Настроить HTTPS (TLS)
  • [ ] Ограничить CORS
  • [ ] Настроить бэкапы PostgreSQL
  • [ ] Настроить мониторинг и алерты
  • [ ] Отключить --reload в Uvicorn
  • [ ] Задать ENVIRONMENT=production
  • [ ] Настроить ротацию логов
  • [ ] Проверить AUDIT_RETENTION_DAYS

Переменные окружения

Обязательные

# База данных
DATABASE_URL=postgresql+asyncpg://aegisai:<password>@postgres:5432/aegisai

# Redis
REDIS_URL=redis://redis:6379/0

# Безопасность
SECRET_KEY=<64-char-random-string>
ADMIN_API_KEY=<random-admin-key>
WEBHOOK_SECRET=<random-webhook-secret>

# Окружение
ENVIRONMENT=production

OPA

OPA_ENABLED=true
OPA_URL=http://opa:8181
OPA_POLICY_PATH=/app/policies/json

Аудит

AUDIT_SIGNING_ENABLED=true
AUDIT_RETENTION_DAYS=365
EXPORT_STORAGE_PATH=/app/storage/exports
SYNC_EXPORT_THRESHOLD=10000
MAX_EXPORT_LIMIT=100000

Суперадминистратор

SUPER_ADMIN_EMAIL=admin@yourcompany.com
SUPER_ADMIN_PASSWORD=<strong-password>
SUPER_ADMIN_SYNC_PASSWORD=true

Синхронизация пароля при старте: poetry run python scripts/init_super_admin.py --force-sync

SSO и SIEM

См. SSO и SIEM для полных списков переменных (KEYCLOAK_*, OKTA_*, SIEM_*).

Reverse Proxy (Nginx)

server {
    listen 443 ssl http2;
    server_name aegisai.yourcompany.com;

    ssl_certificate     /etc/ssl/certs/aegisai.crt;
    ssl_certificate_key /etc/ssl/private/aegisai.key;

    # API
    location /api/ {
        proxy_pass http://127.0.0.1:8000;
        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;
    }

    # WebSocket
    location /api/v1/ws {
        proxy_pass http://127.0.0.1:8000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 86400;
    }

    # Webhooks
    location /webhooks/ {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        client_max_body_size 10m;
    }

    # Frontend (статика)
    location / {
        root /var/www/aegisai/dist;
        try_files $uri $uri/ /index.html;
    }
}

Миграции базы данных

# В Docker
docker compose exec app poetry run alembic upgrade head

# Локально
poetry run alembic upgrade head

Перед обновлением

Всегда создавайте бэкап БД перед применением миграций.

Сборка фронтенда

cd frontend
npm install
VITE_API_URL=https://aegisai.yourcompany.com npm run build

Артефакты в frontend/dist/ — разместите на CDN или в Nginx.

Масштабирование

Компонент Рекомендация
app (FastAPI) 2+ реплики за load balancer
postgres Primary + read replica
redis Sentinel или Cluster
opa Sidecar или централизованный сервис
frontend CDN для статики

Sticky sessions для WebSocket

При нескольких репликах app настройте sticky sessions на load balancer или используйте Redis pub/sub (встроен в event_publisher).

Безопасность сети

graph TB
    Internet --> LB[Load Balancer / TLS]
    LB --> FE[Frontend CDN]
    LB --> API[FastAPI :8000]
    API --> PG[(PostgreSQL)]
    API --> RD[(Redis)]
    API --> OPA[OPA :8181]
    PG -.->|private network| API
    RD -.->|private network| API
    OPA -.->|private network| API

Не публикуйте

PostgreSQL (5432), Redis (6379) и OPA (8181) не должны быть доступны из интернета.

Подробнее: Docker, VPS.