Требования к серверу для Zentro
This content is not available in your language yet.
Для того, кто выбирает сервер под Zentro: заказчик, интегратор, администратор. Здесь — сколько ресурсов нужно, что ставить на сервер и когда расти. Как ставить — Установка панели и кабинета (панель, кабинет, BFF) и комплект Identity (Установка сервера). Какие настройки выбрать — Выбор настроек.
Главное условие
Заголовок раздела «Главное условие»Сервисы проверяют токены у себя — по ключам Zentro (JWKS), а не спрашивают Zentro о каждом
токене (интроспекция), и хеш секретов приложений — sha256 (по умолчанию). Цифры ниже верны
при этих условиях.
Почему это важно — раздел «Почему JWKS, а не интроспекция» в конце. Коротко: при проверке по JWKS
нагрузка на Zentro зависит от числа входов, а при интроспекции — от числа запросов ко всем
вашим сервисам. С argon2id для секретов приложений каждый такой запрос становится дорогим, и
сервер нужен в разы больше.
Сколько нужно
Заголовок раздела «Сколько нужно»| Профиль | Сервер | Схема |
|---|---|---|
| Личный / пилот: до 10 человек, десятки сервисов | 2 vCPU · 4 ГБ RAM · 40–60 ГБ SSD | один сервер |
| Малая организация: до 200 сотрудников, до 10 000 внешних пользователей (покупатели, клиенты), сервисы до 20 rps | 4 vCPU · 8 ГБ RAM · 100 ГБ SSD/NVMe (минимум 2 · 4 · 50) | один сервер |
| Средняя: до 1000 сотрудников, сотни сервисов | приложения 4 vCPU · 8 ГБ · 50 ГБ + база 4 vCPU · 8 ГБ · 200 ГБ NVMe | два сервера |
| Вход критичен для бизнеса: без Zentro не работает ничего | 2+ сервера приложений, Redis, PostgreSQL с репликой, кластер Vault | отказоустойчивая |
К любому профилю — место для бэкапов вне сервера (другая площадка или хранилище).
Число администраторов на размер не влияет: это те же пользователи, только с ролями. Число зарегистрированных приложений (OAuth-клиентов) и API (ресурсов) — тоже: тысячи записей в базе для Zentro не нагрузка.
Пример: малая организация
Заголовок раздела «Пример: малая организация»200 сотрудников, интернет-магазин с 10 000 покупателей, сервисы магазина — до 20 запросов в секунду.
| Что | Сколько доходит до Zentro |
|---|---|
| Сотрудники утром входят в 3–5 приложений | меньше 1 входа в секунду |
| Покупатели на распродаже | 1–2 входа в секунду |
| Приложения обновляют токены (раз в ~15 минут на активного пользователя) | единицы в секунду |
| 20 rps к сервисам магазина | 0 — токены проверяются в самих сервисах |
Итого — меньше 5 запросов в секунду. 2 vCPU хватит; 4 vCPU — запас на распродажи и рост.
Что стоит на сервере
Заголовок раздела «Что стоит на сервере»| Компонент | Память | Заметки |
|---|---|---|
| Identity (сервер + фоновые задачи) | 0.3–2 ГБ | всплески при входах: проверка пароля — около 64 МБ и 0.1 с процессора |
| PostgreSQL 16 | 1–2 ГБ | всё состояние Zentro |
| Vault | ~256 МБ | ключи подписи и шифрования персональных данных |
| Панель, кабинет, два прокси (BFF) | ~0.5 ГБ | данных не хранят |
| nginx | ~50 МБ | TLS, наружу |
Не нужен для одного сервера Redis — он нужен с двух серверов приложений.
Личный стенд или пилот можно запустить без Vault: ключи на диске сервера
(SECRETS_BACKEND=local, ALLOW_LOCAL_SECRETS=true). Это осознанный компромисс — для заказчика с
персональными данными клиентов ставьте Vault.
Окружение
Заголовок раздела «Окружение»- ОС: Ubuntu 24.04 LTS или Debian 12. Docker 24+, Docker Compose v2.
- Точное время (chrony / NTP) — обязательно: от него зависят коды TOTP и сроки токенов. Расхождение в минуту — и второй фактор перестаёт приниматься.
- TLS: nginx + Let’s Encrypt (или сертификат организации). Без настоящего HTTPS не работают ключи (passkey) и защищённые cookie.
- Почта: внешний SMTP-провайдер. Нужна для подтверждения почты и сброса пароля; письма «с сервера» без настроенного домена уходят в спам.
- Доступ к серверу: SSH только по ключу, межсетевой экран — наружу открыт только 443.
Сеть и адреса
Заголовок раздела «Сеть и адреса»| Адрес | Кому виден |
|---|---|
id.example.com — Identity |
всем, кто входит (браузеры) и всем сервисам |
account.example.com — личный кабинет |
всем, кто входит |
admin.example.com — панель администратора |
только внутренняя сеть или VPN |
Трафик небольшой — хватает 100 Мбит.
Диск и бэкапы
Заголовок раздела «Диск и бэкапы»Рост даёт в основном журнал аудита: порядка 15–20 ГБ в год для малой организации. Сколько хранить — настройка удержания аудита (Настройки установки). Следите за заполнением диска.
Бэкап — ежедневно и на другую площадку:
| Что | Зачем |
|---|---|
Дамп PostgreSQL (pg_dump) |
всё состояние. Копировать папку базы «на ходу» нельзя — получите битую копию |
Vault (снимок) или /data Identity (без Vault) |
ключи. Без них персональные данные в базе не расшифровать, бэкап базы бесполезен |
.env и файлы секретов |
без них не поднять сервисы с теми же ключами сессий |
Проверяйте восстановление хотя бы раз — на отдельной машине.
Когда расти
Заголовок раздела «Когда расти»| Сигнал | Что сделать |
|---|---|
| Процессор Identity в пиках > 70% | добавить vCPU; проверить, не ходит ли сервис в интроспекцию на каждый запрос и не стоит ли argon2id для секретов приложений |
| База занимает больше половины памяти сервера или диск > 70% | вынести PostgreSQL на отдельный сервер |
| Простой Zentro недопустим даже на время обновления | второй сервер приложений + Redis, реплика базы |
| Аудит быстро растёт | уменьшить удержание или выборочный аудит (Настройки установки) |
Почему JWKS, а не интроспекция
Заголовок раздела «Почему JWKS, а не интроспекция»Сервис может узнать, годен ли токен, двумя способами.
По ключам (JWKS). Токен подписан Zentro. Сервис один раз скачивает открытые ключи Zentro
(jwks_uri из Discovery) и дальше проверяет подпись и срок сам, за микросекунды, не обращаясь к
Zentro. Сколько бы запросов ни было у сервиса — Zentro их не видит.
Интроспекция. Сервис на каждый запрос спрашивает Zentro: «этот токен ещё жив?»
(introspection_endpoint). Каждый такой вопрос — это запрос по сети к Zentro, проверка секрета
сервиса и проверка токена в базе. Нагрузка на Zentro становится равна сумме запросов ко всем
сервисам, которые так делают.
Сколько это стоит, зависит от хеша секретов приложений (Выбор настроек, «Хеш секретов приложений»):
| Интроспекция | sha256 (по умолчанию) |
argon2id |
|---|---|---|
| 20 запросов в секунду | незаметно — профили выше справятся | ~2 ядра целиком, всплески памяти до 1.3 ГБ |
| 100 запросов в секунду | заметная нагрузка на базу; профиль «Малая» ещё держит | ~10 ядер |
| 500 запросов в секунду | считать отдельно: база, второй сервер приложений | ~50 ядер — отдельный кластер |
argon2id — проверка секрета стоит около 0.1 с процессора и 64 МБ памяти, как проверка пароля
человека. Если регламент его требует — оставьте sha256 хотя бы у сервисов, которые зовут
интроспекцию или часто берут машинные токены.
И при любом хеше:
- сетевой запрос к Zentro в каждом запросе сервиса (с
argon2id— ещё и +0.1 с, пользователь это заметит); - Zentro становится обязательным для каждого запроса: упал Zentro — встали все API, а не только новые входы.
Цена JWKS — отозванный токен действует до конца своего срока (до 15 минут): сервис не знает, что его отозвали. Поэтому правило:
- обычные запросы — проверка по JWKS;
- чувствительные операции (платёж, смена прав, выгрузка данных) — интроспекция или повторный
вход (
max_age), но только для них.
Как это делает команда сервиса — Подключение приложения, «Что делает команда приложения».