# SSO для самохостинга

**URL:** <https://forum.samohosting.ru/t/sso-dlya-samohostinga/691>\
**Category:** 0. Основная\
**Tags:** homelab\
**Created:** [14.Август.2025 18:56:25 UTC](https://forum.samohosting.ru/t/sso-dlya-samohostinga/691 "2025-08-14T18:56:25Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![KRom](https://forum.samohosting.ru/user_avatar/forum.samohosting.ru/krom/32/362_2.png) [@KRom](https://forum.samohosting.ru/u/KRom)\
**Post date:** [14.Август.2025 18:56:25 UTC](https://forum.samohosting.ru/t/sso-dlya-samohostinga/691/1 "2025-08-14T18:56:25Z")

</div>

Собственно предлагаю обсудить варианты SSO для домашних сервисов т.к. у меня не все гладко с этим

## Что такое SSO

**SSO (Single Sign-On)** в контексте домашнего хостинга — это технология единого входа, позволяющая пользователям аутентифицироваться один раз для доступа к нескольким сервисам (например, Nextcloud, WordPress, GitLab) без повторного ввода пароля. Для реализации используются протоколы **OAuth, OpenID Connect, SAML или LDAP** , интегрируемые через сервисы вроде **Keycloak или Authelia**. Это повышает безопасность, сокращает количество учетных данных и упрощает управление доступом в локальной сети.

## Что мне надо

1. OIDC для совместимых приложений
2. Дополнительные поля пользователя, например, для SSH ключей
3. Проксирование аутентифиакации для неподдерживаемых приложений через Traefik
4. Поддержка Passkey

## Что еще есть, но мне не критично

1. LDAP федерация
2. SSSD - это просто кайф, но дома пока не готов на это

## Какие варианты есть

1. [AD + ADFS](https://learn.microsoft.com/ru-ru/windows-server/identity/ad-fs/ad-fs-overview) - M$ не хочу
2. [Keycloak](https://www.keycloak.org/) - промышленный стандарт, самая кастомизируемая платформа
3. [Authentik](https://goauthentik.io) - сейчас основной и у меня в нем уже 22 приложения заведено
4. [Zitadel](https://zitadel.com) - пробую
5. [Tinyauth](https://tinyauth.app/) - минималистичный проект на конфигах
6. [Authelia](https://www.authelia.com/) - не пробовал
7. [Pocket ID](https://github.com/pocket-id/pocket-id) - интересный проект для passkey
8. [CAS](https://github.com/apereo/cas) - встречал упоминания его, но не более
9. [Ory](https://www.ory.sh) - встречал упоминания его, но не более
10. Напишите в комментариях что пользуете дома

## Дополнительные ссылки

1. [Active Directory vs Authentik](https://forum.samohosting.ru/t/active-directory-vs-authentik/517)
2. Навеяно видео [Authelia vs Authentik vs Keycloak vs Zitadel Как выбрать SSO для своих сервисов by Stilicho 2011](https://www.youtube.com/watch?v=WJ3qcFKqxDo)
3. [Обсуждение на реддите](https://www.reddit.com/r/selfhosted/comments/1imobt8/authentik_seems_to_be_eating_my_server_i_know/)

## Мой путь

1. В организации использую Keycloak, в целом нравится т.к. это индустриальный стандарт, но это Java и есть требует много ресурсов + проблемы с обновлениями, часть функционала реализуется очень сложно

2. Сейчас развернул дома Authentik, по функционалу устраивает, но Python не является эталоном производительности. Довольно тормозной и на N4000 загрузка в простое под 10%

3. Пробовал демку Pocket-ID - визуално понравился, есть базовый функционал, но отсутствие паролей смущет

4. Сейчас развернул Zitadel, он написан на go и очень быстрый. Пробую настроить тестовые интеграции.

## Немного про решения

### keycloak

Есть типовая задача, неправильная по архитектуре OIDC, но приходится с этим работать:

> Проверка прав доступ при аутентификации пользователя и выдача 403 ошибки еще в IdP без выдачи токена клиенту  
> Тут правильно выдавать JWT токен клиенту т.к. SSO занимается аутентификацией, а авторизацией уже сами клиенты и с полученным JWT токеном пользователь идет в приложение, а приложение на основе различных типов ACL, например RBAC проверяет наличие роли в токене и разрешает или запрещает доступ  
> Но мои приложения так делают, а вот популярные продукты просто пускают пользователя с дефолтными правами

В keycloak я делал несколько заходов, чтобы запрещать доступ в самом keycloak, например, для Rocket Chat и у меня так и ничего не вышло

В Authentik это работает из коробки и очень круто

- Еще добавление новых клиентов в keycloak чуть сложнее и приходится ковыряться в настройках, в authentik прям проще
- Authentication proxy нет из коробки но есть готовые sidecar решения, настраивать дольше, но фишка в том, что можно настраивать точечно права, например `/api/admin/* ` разрешить только группе `app_admin`` а ходить на `/`могут все пользователи в группе`app\_users
- С realm заморочесто, но при использовании федерации оправдано и у меня прям круто настроено, чего нет в authentik

### Authentik

- Мне не нравится производительность
- Хочется кластеризацию, но пока не реализовал и не знаю можно ли легко сделать
- Очень крутая работа с Authentication proxy, причем, [я тут расписывал мою схему](https://forum.samohosting.ru/t/ha-v-domashnem-samohostinge-na-primere-reverse-proxy-i-ne-tolko/620) и она уже поменялась - теперь рядом с traefik на каждой ноде развернут еще и authentik authentication proxy, но очень простая логика разграничения прав

### Zitadel

- Пытался поднять несколько дней, в итоге таки запустил его - очень капризная и сложная
- Продукт заточен явно под разработчиков, сразу предлагает создавать клиенты для популярных фреймворков разработки
- Функционала маловато, authentik в этом плане явно более зрелый
- Есть проблема с шрифтами для русского языка
- Своебразная логика, которая отличается от других решений
- Есть действия и вообще какие-то кастомные обработчики

**Пока не разобрался**

- С настройкой ролей и добавлением их в токен
- Запретом на доступ к приложению в самом zitadel
- Authentication proxy
- Отказоустойчивость
- Что делать с проектами в zitadel
- Есть ошибка с настройкой passkey (опять проблемы с документацией и приложением) - вообще проект очень сырой
- Перенос всех приложений из authentik в zitadel

А что вы используете и что посоветуете мне сделать?

---

<div class="post-metadata">

**Author:** ![KRom](https://forum.samohosting.ru/user_avatar/forum.samohosting.ru/krom/32/362_2.png) [@KRom](https://forum.samohosting.ru/u/KRom)\
**Post date:** [15.Август.2025 11:19:42 UTC](https://forum.samohosting.ru/t/sso-dlya-samohostinga/691/2 "2025-08-15T11:19:42Z")

</div>

**Мысли по поводу zitadel**

> Вспоминается история про первую Tesla model S, где не было или обогрева зеркал или стекла лобового, не помню уже деталей, но какие-то тупые косяки вылезли в первой ревизии автомобиля т.к. из всей команды проектировщиков водительские права были только у одного.  
> Может и байка, но суть в том, что они разрабатывали автомобиль не зная какие есть вообще на рынке модели и как их проектировать, с одной стороны они сделали что-то новое, а не переняли то, что переносится инженерами из года в год, и даже сделали то, что до этого априори считалось невыполнимым. С другой стороны, те детские болячки, которые другие производители давно побороли проектировщики теслы собрали в одном месте и потом еще несколько лет исправляли

Zitadel вроде работает быстро, но аутентификация локально работает как-то очень медленно, периодически ошибки вылазят в консоли, такое чувство, что там что-то внутри сломано

Такие привычные вещи как предпросмотр содержимого JWT токена, которые есть у “взрослых” продуктов тут просто не завезли, соответственно как через веб интерфейс посмотреть в каком поле записано имя, а где логин просто нельзя. Ну правильно, зачем это тут если разработчик все равно получит токен в приложении, выведет его содержимое в режиме отладки и пропишет настройки в приложении на основе той информации, которую увидел. А что делать просому самохостеру, который пытается настроить partainer и надо указать поле с логином?

В Authentik, например, есть фишка, что он может заполнять фильтр валидных редиректов при первом входе в приложение и это круто - сразу чувствуешь, что данный продукт проектировали реальные пользователи SSO, а не сеньоры бэкенд девелоперы, соревнующиеся между собой в знании паттеронов проектирования без опыта настройки keycloak на 10 000 пользователей.

Мультитенантность сейчас очень модна, но в zitadel явно перегружена за счет общего качества продукта. В Keycloak есть `relams` и работают они там отлично, а при настройке федерации с AD/FreeIPA это прям божественно, тут разработчики какой-то огород нагородили.

Начальная настройка тоже вызывает вопросы: есть несколько конфликтующих между собой примеров docker-compose, в разделе с reverse proxy кто-то явно пытался показать все свое мастерство в написании compose файлов, забыв про права доступа на корневой каталог проекта. В итоге пришлось переписывать под себя все равно. А создание начального пользователя - вообще песня

Создание клиентов: это единственный продукт который просто ввел меня в ступор, если в pocket id и authentik это вообще интуитивно все делается, то тут опять какой-то оверинжиниринг полез

Пока еще поприсматриваюсь к этому продукту, ноооооо, у меня большие сомнения на счет целесообразноси перехода на него

---

<div class="post-metadata">

**Author:** ![Snipset](https://forum.samohosting.ru/user_avatar/forum.samohosting.ru/snipset/32/487_2.png) [@Snipset](https://forum.samohosting.ru/u/Snipset)\
**Post date:** [15.Август.2025 18:42:13 UTC](https://forum.samohosting.ru/t/sso-dlya-samohostinga/691/3 "2025-08-15T18:42:13Z")

</div>

> [@KRom](#):
>
> ### Authentik
> 
> - Мне не нравится производительность

А что в нем не так с производительностью? Я пока сижу на AD, не то что бы хотел на что-то менять, но в сторону Authentik немного посматриваю.

---

<div class="post-metadata">

**Author:** ![KRom](https://forum.samohosting.ru/user_avatar/forum.samohosting.ru/krom/32/362_2.png) [@KRom](https://forum.samohosting.ru/u/KRom)\
**Post date:** [15.Август.2025 20:27:06 UTC](https://forum.samohosting.ru/t/sso-dlya-samohostinga/691/4 "2025-08-15T20:27:06Z")

</div>

Ну вот это на N4000 сейчас

 ![image](https://forum.samohosting.ru/uploads/default/original/1X/08d9a0e19c116cc1a16f4d4b150cb8b09213a6cf.jpeg)  
Подтюнил логирование - стало получше, но видно, что ниже 6% нагрузка не опускается в принципе даже в простое, пики это аутентификация пользователя.

Да, проц слабый, но я специально взял безвентиляторный миник без доп обвеса, чтобы там крутилось несколько основных сервисов и не трогать.

Пробовал переносить на Ryzen 7 5825U и там не особо лучше при выделении все тех же 2 ядер. Причем, я бы не сказал, что он прям тормозной, но бывает такое, что вот так тарахтит в фоне несколько часов, а потом открываешь кластер proxmox и он секунды 3-4 крутит лоадер пока обменивается токенами с authentik, заходишь в админку и он тоже несколько секунд прогружает все, а потом уже быстро навигация по приложению происходит.

Вообще под него рекомендуют 4-6 ядер CPU и сколько же ГБ RAM выделять

Я еще двигаюсь в сторону Linstor и proxmox HA, но все равно хотелось крутить на выделенном минике несколько сервисов (с резервными копиями и все такое). но чтобы там только эти сервисы были и минимальная обвязка и без куллера, чтобы лежал себе и не шуршал. А другие миники уже под большие нагрузки, но там все равно остается режим лаборатории - что-то с дисками делаю, всякие TPU тестирую и прочее, поэтому аптайм ниже.

---

<div class="post-metadata">

**Author:** ![KRom](https://forum.samohosting.ru/user_avatar/forum.samohosting.ru/krom/32/362_2.png) [@KRom](https://forum.samohosting.ru/u/KRom)\
**Post date:** [23.Август.2025 10:05:23 UTC](https://forum.samohosting.ru/t/sso-dlya-samohostinga/691/5 "2025-08-23T10:05:23Z")

</div>

Пока решил остаться на Authentik, потюнил его проиводительность, добавил оперативки, добавил еще LDAP провайдера и переходить на ziitadel совсем не хочется.

---

<div class="post-metadata">

**Author:** ![admin](https://forum.samohosting.ru/user_avatar/forum.samohosting.ru/admin/32/4_2.png) [@admin](https://forum.samohosting.ru/u/admin)\
**Post date:** [24.Август.2025 09:31:59 UTC](https://forum.samohosting.ru/t/sso-dlya-samohostinga/691/6 "2025-08-24T09:31:59Z")

</div>

Роману, уже традиционное спасибо за отличный пост\статью и личный опыт.

Добавил ссылку на эту ветку на сайт [https://pro.samohosting.ru/](https://pro.samohosting.ru/) в профильную категорию.

 ![image](https://forum.samohosting.ru/uploads/default/original/2X/5/5a1881f7c979e29061581e5ad68af63eee291806.png)

Ну и дополнительно рекомендую к изучению читателем :  
[2. КАК ВЫБРАТЬ SSO?](https://www.youtube.com/watch?v=WJ3qcFKqxDo)

> Authelia vs Authentik vs Keycloak vs Zitadel by ProHomelab

[3. Authentik](https://www.youtube.com/playlist?list=PLcp2t_6Vo_sDXG5Z9Fus1M_VZoINCPz0o)

> плейлист от А до Я by ProHomelab

[4. Keycloak](https://www.youtube.com/watch?v=OPk-woAkZaw)

> полный гайд для начинающих by ProHomelab

Всем удачного самохостинга!

---

<div class="post-metadata">

**Author:** ![iPyotr](https://forum.samohosting.ru/letter_avatar_proxy/v4/letter/i/8491ac/32.png) [@iPyotr](https://forum.samohosting.ru/u/iPyotr)\
**Post date:** [07.Декабрь.2025 19:55:31 UTC](https://forum.samohosting.ru/t/sso-dlya-samohostinga/691/7 "2025-12-07T19:55:31Z")

</div>

Приветствую!  
Пытаюсь настроить social login через **Yandex ID** в Authentik (версия **2025.10.2** ). С Telegram есть нюанс (кнопка не отображается), но это известный баг. А вот с Яндексом застрял.

**Суть проблемы:** Авторизация в Яндексе проходит успешно, происходит редирект обратно, но Authentik выдает ошибку: `Authentication failed: Could not determine id`

**Мои настройки:**

- Создал источник типа: **OpenID OAuth** (так как Generic OAuth в списке выбора отсутствует).

- URL-адреса (token/authorization/profile) прописаны

**Диагностика:** Я проверил через `curl`, что именно возвращает Яндекс на endpoint `/info`. Он возвращает JSON с полем `id`, но **без** поля `sub`:

JSON

```json
{"id": "12345...", "login": "my.login", ...}

```

Так как тип источника **OpenID OAuth** , Authentik ожидает поле `sub` и настройки **User ID Key** в интерфейсе скрыты.

**Вопрос:** Как корректно замапить `id` от Яндекса в `sub` или заставить Authentik использовать поле `id` в качестве ключа? Нужно ли это делать через Property Mappings (но ошибка падает _до_ маппинга) или есть способ изменить `User ID Key` для OpenID источника (например, через shell)?

---

<div class="post-metadata">

**Author:** ![Dimka511](https://forum.samohosting.ru/user_avatar/forum.samohosting.ru/dimka511/32/234_2.png) [@Dimka511](https://forum.samohosting.ru/u/Dimka511)\
**Post date:** [08.Декабрь.2025 12:18:50 UTC](https://forum.samohosting.ru/t/sso-dlya-samohostinga/691/8 "2025-12-08T12:18:50Z")

</div>

Кто-то пробовал использовать [voidauth](https://voidauth.app/) ?

---

<div class="post-metadata">

**Author:** ![e.s.oshurkov](https://forum.samohosting.ru/user_avatar/forum.samohosting.ru/e.s.oshurkov/32/3050_2.png) [@e.s.oshurkov](https://forum.samohosting.ru/u/e.s.oshurkov)\
**Post date:** [08.Апрель.2026 06:24:42 UTC](https://forum.samohosting.ru/t/sso-dlya-samohostinga/691/9 "2026-04-08T06:24:42Z")

</div>

использую [Authelia](https://www.authelia.com/) с пользователями в **LDAP**. На нагрузку не жалуюсь, вроде бы 0.1% цпу и 30Мб рам. Но это не точно.

---

<div class="post-metadata">

**Author:** ![KRom](https://forum.samohosting.ru/user_avatar/forum.samohosting.ru/krom/32/362_2.png) [@KRom](https://forum.samohosting.ru/u/KRom)\
**Post date:** [08.Апрель.2026 09:00:10 UTC](https://forum.samohosting.ru/t/sso-dlya-samohostinga/691/10 "2026-04-08T09:00:10Z")

</div>

> [@KRom](#):
>
> Ну вот это на N4000 сейчас

> [@KRom](#):
>
> Пока решил остаться на Authentik, потюнил его проиводительность, добавил оперативки, добавил еще LDAP провайдера

Пришлось для метрик вынести LDAP и RAC провайдеров в отдельные docker-compose и стало тяжко совсем.

В итоге сделал финт ушами и купил миник на N150, на нем Authentic с 2мя ядрами работает нормально

 ![image](https://forum.samohosting.ru/uploads/default/original/2X/9/96183e2bed8ec0fbcba688c2f2725fc2c0ce0aa3.jpeg)

Хотя и остается самым жрущим сервисом на минике, что очень странно, ладно в процессе работы, но он в фоне что-то постоянно делает

 ![image](https://forum.samohosting.ru/uploads/default/original/2X/5/5989c1a4b759d936a8a4c21dd8b3399efb7568e1.jpeg) ![image](https://forum.samohosting.ru/uploads/default/original/2X/0/01a6e2595e51141410855a738ea94cfe0ad7f85e.png)

Но ресурсов хватает и пока остаюсь на нем
