Удельта

Пошаговая инструкция · Самостоятельная установка

Как установить authentik на Ubuntu и подключить первое приложение

Пошаговая инструкция для самостоятельной установки. Развернём authentik за HTTPS, создадим администратора и подключим пробное приложение по OpenID Connect. Покажем, как закрыть административный доступ и сохранить данные для восстановления входа.

Настройка единого входа: жетон личности подключён к механизму доступа в приложение

Что подготовить и как читать инструкцию #

Установка состоит из PostgreSQL, сервера authentik и фонового worker. Сервер обслуживает страницы входа и протоколы авторизации, worker выполняет фоновые операции. В выбранной версии официальный небольшой Compose использует PostgreSQL без отдельного Redis, поэтому старые руководства с другим набором компонентов не стоит смешивать с этим примером.

Потребуется чистая Ubuntu 26.04 LTS, SSH-доступ и домен login.example.com. Выполните общую подготовку Ubuntu с Docker Engine, Compose v2 и Nginx на хосте. Для выбранного контейнерного метода не устанавливайте Python и зависимости authentik через apt. Реальное испытание приложения на этой ОС в рамках подготовки статьи не проводилось.

Команды выполняйте в терминале сервера после подключения по SSH, если шаг не указывает другое место. sudo даёт команде права администратора. Действия в браузере выполняйте на своём компьютере. Домены, IP-адреса и значения ВАШ_ПАРОЛЬ из примеров заменяйте своими до выполнения команды.

Двигайтесь по одному шагу и проверяйте результат перед следующим. Блок с <<EOF или другим именем завершения копируйте целиком: он записывает содержимое одного файла. При работе в nano сохраняйте файл клавишами Ctrl+O, Enter и выходите Ctrl+X. Если прервали SSH-сеанс, снова перейдите в указанный каталог; переменные предыдущего сеанса потребуется задать заново.

Настройка внешнего доступа использует обратный прокси Nginx и Certbot для Nginx. Приложение остаётся доступным на локальном порту; снаружи открыт его HTTPS-домен.

Требования к заголовкам и WebSocket описаны в официальной настройке прокси authentik. Nginx перезаписывает клиентские заголовки; контейнерный порт опубликован только локально.

Шаг 1. Подготовьте каталог authentik #

В отдельном каталоге будут настройки и постоянные данные. После перехода все команды docker compose выполняйте отсюда.

Подготовьте каталог authentik
mkdir -p ~/services/authentik/{data,certs,custom-templates}
cd ~/services/authentik

Текущий каталог — ~/services/authentik.

Шаг 2. Создайте пароль базы и ключ приложения #

Команда создаёт .env с двумя разными случайными значениями. PG_PASS защищает PostgreSQL, AUTHENTIK_SECRET_KEY связан с работой самого authentik. Запускайте генерацию только для новой установки.

Создайте пароль базы и ключ приложения
umask 077
printf 'PG_PASS=%s
AUTHENTIK_SECRET_KEY=%s
'   "$(openssl rand -hex 24)" "$(openssl rand -hex 48)" > .env

В .env заполнены оба значения. Сохраните их в закрытой копии, не заменяйте при обычном перезапуске.

Шаг 3. Сохраните описание сервисов #

Откройте nano compose.yaml и вставьте YAML ниже. PostgreSQL хранит пользователей и настройки; server обслуживает вход, worker выполняет фоновые задачи. Общие параметры через YAML-якорь передаются обоим компонентам. Порт 9000 доступен только с сервера.

Сохраните описание сервисов
x-authentik-env: &authentik-env
  AUTHENTIK_POSTGRESQL__HOST: postgresql
  AUTHENTIK_POSTGRESQL__NAME: authentik
  AUTHENTIK_POSTGRESQL__USER: authentik
  AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS:?set database password}
  AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY:?set application secret}
services:
  postgresql:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_DB: authentik
      POSTGRES_USER: authentik
      POSTGRES_PASSWORD: ${PG_PASS}
    volumes:
      - database:/var/lib/postgresql/data
    healthcheck:
      test: ['CMD-SHELL', 'pg_isready -U authentik -d authentik']
      interval: 10s
      timeout: 5s
      retries: 10
  server:
    image: ghcr.io/goauthentik/server:2026.8.3
    command: server
    restart: unless-stopped
    env_file: .env
    environment: *authentik-env
    shm_size: 512mb
    ports:
      - '127.0.0.1:9000:9000'
    volumes:
      - ./data:/data
      - ./custom-templates:/templates
    depends_on:
      postgresql:
        condition: service_healthy
  worker:
    image: ghcr.io/goauthentik/server:2026.8.3
    command: worker
    restart: unless-stopped
    user: root
    env_file: .env
    environment: *authentik-env
    shm_size: 512mb
    volumes:
      - ./data:/data
      - ./certs:/certs
      - ./custom-templates:/templates
    depends_on:
      postgresql:
        condition: service_healthy
volumes:
  database:

Сохранены согласованные версии server и worker; пароль берётся из .env.

Шаг 4. Проверьте конфигурацию #

Compose прочитает YAML и переменные. Это помогает найти отступы и пустой пароль до запуска.

Проверьте конфигурацию
docker compose config --quiet

config --quiet завершился без вывода и ошибки.

Шаг 5. Загрузите образы #

pull скачивает готовые сервисы выбранной версии. Скорость зависит от соединения сервера с реестром.

Загрузите образы
docker compose pull

Все образы загружены без ошибки авторизации или соединения.

Шаг 6. Запустите authentik #

up -d запускает сервисы в фоне. При первом старте PostgreSQL создаёт базу, а приложение подготавливает таблицы.

Запустите authentik
docker compose up -d

Команда завершилась успешно; контейнеры созданы.

Шаг 7. Дождитесь готовности приложения #

Проверьте состояние и журнал server/worker, затем локальный HTTP-ответ. Перенаправление на экран входа — нормальный ответ.

Дождитесь готовности приложения
docker compose ps
docker compose logs --tail=100 server worker
curl -I http://127.0.0.1:9000/

Server и worker не перезапускаются; локальный адрес отвечает. При ошибке базы проверьте PG_PASS, а не отключайте проверку пароля.

Шаг 8. Ограничьте первый вход #

В firewall провайдера временно разрешите TCP 443 только своему административному IP. TCP 80 оставьте доступным для выпуска сертификата. Так первоначальную настройку не завершит случайный посетитель.

Настройку открывает ваш компьютер; посторонний адрес не имеет доступа к HTTPS.

Шаг 9. Сохраните сайт Nginx #

Установите Nginx и Certbot по подготовке Ubuntu, если ещё не установили. Откройте sudo nano /etc/nginx/sites-available/authentik и вставьте файл ниже. Замените все домены своими. Nginx передаёт приложению домен, адрес клиента и протокол; Upgrade и Connection сохраняют WebSocket. До получения сертификата условие $scheme блокирует обычные HTTP-запросы кодом 403, чтобы вход не происходил без шифрования.

Файл /etc/nginx/sites-available/authentik
map $http_upgrade $authentik_connection_upgrade {
    default upgrade;
    "" close;
}

server {
    listen 80;
    server_name login.example.com;
    client_max_body_size 100m;
    location / {
        if ($scheme = http) { return 403; }
        proxy_pass http://127.0.0.1:9000;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $authentik_connection_upgrade;
        proxy_read_timeout 3600s;
        proxy_send_timeout 3600s;
        proxy_buffering off;
    }
}

Сохраните Ctrl+O, Enter, Ctrl+X. В файле пока нет путей к сертификатам: Nginx сможет проверить его до выпуска HTTPS.

Шаг 10. Подключите сайт и проверьте HTTP #

Ссылка подключает сохранённый сайт. nginx -t проверяет все настройки сервера; && разрешает перечитать их только при успешной проверке. curl проверяет ответ для вашего домена. При ошибке остановитесь, исправьте указанную строку и повторите проверку.

Подключите сайт и проверьте HTTP
sudo ln -sfn /etc/nginx/sites-available/authentik /etc/nginx/sites-enabled/authentik
sudo nginx -t && sudo systemctl reload nginx
curl -I http://login.example.com/

Ожидается successful от nginx -t и HTTP 403 для обычного запроса: до HTTPS это намеренная блокировка. DNS должен указывать на сервер, TCP 80/443 — быть доступен у провайдера. Ничего не вводите в форму входа по HTTP.

Шаг 11. Получите сертификат и включите HTTPS #

Каждое имя из команды должно указывать на этот сервер. Certbot проверит домены, сам добавит сертификат в сайт Nginx и включит перенаправление HTTP → HTTPS. Укажите свою почту при запросе и подтвердите условия Let’s Encrypt. Это отдельное действие после успешной проверки HTTP.

Получите сертификат и включите HTTPS
sudo /snap/bin/certbot --nginx -d login.example.com --redirect

Certbot сообщил об успешной установке. Откройте HTTPS-адрес со своего компьютера: браузер не должен предупреждать о сертификате. Для закрытой панели используйте разрешённый IP. При ошибке исправьте DNS, в том числе AAAA, либо доступ к TCP 80; не повторяйте запросы выпуска подряд.

Шаг 12. Проверьте продление сертификата #

Certbot из snap создаёт службу автоматического продления. Dry-run выполняет пробное продление: настоящие сертификаты не заменяются. Затем проверьте, что таймер планирует следующий запуск. Сохраняйте доступ к TCP 80 для следующих проверок домена.

Проверьте продление сертификата
sudo /snap/bin/certbot renew --dry-run
systemctl list-timers --all 'snap.certbot.renew*'

Пробное продление успешно, у таймера есть следующий запуск. Если тест не прошёл, проверьте /var/log/letsencrypt/letsencrypt.log; сначала исправьте причину. После этого можно создавать учётную запись и приглашать пользователей.

Шаг 13. Создайте первого администратора #

В браузере откройте https://login.example.com/if/flow/initial-setup/ с завершающим слешем. Если ваша версия направляет на первоначальный мастер с главной страницы, используйте этот переход. Установите сильный пароль akadmin.

Административный интерфейс открывается после входа; пароль сохранён.

Шаг 14. Подготовьте постоянный административный доступ #

Создайте отдельного администратора для обслуживания, настройте MFA и сохраните аварийный способ входа. Проверьте новую учётную запись в отдельном окне до выхода из akadmin.

Новый администратор входит и видит нужные разделы; способ восстановления сохранён вне сервера.

Шаг 15. Добавьте тестового пользователя #

Создайте обычную учётную запись и группу сотрудников. Войдите обычным пользователем через отдельный браузер. Установка SSO-сервера сама по себе не подключает остальные приложения.

Пользователь входит и не получает административных прав.

Шаг 16. Подключите одно тестовое приложение #

В административном интерфейсе создайте Application и подходящий Provider по документации подключаемой системы. Для OpenID Connect нужны точные callback/redirect URL и реквизиты клиента. Привяжите доступ к группе тестового пользователя; не используйте звёздочку вместо адресов.

Приложение входит через authentik; пользователь вне разрешённой группы получает отказ. Если приложения пока нет, этот шаг отложите — сервер входа уже установлен.

Шаг 17. Остановите изменение данных перед копией #

Предупредите о коротком перерыве. Подготовим закрытый каталог и остановим server/worker; PostgreSQL остаётся работать для выгрузки.

Остановите изменение данных перед копией
umask 077
mkdir -p "$HOME/backups/authentik"
docker compose stop server worker

Пользователи временно не входят, база доступна для pg_dump.

Шаг 18. Сохраните базу #

Дамп хранит пользователей, группы, приложения и настройки входа. Перенаправление вывода создаёт файл в каталоге копий.

Сохраните базу
docker compose exec -T postgresql pg_dump -U authentik -d authentik -Fc   > "$HOME/backups/authentik/database.dump"

database.dump создан без ошибок и не пуст.

Шаг 19. Сохраните ключи и файлы #

Архив включает .env, описание установки и пользовательские файлы. Без сохранённого ключа приложения восстановление одной базы будет неполным.

Сохраните ключи и файлы
tar -czf "$HOME/backups/authentik/files.tar.gz"   .env compose.yaml data certs custom-templates

files.tar.gz создан; перенесите обе части в закрытое внешнее хранилище.

Шаг 20. Верните вход и проверьте восстановление #

Запустите server/worker и повторите тестовый вход. Для проверки копии восстановите обе части на отдельном сервере той же версии с тестовыми адресами.

Верните вход и проверьте восстановление
docker compose start server worker

Тестовый пользователь снова входит; копия восстанавливает его настройки и доступ.

Если результат шага отличается #

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

Если страница не открывается, сначала проверьте домен и входящие порты, затем состояние приложения и его журнал. Если сайт открывается, но отдельное действие не работает, проверьте связанные компоненты — обработчик фоновых задач, почту или права пользователя. Официальные источники в конце статьи относятся к выбранному способу установки.

Настройки внешнего доступа храните вместе с копией приложения: /etc/nginx/sites-available/authentik и /etc/letsencrypt содержат сайт и сертификаты с закрытыми ключами. Архивируйте их с sudo в закрытое хранилище. После восстановления подключите сайт через sites-enabled, выполните sudo nginx -t, затем перечитайте Nginx. Для ошибки 502 сначала проверьте локальное приложение и /var/log/nginx/error.log; для сертификата — /var/log/letsencrypt/letsencrypt.log и таймер продления.

Обсудить установку и настройку

Материал был полезен?

Сообщить об ошибке или задать вопрос редакции

Сообщение увидит редакция. Не указывайте пароли и личные данные. Текст удаляется через 180 дней.

О материале

ИнфраструктураРуководствоЗадача: установитьУровень: практикаauthentik

Последнее обновление:

Обсуждение

Комментарии проходят подтверждение адреса и проверку редакцией.