Authentik

Authentik - это провайдер аутентификации с открытым исходным кодом, который отличается гибкостью и универсальностью, поддерживая широкий набор протоколов.

При развертывании приложений в домашней лаборатории вы можете столкнуться с тем, что некоторые из них вовсе не поддерживают аутентификацию либо поддерживают базовую в которой могут иметься уязвимости. Так же малое количество сервисов из коробки поддерживает 2FA (двухфакторная аутентификация). Помимо этого для каждого сервиса вам приходится придумывать отдельно логин и пароль, что может запутать когда этих сервисов у вас много. Выход из всего этого есть и это - Authentik.

Технология единого входа (Single sign-on SSO) — метод аутентификации, который позволяет пользователям безопасно аутентифицироваться сразу в нескольких приложениях и сайтах, используя один набор учетных данных.

docker-compose.yml

services: postgres: ## аусентик использует PG как основную БД image: postgres:16-alpine container_name: postgres ports: - "5432:5432" environment: POSTGRES_USER: authentik POSTGRES_PASSWORD: password POSTGRES_DB: authentik_demo redis: image: redis:alpine container_name: redis restart: always ports: - "6379:6379" command: "--requirepass authentik" server: image: ghcr.io/goauthentik/server:2024.6.3 restart: unless-stopped command: server environment: AUTHENTIK_EMAIL__HOST: mailhog AUTHENTIK_EMAIL__PORT: 1025 AUTHENTIK_EMAIL__USE_TLS: false AUTHENTIK_EMAIL__USE_SSL: false AUTHENTIK_EMAIL__FROM: authentik@localhost AUTHENTIK_REDIS__HOST: redis AUTHENTIK_REDIS__PASSWORD: authentik AUTHENTIK_POSTGRESQL__HOST: postgres AUTHENTIK_POSTGRESQL__USER: authentik AUTHENTIK_POSTGRESQL__NAME: authentik_demo AUTHENTIK_POSTGRESQL__PASSWORD: password AUTHENTIK_SECRET_KEY: auth # super secret key AUTHENTIK_LOG_LEVEL: trace ports: - "9005:9000" - "9443:9443" depends_on: - postgres - redis worker: image: ghcr.io/goauthentik/server:2024.6.3 restart: unless-stopped command: worker environment: AUTHENTIK_EMAIL__HOST: mailhog AUTHENTIK_EMAIL__PORT: 1025 AUTHENTIK_EMAIL__USE_TLS: false AUTHENTIK_EMAIL__USE_SSL: false AUTHENTIK_EMAIL__FROM: authentik@localhost AUTHENTIK_REDIS__HOST: redis AUTHENTIK_REDIS__PASSWORD: authentik AUTHENTIK_POSTGRESQL__HOST: postgres AUTHENTIK_POSTGRESQL__USER: authentik AUTHENTIK_POSTGRESQL__NAME: authentik_demo AUTHENTIK_POSTGRESQL__PASSWORD: password AUTHENTIK_SECRET_KEY: auth # super secret key user: root depends_on: - postgres - redis - mailhog mailhog: # мок smtp сервер, UI доступен на порту 8025 (можно посмотреть все отправленные письма) image: mailhog/mailhog container_name: mailhog ports: - "1025:1025" - "8025:8025"