Defer notify_lifecycle and notify_auth_login after commit; SAC_UVICORN_WORKERS via sac-api-start.sh; nginx /api/v1/events timeout; mass-update confirm in Hosts UI.
5.3 KiB
Развёртывание на Ubuntu 24.04
Эксплуатация SAC: native (PostgreSQL + systemd + nginx). Docker — только альтернатива.
Руководства по установке
| Документ | Назначение |
|---|---|
| install-ubuntu-24.04-native.md | Production — пошаговая подготовка сервера |
| install-ubuntu-24.04-docker.md | Стенд / отладка (Compose) |
| install-ubuntu-24.04.md | Указатель |
Артефакты native в репозитории
deploy/
env.native.example → /opt/security-alert-center/config/sac-api.env
systemd/sac-api.service → /etc/systemd/system/
nginx/sac.conf.example → /etc/nginx/sites-available/sac (HTTP)
nginx/sac.conf.tls.example → HTTPS + wildcard
sac-deploy.sh → /opt/sac-deploy.sh (полное обновление)
Production URL: https://sac.kalinamall.ru
Конфиг: /opt/security-alert-center/config/sac-api.env (владелец sac:sac, chmod 600).
UI: статика frontend/dist, раздаётся через FastAPI (после npm run build).
1. Требования к серверу
| Параметр | Минимум | Рекомендуется |
|---|---|---|
| ОС | Ubuntu 24.04 LTS | Ubuntu 24.04 LTS |
| CPU | 2 vCPU | 4 vCPU |
| RAM | 4 GB | 8 GB |
| Диск | 50 GB SSD | 100+ GB SSD |
Порты снаружи: 443 (nginx), 80 (редирект). API 8000 — только 127.0.0.1. PostgreSQL — только localhost.
2. Сетевые правила
Агенты → https://sac.kalinamall.ru/api/v1/events
SAC → Telegram, SMTP (исходящие)
Админы → 443 (UI/API через nginx)
3. Вариант A: Native (production)
Компоненты на хосте:
| Компонент | Как |
|---|---|
| PostgreSQL 16 | apt, БД sac |
| SAC API | Python 3.12 venv, systemd sac-api |
| TLS / proxy | nginx |
| UI | frontend/dist, сборка npm run build, раздача из API |
Полная инструкция: install-ubuntu-24.04-native.md.
Кратко:
systemctl status sac-api
curl -sS http://127.0.0.1:8000/health
curl -sS https://sac.kalinamall.ru/health
4. Вариант B: Docker Compose (альтернатива)
См. install-ubuntu-24.04-docker.md и deploy/docker-compose.yml.
Не используется для production KalinaMall.
5. TLS
- Production (KalinaMall): корпоративный wildcard (VeriSign) — ssl-certificate.md (копирование, форматы,
/etc/ssl/sac/), install-ubuntu-24.04-native.md §9,deploy/nginx/sac.conf.tls.example - Альтернатива: certbot + Let's Encrypt (
deploy/nginx/sac.conf.example)
6. Резервное копирование (native)
# /etc/cron.d/sac-backup
0 3 * * * postgres pg_dump -Fc -U sac sac > /var/backups/sac/sac_$(date +\%Y\%m\%d).dump
Восстановление: pg_restore -d sac_restored /var/backups/sac/sac_YYYYMMDD.dump
7. Обслуживание
| Задача | Периодичность |
|---|---|
unattended-upgrades |
автоматически |
journalctl -u sac-api |
по инцидентам |
/health |
каждые 5 мин |
| Тест restore БД | ежемесячно |
8. Обновление (native)
sudo /opt/sac-deploy.sh
Краткий 502 Bad Gateway в UI (~10 с) возможен при перезапуске sac-api — список хостов автоматически повторяет запрос; после деплоя обновите страницу.
Важно в sac-api.env: SAC_PUBLIC_URL=https://sac.kalinamall.ru — нужен для WinRM-обновления RDP (клиент скачивает zip с SAC). API: 4 worker uvicorn по умолчанию (SAC_UVICORN_WORKERS, deploy/systemd/sac-api-start.sh).
Установка скрипта (один раз): sudo cp /opt/security-alert-center/deploy/sac-deploy.sh /opt/sac-deploy.sh && sudo chmod 755 /opt/sac-deploy.sh
После force-push на upstream remote обычный git pull на сервере падает с «diverging branches». Скрипт sac-deploy.sh (актуальная версия) делает fetch и при необходимости reset --hard к upstream. Один раз вручную, если на сервере ещё старый скрипт:
sudo -u sac git -C /opt/security-alert-center fetch --prune
sudo -u sac git -C /opt/security-alert-center reset --hard origin/main
sudo cp /opt/security-alert-center/deploy/sac-deploy.sh /opt/sac-deploy.sh
sudo /opt/sac-deploy.sh
Подробности: install-ubuntu-24.04-native.md §13.