# Развёртывание на Ubuntu 24.04 Руководство для эксплуатации SAC. > **Подготовка чистого сервера (установка Docker, git, firewall, первый запуск):** > **[install-ubuntu-24.04.md](install-ubuntu-24.04.md)** — пошаговые команды для администратора. --- ## 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 (отдельный том для PostgreSQL) | | Сеть | Статический IP или DNS | TLS-сертификат (Let's Encrypt / внутренний CA) | **Порты:** | Порт | Назначение | |------|------------| | 443 | HTTPS (UI + API ingest) | | 80 | Редирект на 443 (опционально) | PostgreSQL **не** публикуется наружу. --- ## 2. Сетевые правила **Исходящие с агентов:** - Linux (ssh-monitor) → `https://sac.example.com:443` - Windows (RDP-monitor) → тот же URL **Исходящие с SAC:** - `api.telegram.org` (если Telegram) - SMTP-сервер организации **Входящие на SAC:** - 443 от сетей, где расположены агенты и админы UI --- ## 3. Вариант A: Docker Compose (рекомендуется) Целевая структура (фаза 1): ``` deploy/ docker-compose.yml .env.example nginx/ sac.conf ``` Сервисы: - `postgres:16` - `api` (FastAPI) - `worker` (тот же образ, другая command) - `nginx` (static + proxy) ### 3.1. Установка Docker ```bash sudo apt update sudo apt install -y ca-certificates curl # Официальная инструкция Docker CE для Ubuntu 24.04 ``` ### 3.2. Конфигурация ```bash sudo mkdir -p /etc/security-alert-center sudo cp deploy/.env.example /etc/security-alert-center/.env sudo chmod 600 /etc/security-alert-center/.env # Заполнить: POSTGRES_PASSWORD, JWT_SECRET, TELEGRAM_*, SAC_PUBLIC_URL ``` ### 3.3. Запуск ```bash cd /opt/security-alert-center/deploy sudo docker compose up -d sudo docker compose exec api alembic upgrade head ``` ### 3.4. Обновление ```bash git pull sudo docker compose build sudo docker compose up -d sudo docker compose exec api alembic upgrade head ``` --- ## 4. Вариант B: Native systemd Пакеты: ```bash sudo apt install -y postgresql nginx python3.12 python3.12-venv ``` - PostgreSQL: БД `sac`, пользователь `sac` - venv в `/opt/security-alert-center/.venv` - Units: `sac-api.service`, `sac-worker.service` - Static UI в `/var/www/sac/` - nginx site `/etc/nginx/sites-available/sac` Детальные unit-файлы — при реализации фазы 1. --- ## 5. TLS - Публичный: **certbot** + nginx - Внутренний: корпоративный CA, полный chain в nginx Агенты должны доверять CA (или `SAC_TLS_SKIP_VERIFY=1` только для dev — **запрещено в prod**). --- ## 6. Резервное копирование ### 6.1. Ежедневный pg_dump ```bash # /etc/cron.d/sac-backup (пример) 0 3 * * * postgres pg_dump -Fc sac > /var/backups/sac/sac_$(date +\%Y\%m\%d).dump ``` Ротация: 14 daily + 4 weekly. ### 6.2. Восстановление (тест раз в месяц) ```bash pg_restore -d sac_restored /var/backups/sac/sac_YYYYMMDD.dump ``` --- ## 7. Обслуживание | Задача | Периодичность | |--------|---------------| | `unattended-upgrades` security | автоматически | | Проверка диска PostgreSQL | еженедельно | | Ротация логов nginx/app | logrotate | | Проверка `/health` | каждые 5 мин (Uptime Kuma / cron) | | Review Problems «хост мёртв» | ежедневно | | Тест restore БД | ежемесячно | --- ## 8. Мониторинг самого SAC - `GET https://sac.example.com/health` → `200`, `"database": "ok"` - Алерт если нет ingest с активного хоста > 90 мин (настраивается) - Диск > 85% — алерт ОС --- ## 9. Создание API key для хоста (После реализации UI) 1. Войти как admin → Hosts → Add / Generate API key. 2. Скопировать ключ в `/etc/ssh-monitor.conf` или RDP-конфиг. 3. `UseSAC=exclusive`, перезапуск агента. 4. `--check-sac` на хосте. --- ## 10. Чеклист первого prod-развёртывания - [ ] Ubuntu 24.04, hostname, DNS A-record - [ ] TLS работает - [ ] PostgreSQL backup настроен - [ ] `.env` не в git, chmod 600 - [ ] Создан admin-пользователь - [ ] Telegram test notification - [ ] Тестовый ingest с одного Linux и одного Windows - [ ] Firewall: только нужные порты --- ## См. также - [TZ.md](TZ.md) §5, §9 - [agent-integration.md](agent-integration.md)