Authentik: свой сервер единого входа и SSO на своем железе
Self-hosted провайдер идентификации: единый вход для ваших приложений по SAML, OAuth2/OIDC, LDAP и прокси-аутентификации, каталог пользователей и MFA. Развернули 2026.5.4 из официального docker compose на Fatmetal Cloud Server, замерили стек и вошли в админку. Первый обзор серии про self-hosted identity.
Вердикт
- кому нужен один вход (SSO) на десяток внутренних приложений вместо отдельных паролей
- кто уходит с облачных Okta, Auth0 или Entra ID и не хочет платить за активных пользователей
- кому важно, чтобы каталог пользователей и их ПДн лежали на своем сервере под 152-ФЗ
- нужна доменная директория и Kerberos для флота Linux-хостов - это задача FreeIPA
- не готовы держать IdP как критичный сервис с бэкапом БД и защитой админ-потока
Проверено на версии 2026.5.4, июль 2026. На новых версиях результаты могут отличаться.
Что это и какую задачу решает
Authentik - self-hosted провайдер идентификации (IdP) и сервер единого входа. Он становится единой точкой аутентификации для ваших приложений: одно приложение авторизуется через него по SAML, другое по OAuth2/OIDC, третье получает LDAP-каталог, четвертое закрывается прокси-аутентификацией на входе. Внутри - каталог пользователей и групп, MFA (TOTP и WebAuthn), синхронизация SCIM и настраиваемые потоки входа (flows), которые собираются как конструктор: identification, пароль, второй фактор, согласие.
По задаче это self-hosted замена облачным Okta, Auth0, Microsoft Entra ID и Cloudflare Access. Разница не только в цене: каталог пользователей и их персональные данные остаются на вашем сервере под 152-ФЗ, а не в чужом облаке, и вы не платите за каждого активного пользователя (MAU). Ядро под лицензией MIT, сервер написан на Python. Часть enterprise-функций (например, удаленный доступ RAC) - платные, но базовое SSO целиком бесплатно.
Чем отличается от Okta, Auth0 и Entra ID
Сравнение по тому, что влияет на выбор.
| Параметр | Authentik (self-hosted) | Okta / Auth0 / Entra ID |
|---|---|---|
| Модель цены | Бесплатно (MIT), платите за сервер | Подписка, чаще всего за активных пользователей |
| Где данные пользователей | Ваш сервер (PostgreSQL), под 152-ФЗ | В облаке вендора |
| Vendor lock-in | Открытые протоколы, свой инстанс | Привязка к платформе вендора |
| Протоколы | SAML, OIDC, LDAP, SCIM, прокси | SAML, OIDC, SCIM |
| Потоки входа | Конструктор flows под свои шаги | Настройки в рамках платформы |
| Поддержка и SLA | Своя эксплуатация (или enterprise-подписка) | Гарантии вендора |
Тех-стек и архитектура
Сервер на Python. Стек разложен на три контейнера: server отдает web-интерфейс и обрабатывает запросы аутентификации, worker выполняет фоновые задачи (синхронизация, отправка писем, обслуживание), а данные лежат в PostgreSQL 16. Web-интерфейс - современный SPA на web-компонентах, а вход построен как многоступенчатый поток: сначала identification, затем пароль, затем при необходимости второй фактор.
Важное отличие версии 2026.5: Redis больше не нужен. Раньше он держал очередь задач и кэш, теперь очереди перенесены на PostgreSQL. На практике это минус один контейнер и минус одна точка отказа: старые гайды, где рядом с authentik стоит redis, для 2026.5 устарели. Наружу сервер слушает 9000 (HTTP) и 9443 (HTTPS); в проде его закрывают reverse-proxy с TLS.
Минимальная конфигурация
Реальные требования против официального минимума.
| Официальный минимум RAM | 2 GB |
| Реально в простое (3 контейнера) | ~829 МиБ |
| Из них server / worker / postgres | ~471 / ~284 / ~74 МиБ |
| Образы на диске (server + postgres) | ~2,26 GB |
| Рекомендуем тариф | младший CPU2-RAM4-DISK50, под нагрузку CPU4-RAM8-DISK100 |
Важно: в простое стек умеренный - около 829 МиБ на трех контейнерах, тарифа CPU2-RAM4-DISK50 хватает для запуска и небольшого числа приложений. IdP чувствителен к пикам входов: под реальную нагрузку и много подключенных приложений берите тариф с 8 GB RAM.
В маркетплейсе Fatmetal
Не хотите ставить руками?
Этот стек есть в маркетплейсе Fatmetal - можно не повторять установку из этого разбора вручную. Заказываете сервер, за пару минут получаете рабочий домен, валидный TLS и файл с доступами.
Рекомендуемая конфигурация: CPU2-RAM4-DISK50
Развертывание на Fatmetal
Fatmetal Cloud Server + Ubuntu 24.04 + Docker. Официальный docker compose.
Создать VM
тариф CPU2-RAM4-DISK50, Ubuntu 24.04, Docker. Для нагрузки - тариф с 8 GB RAM.
Скачать compose и задать секреты
mkdir ~/authentik && cd ~/authentik curl -o docker-compose.yml https://goauthentik.io/docker-compose.yml echo "AUTHENTIK_SECRET_KEY=$(openssl rand -base64 60)" >> .env echo "PG_PASS=$(openssl rand -base64 36)" >> .envAUTHENTIK_SECRET_KEYподписывает сессии и токены,PG_PASS- пароль PostgreSQL. Порты приложения слушаем на 127.0.0.1, наружу отдаем через reverse-proxy.Поднять стек за прокси с TLS
docker compose pull docker compose up -dДождаться статуса
healthyу server, worker и postgres. Мы повесили инстанс за Caddy с авто-TLS на доменеauthentik.fatmetal.net.Задать пароль администратора
Первый запуск - открыть
/if/flow/initial-setup/и задать пароль пользователяakadmin. Дальше админка - на/if/admin/. В маркетплейс-карточке пароль генерируется автоматически черезAUTHENTIK_BOOTSTRAP_PASSWORDи попадает в файл с доступами.
Что измерили после запуска
Цифры с тестового CPU4-RAM8-DISK50, Ubuntu 24.04, Docker.
| RAM в простое (server+worker+postgres) | ~829 МиБ |
| Из них server / worker / postgres | ~471 / ~284 / ~74 МиБ |
| Контейнеров | 3 (Redis в 2026.5 убран) |
| Образ server на диске | ~1,84 GB |
| Внешний отклик (HTTPS) | ~0,37 c, код 302 |
| TLS | Let's Encrypt, проверка ok |
Главное: ~829 МиБ в простое на трех контейнерах без Redis - задачи ушли на PostgreSQL-очереди. Внешний отклик 0,37 c с кодом 302 - это штатный редирект неавторизованного запроса на поток входа, а не ошибка.
Проверено на версии 2026.5.4, июль 2026. На новых версиях результаты могут отличаться.
Где может сломаться
На что наткнулись при запуске.
Потеря БД = потеря всех входов. authentik - критичный сервис: в PostgreSQL лежит весь каталог пользователей, групп и настроенные потоки входа. Без свежего бэкапа базы восстановить доступ ко всем подключенным приложениям не выйдет. Бэкап postgres - обязательная, а не опциональная часть эксплуатации.
За reverse-proxy authentik берет внешний URL из Host. Редиректы OAuth и SAML завязаны на публичный адрес, а authentik определяет его по заголовку Host. Если прокси шлет неправильный Host (по умолчанию Caddy это делает не всегда), внешний URL слетает и вход ломается. Прокси должен передавать корректный Host.
Устаревшие гайды с Redis. В 2026.5 Redis убран, задачи перенесены на PostgreSQL-очереди. Если тянете старую инструкцию, где рядом стоит контейнер redis, - она устарела, лишний контейнер не нужен.
Вход многоступенчатый и на web-компонентах. UI - современный SPA (web-компоненты), а поток входа идет по шагам: identification, затем пароль. Это влияет на автоматизацию: скрипты, ожидающие одну форму логина, спотыкаются - учитывайте это при настройке мониторинга и e2e-проверок.
Безопасность, лицензия и обновления
Перед продом: закрыть порты приложения на 127.0.0.1 и отдавать только через reverse-proxy с валидным TLS, задать длинный AUTHENTIK_SECRET_KEY, включить MFA на админ-аккаунте akadmin и защитить его поток входа. Advisories и релизы - в репозитории goauthentik/authentik. Ядро под MIT; часть enterprise-функций (RAC и др.) - платные, базовое SSO бесплатно. Обновление:
docker compose pull && docker compose up -d
Бэкап (обязателен - это каталог пользователей и потоки):
docker exec authentik-postgresql pg_dump -U authentik authentik > authentik-backup.sql
Связь с другими стеками
Это первый обзор серии про self-hosted identity и SSO. Дальше в серии сравним authentik с Zitadel, Keycloak и FreeIPA - от современных IdP до классической доменной директории, чтобы было видно, какой из них под какую задачу.
- Обратный прокси - Caddy или Nginx для TLS (у нас Caddy + авто-TLS), обязательно с корректным Host.
- Бэкапы - pg_dump PostgreSQL + снапшоты диска: каталог пользователей и потоки критичны.
- Ваши приложения - подключаются провайдерами SAML, OIDC, LDAP или прокси-аутентификацией.
- Мониторинг - Grafana + Prometheus за состоянием IdP и пиками входов.
Когда authentik - не ваш выбор
Нужна доменная директория и Kerberos
Если задача - централизованно управлять учетками и хостами флота Linux-машин через Kerberos и полноценный LDAP-домен, это к FreeIPA. Authentik - это SSO для приложений, а не директория для операционных систем.
Не готовы держать IdP как критичный сервис
Провайдер идентификации - единая точка входа: если он лежит, недоступны все подключенные приложения. Это требует бэкапа БД, мониторинга и внимания к обновлениям. Если такой ответственности брать не хочется - облачный Okta или Auth0 снимают эксплуатацию ценой подписки.
Нужны только enterprise-функции
Если весь смысл в удаленном доступе RAC или расширенной поддержке - это платная часть authentik Enterprise. Базовое SSO бесплатно, но платные фичи стоит оценить отдельно.
Частые вопросы
Можно поставить без Docker?
Официальный и проверенный путь - docker compose (server + worker + postgres). Есть и Kubernetes через Helm, но для одного сервера compose проще всего.
Нужен ли Redis?
Нет. В версии 2026.5 Redis убран, очередь задач перенесена на PostgreSQL. Старые гайды с контейнером redis устарели.
Хватит ли 2 GB RAM?
Для запуска и небольшого числа приложений да - в простое стек ~829 МиБ. Под реальную нагрузку и много подключенных приложений берите 8 GB.
Можно в продакшен?
Да: за reverse-proxy с валидным TLS, с корректной передачей Host, MFA на админе и регулярным бэкапом PostgreSQL.
Как делать бэкап?
pg_dump базы PostgreSQL - в ней каталог пользователей, групп и потоки входа. Потеря базы = потеря всех входов, бэкап обязателен.
Это бесплатно?
Ядро под MIT и базовое SSO - бесплатно. Часть enterprise-функций (RAC и др.) - платные, но для типового SSO они не нужны.
Заменяет ли authentik Okta или Auth0?
По задаче да: SAML, OIDC, LDAP, SCIM, MFA и каталог пользователей на своем сервере, без оплаты за активных пользователей и с данными под 152-ФЗ.
Итог
Authentik 2026.5.4 - зрелый self-hosted провайдер идентификации: один вход по SAML, OIDC, LDAP и прокси, каталог пользователей, MFA и потоки входа как конструктор. В простое ~829 МиБ на трех контейнерах, без Redis - задачи ушли на PostgreSQL, тарифа CPU2-RAM4-DISK50 хватает для старта. Как self-hosted замена облачным Okta, Auth0 и Entra ID: данные пользователей на своем сервере под 152-ФЗ и без оплаты за активных пользователей. Оговорки: IdP критичен, нужен бэкап базы, правильный Host за прокси и защита админ-потока. Это первый разбор серии - дальше сравним с Zitadel, Keycloak и FreeIPA.
Этот стек у нас запущен на тарифе CPU4-RAM8-DISK50. Нашли неточность в гайде - напишите, поправим в течение дня.