Централизованная двухфакторная аутентификация: полное руководство по настройке и развертыванию Authelia (2026) | AdminWiki
Timeweb Cloud — сервера, Kubernetes, S3, Terraform. Лучшие цены IaaS.
Попробовать

Централизованная двухфакторная аутентификация: полное руководство по настройке и развертыванию Authelia (2026)

19 мая 2026 10 мин. чтения

Authelia - это открытое решение для единой точки входа (SSO) и двухфакторной аутентификации (2FA), которое вы развертываете и контролируете самостоятельно. Оно защищает веб-сервисы в вашей инфраструктуре, такие как панели управления TrueNAS, Grafana, Nextcloud или внутренние wiki, централизуя управление доступом. Это аналог корпоративных платформ вроде Okta или Azure AD, но для самохостинга. Руководство проведет вас от выбора архитектуры до запуска работающей системы, с акцентом на практические шаги, которые экономят время и снижают риск ошибок.

Зачем нужна Authelia и подготовка инфраструктуры

Вместо настройки 2FA для каждого сервиса отдельно, Authelia становится единым шлюзом. Вы настраиваете правила доступа один раз, а все запросы к вашим сервисам сначала проходят через него. Это упрощает администрирование, усиливает безопасность и дает полный контроль над данными аутентификации.

Authelia vs. корпоративные SSO: когда свое решение выгоднее

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

Критерий Authelia Корпоративные SSO (Okta, Azure AD)
Контроль данных Полный. Все данные остаются на ваших серверах. Ограничен. Данные хранятся у провайдера.
Стоимость Бесплатно (опенсорс). Затраты только на инфраструктуру. Подписка на пользователя/месяц, может быть значительной для команд.
Сложность настройки Выше. Требует навыков администрирования Linux, Docker, обратных прокси. Ниже. Управляемый сервис с графическим интерфейсом и поддержкой.
Интеграции Работает через обратный прокси (Nginx, Traefik), универсально для любого веб-сервиса. Готовые коннекторы для популярных SaaS, но могут не покрывать кастомные системы.

Authelia оптимальна для команд до 50-100 человек, для защиты личных или внутренних корпоративных проектов, где есть ресурсы для поддержки собственной инфраструктуры. Если вам нужен готовый сервис с гарантиями SLA и широкой поддержкой протоколов из коробки, лучше рассмотреть коммерческие варианты.

Что нужно подготовить перед установкой

Перед началом убедитесь, что у вас есть:

  1. Сервер с ОС Linux (Ubuntu 22.04 LTS/Debian 12 или новее) и минимум 1 ГБ оперативной памяти.
  2. Установленные Docker и Docker Compose (v2+).
  3. Работающий обратный прокси (Nginx или Traefik) с поддержкой SSL-сертификатов, например, от Let's Encrypt.
  4. Зарезервированные домены или субдомены:
    • Для самого Authelia, например, auth.your-domain.com.
    • Для сервисов, которые будут защищаться, например, nas.your-domain.com, grafana.your-domain.com.
  5. Резервная копия текущих конфигураций вашего обратного прокси.

Также заранее определитесь с базой данных. Для долговременного хранения пользователей и настроек используйте PostgreSQL - это надежнее. Для хранения сессий и кэша, если планируете высокую нагрузку, добавьте Redis для скорости. В небольших развертываниях можно начать только с PostgreSQL.

Пошаговая установка и базовая конфигурация Authelia

Мы развернем Authelia в Docker, что обеспечит изоляцию и простоту обновления. Все команды проверены на Ubuntu/Debian.

Развертывание с Docker Compose: готовые конфигурационные файлы

Создайте структуру каталогов и файлов.

mkdir -p /opt/authelia/{config,data}
cd /opt/authelia

Создайте файл docker-compose.yml. Приведем вариант с PostgreSQL.

version: '3.8'

services:
  authelia:
    image: authelia/authelia:latest
    container_name: authelia
    volumes:
      - ./config:/config
      - ./data:/data
    environment:
      - TZ=Europe/Moscow
    ports:
      - "9091:9091"
    restart: unless-stopped
    depends_on:
      - postgres
    networks:
      - authelia-network

  postgres:
    image: postgres:15-alpine
    container_name: authelia-postgres
    volumes:
      - ./data/postgres:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=authelia
      - POSTGRES_PASSWORD=REPLACE_WITH_STRONG_PASSWORD
      - POSTGRES_DB=authelia
    restart: unless-stopped
    networks:
      - authelia-network

networks:
  authelia-network:
    driver: bridge

Теперь создайте основной конфигурационный файл /opt/authelia/config/configuration.yml. Это его минимальная рабочая версия.

host: 0.0.0.0
port: 9091
log:
  level: info

jwt_secret: REPLACE_WITH_A_RANDOM_STRING_AT_LEAST_64_CHARS

default_redirection_url: https://auth.your-domain.com

server:
  read_buffer_size: 4096
  write_buffer_size: 4096
  enable_pprof: false
  enable_expvars: false
  disable_healthcheck: false

totp:
  issuer: your-company.com
  period: 30
  skew: 1

webauthn:
  disable: false
  display_name: Authelia
  timeout: "60s"

session:
  name: authelia_session
  secret: REPLACE_WITH_ANOTHER_RANDOM_STRING_AT_LEAST_64_CHARS
  expiration: 1h
  inactivity: 5m
  domain: your-domain.com

storage:
  postgres:
    host: postgres
    port: 5432
    database: authelia
    username: authelia
    password: REPLACE_WITH_STRONG_PASSWORD_FROM_COMPOSE

authentication_backend:
  file:
    path: /config/users.yml
    password:
      algorithm: argon2id
      iterations: 1
      salt_length: 16
      parallelism: 8
      memory: 128

access_control:
  default_policy: deny
  rules:
    - domain:
        - "auth.your-domain.com"
      policy: bypass

    - domain:
        - "*.your-domain.com"
      policy: two_factor

regulation:
  max_retries: 5
  find_time: 2m
  ban_time: 5m

notifier:
  disable: yes

Замените все места с REPLACE_WITH... и your-domain.com на свои значения. Сгенерировать криптографические секреты можно командой: openssl rand -base64 48.

Создайте файл пользователей /opt/authelia/config/users.yml.

users:
  admin:
    displayname: "Administrator"
    password: "$argon2id$v=19$m=65536,t=3,p=4$BpLnfgDsc2WD8F2q$o/vzA4myCqZZ36bUGsDY//8mKUYNZZaR0t4MFFSs+iM"
    email: admin@your-domain.com
    groups:
      - admin

Пароль в этом примере - password. Сгенерируйте свой хэш с помощью Authelia: docker run --rm authelia/authelia:latest authelia hash-password 'YourStrongPassword'.

Первичный запуск и диагностика проблем

Запустите сервисы.

cd /opt/authelia
docker-compose up -d

Проверьте логи на наличие ошибок.

docker-compose logs -f authelia

В логах должны появиться сообщения об успешном подключении к базе данных и старте сервера: INFO […] Authelia is listening for non-TLS connections on 0.0.0.0:9091.

Типичные проблемы на этом этапе:

  • Ошибка синтаксиса YAML: Проверьте отступы в configuration.yml. Используйте пробелы, а не табуляцию.
  • "Permission denied" на volumes: Убедитесь, что у пользователя, от которого запущен Docker, есть права на чтение/запись каталогов /opt/authelia/config и /opt/authelia/data.
  • "Connect: connection refused" к БД: Убедитесь, что контейнер authelia-postgres запущен (docker-compose ps). Проверьте логи PostgreSQL.

После успешного запуска Authelia будет доступна по адресу http://your-server-ip:9091, но для работы аутентификации ее необходимо связать с обратным прокси и доменом.

Интеграция с сервисами: настройка правил доступа и обратного прокси

Authelia не перехватывает трафик автоматически. Вы настраиваете обратный прокси (Nginx, Traefik) так, чтобы он проверял аутентификацию через Authelia, прежде чем передать запрос конечному сервису.

Пишем правила доступа: примеры для типичных сценариев

Правила определяются в секции access_control файла configuration.yml. Они обрабатываются сверху вниз, первое совпадение применяется.

Добавьте или измените правила в соответствии с вашими сервисами.

access_control:
  default_policy: deny
  rules:
    # 1. Публичная страница статусов - доступ без аутентификации
    - domain: "status.your-domain.com"
      policy: bypass

    # 2. Сам интерфейс Authelia - должен быть открыт
    - domain: "auth.your-domain.com"
      policy: bypass

    # 3. Административная панель TrueNAS - строгая защита
    - domain: "nas.your-domain.com"
      policy: two_factor
      # Ограничение по сети: только из офисной сети
      networks:
        - 192.168.1.0/24
        - 10.0.0.0/8

    # 4. Внутренняя Wiki (Confluence, BookStack) - достаточно пароля
    - domain: "wiki.your-domain.com"
      policy: one_factor

    # 5. Grafana - двухфакторная аутентификация для всех
    - domain: "grafana.your-domain.com"
      policy: two_factor

    # 6. Запрет доступа для всех остальных доменов (сработает default_policy: deny)

После изменения конфигурации перезапустите Authelia: docker-compose restart authelia.

Настройка Nginx в качестве прокси с аутентификацией

Теперь нужно настроить Nginx для защищаемого сервиса, например, для Grafana. В конфигурации сайта (/etc/nginx/sites-available/grafana.your-domain.com) добавьте директивы для интеграции с Authelia.

server {
    listen 443 ssl http2;
    server_name grafana.your-domain.com;

    ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;

    # Эндпоинт проверки аутентификации в Authelia
    auth_request /authelia;
    auth_request_set $user $upstream_http_remote_user;
    auth_request_set $groups $upstream_http_remote_groups;
    error_page 401 =302 https://auth.your-domain.com/?rd=$scheme://$host$request_uri;

    location /authelia {
        internal;
        proxy_pass http://localhost:9091/api/verify; # Укажите IP сервера Authelia, если он на другой машине
        proxy_pass_request_body off;
        proxy_set_header Content-Length "";
        proxy_set_header X-Original-URL $scheme://$host$request_uri;
        proxy_set_header X-Forwarded-Method $request_method;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Uri $request_uri;
        proxy_set_header X-Forwarded-For $remote_addr;
    }

    location / {
        # Передаем заголовки с данными пользователя в Grafana
        proxy_set_header Remote-User $user;
        proxy_set_header Remote-Groups $groups;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;

        proxy_pass http://localhost:3000; # Адрес вашего сервиса Grafana
        proxy_redirect off;
    }
}

Проверьте конфигурацию Nginx и перезагрузите его.

nginx -t
systemctl reload nginx

Теперь при попытке зайти на https://grafana.your-domain.com вы будете перенаправлены на страницу входа Authelia. Аналогичным образом настраивается защита для TrueNAS Scale или других сервисов. Для систем, критичных к безопасности баз данных, также полезно ознакомиться с руководством по защите PostgreSQL, которое дополняет настройки Authelia.

Управление пользователями и настройка двухфакторной аутентификации (2FA)

После интеграции с прокси пользователи смогут зарегистрироваться и настроить 2FA при первом входе на защищенный сервис.

Регистрация TOTP и использование приложений-аутентификаторов

Когда пользователь впервые перейдет на защищенный домен, он увидит страницу входа Authelia. После ввода логина и пароля (из users.yml) система предложит настроить двухфакторную аутентификацию.

  1. Откроется экран с QR-кодом и текстовым TOTP-секретом.
  2. Пользователь открывает приложение-аутентификатор (Google Authenticator, Authy, Aegis) на своем телефоне.
  3. Нужно отсканировать QR-код или ввести секрет вручную.
  4. Приложение начнет генерировать 6-значные коды, обновляемые каждые 30 секунд.
  5. Для подтверждения пользователь вводит текущий код из приложения в форму Authelia.

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

Резервные коды: ваш страховой полис от потери доступа

Сразу после успешной настройки TOTP Authelia предложит сгенерировать резервные коды. Это одноразовые пароли, которые работают даже при потере телефона с аутентификатором.

Как это работает:

  1. В интерфейсе Authelia после подтверждения TOTP нажмите "Generate backup codes".
  2. Система создаст набор из 16 уникальных кодов (например, 3FA9-7C2B). Генерация происходит локально в вашем браузере, коды никуда не передаются.
  3. Эти коды необходимо немедленно сохранить. Рекомендуется:
  4. При потере доступа к телефону пользователь входит на страницу Authelia, вводит логин/пароль, а на этапе 2FA выбирает опцию "Use a backup code" и вводит один из сохраненных кодов.
  5. После входа по резервному коду нужно немедленно перейти в настройки безопасности и зарегистрировать новое устройство 2FA, так как использованный код становится недействительным.

Эта практика, используемая GitHub, Google и AWS, критически важна для избежания блокировки аккаунтов. Не пренебрегайте ею.

Администрирование, мониторинг и решение проблем

Работающая система требует регулярного обслуживания. Вот ключевые процедуры.

Резервное копирование и процедура обновления

Резервное копирование:

  • Конфигурация: Скопируйте всю папку /opt/authelia/config.
  • База данных PostgreSQL: Выполните дамп.
    cd /opt/authelia
    docker-compose exec postgres pg_dump -U authelia authelia > backup_$(date +%Y%m%d).sql

Обновление Authelia:

  1. Остановите сервисы: docker-compose down.
  2. Сделайте резервную копию конфигов и БД (как указано выше).
  3. Обновите номер версии образа в файле docker-compose.yml (например, authelia/authelia:v4.38). Проверьте официальный changelog на наличие breaking changes.
  4. Запустите заново: docker-compose pull && docker-compose up -d.
  5. Проверьте логи на отсутствие ошибок.

Диагностика: читаем логи и ищем причину сбоя

Большинство проблем решается анализом логов.

  • "Authentication failed" при корректном вводе данных: Проблема в передаче заголовков от Nginx к Authelia. Убедитесь, что в конфиге Nginx указан правильный адрес эндпоинта /api/verify и заголовки X-Original-URL, X-Forwarded-* передаются. Для комплексной защиты инфраструктуры также полезно понимать методы противодействия DDoS-атакам, которые могут влиять на доступность сервиса аутентификации.
  • "Connect: connection refused" в логах Authelia: База данных недоступна. Проверьте, запущен ли контейнер с БД (docker-compose ps), и корректны ли параметры подключения в configuration.yml.
  • Правила доступа не применяются: Проверьте порядок правил в access_control. Правило с policy: bypass для широкого домена может перекрывать все последующие. Убедитесь, что домен в правиле точно соответствует домену в запросе.
  • Пользователь не видит запрос на 2FA: Для его домена, вероятно, установлена политика one_factor. Измените ее на two_factor.

Для базового мониторинга здоровья Authelia используйте встроенный эндпоинт: https://auth.your-domain.com/api/health. Он должен возвращать статус 200 OK. Интеграцию с системами мониторинга, такими как Prometheus, можно настроить через соответствующий экспортер.

Регулярно обновляйте криптографические секреты (jwt_secret, session.secret). Создайте для этого задание в cron, которое будет генерировать новые секреты и перезапускать Authelia с определенной периодичностью (например, раз в год). Для автоматизации подобных рутинных задач администрирования Linux пригодятся техники из практического руководства по системному администрированию.

Для масштабирования на большие команды рассмотрите переход с файлового бэкенда пользователей (authentication_backend.file) на LDAP или SQL. Это позволит централизованно управлять учетными записями.

Внедрение Authelia - это значительный шаг к повышению безопасности вашей инфраструктуры. Система дает контроль и гибкость, а следуя этому руководству, вы минимизируете риски на этапе развертывания. Для дальнейшей автоматизации рабочих процессов, включая взаимодействие с ИИ-моделями, вы можете изучить возможности агрегатора AiTunnel, который предоставляет единый API для более чем 200 моделей, включая GPT и Claude, с оплатой в рублях и управлением бюджетами.

Поделиться:
Сохранить гайд? В закладки браузера