139 lines
5.3 KiB
Markdown
139 lines
5.3 KiB
Markdown
# Развёртывание на Ubuntu 24.04
|
|
|
|
Эксплуатация SAC: **native** (PostgreSQL + systemd + nginx). Docker — только альтернатива.
|
|
|
|
## Руководства по установке
|
|
|
|
| Документ | Назначение |
|
|
|----------|------------|
|
|
| **[install-ubuntu-24.04-native.md](install-ubuntu-24.04-native.md)** | **Production** — пошаговая подготовка сервера |
|
|
| [install-ubuntu-24.04-docker.md](install-ubuntu-24.04-docker.md) | Стенд / отладка (Compose) |
|
|
| [install-ubuntu-24.04.md](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](install-ubuntu-24.04-native.md)**.
|
|
|
|
Кратко:
|
|
|
|
```bash
|
|
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](install-ubuntu-24.04-docker.md) и `deploy/docker-compose.yml`.
|
|
**Не используется** для production KalinaMall.
|
|
|
|
---
|
|
|
|
## 5. TLS
|
|
|
|
- **Production (KalinaMall):** корпоративный **wildcard** (VeriSign) — [ssl-certificate.md](ssl-certificate.md) (копирование, форматы, `/etc/ssl/sac/`), [install-ubuntu-24.04-native.md](install-ubuntu-24.04-native.md) §9, `deploy/nginx/sac.conf.tls.example`
|
|
- Альтернатива: **certbot** + Let's Encrypt (`deploy/nginx/sac.conf.example`)
|
|
|
|
---
|
|
|
|
## 6. Резервное копирование (native)
|
|
|
|
```bash
|
|
# /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)
|
|
|
|
```bash
|
|
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. **Один раз вручную**, если на сервере ещё старый скрипт:
|
|
|
|
```bash
|
|
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](install-ubuntu-24.04-native.md#13-обновление-sac-деплой).
|
|
|
|
---
|
|
|
|
## См. также
|
|
|
|
- [TZ.md](TZ.md)
|
|
- [agent-integration.md](agent-integration.md)
|