Files

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.


См. также