bolt Valebyte VPS от $4/мес — NVMe, запуск за 60 секунд.

Получить VPS arrow_forward
eco Начальный Туториал

Установка Authentik на VPS: SSO, MFA и централизованная аутентификация

calendar_month Jun 11, 2026 schedule 21 мин. чтения visibility 32 просмотров
Установка Authentik на VPS: SSO, MFA и централизованная аутентификация
info

Нужен сервер для этого гайда? Мы предлагаем выделенные серверы и VPS в 50+ странах с мгновенной настройкой.

Нужен сервер для этого гайда?

Разверните VPS или выделенный сервер за минуты.

Установка Authentik на VPS: SSO, MFA и централизованная аутентификация

TL;DR

В этом подробном руководстве мы шаг за шагом настроим Authentik — мощное Open Source решение для управления идентификацией и доступом (IAM) на вашем собственном VPS. Вы получите централизованную систему единого входа (SSO) и многофакторной аутентификации (MFA), готовую к интеграции с вашими веб-приложениями, что значительно повысит безопасность и упростит управление пользователями.

  • Authentik будет установлен с использованием Docker Compose для легкого развертывания и управления.
  • В качестве базы данных будет использоваться внешняя PostgreSQL 16 для лучшей производительности и масштабируемости.
  • Мы настроим Caddy в качестве обратного прокси-сервера с автоматическим получением TLS/HTTPS сертификатов от Let's Encrypt.
  • Будут рассмотрены базовые шаги по защите сервера, включая фаервол и SSH-ключи.
  • Вы узнаете, как настроить бэкапы и поддерживать систему в актуальном состоянии.

Что мы настраиваем и зачем

Схема: Что мы настраиваем и зачем
Схема: Что мы настраиваем и зачем

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

Authentik — это Open Source платформа для управления идентификацией и доступом (Identity and Access Management, IAM), которая позволяет реализовать единый вход (Single Sign-On, SSO) и многофакторную аутентификацию (Multi-Factor Authentication, MFA) для всех ваших приложений. Вместо того чтобы создавать и управлять отдельными учетными записями для каждого сервиса (GitLab, Mattermost, Nextcloud, Grafana и т.д.), пользователи будут проходить аутентификацию один раз через Authentik, а затем получать бесшовный доступ ко всем интегрированным приложениям.

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

Существуют различные подходы к решению задач IAM. Среди облачных управляемых сервисов можно выделить Okta, Auth0 или Azure AD, которые предлагают высокую доступность и минимальные затраты на администрирование, но при этом требуют ежемесячных платежей и подразумевают передачу контроля над данными третьей стороне. С другой стороны, существуют другие самохостинговые решения, такие как Keycloak или FreeIPA, которые также предоставляют возможности SSO и MFA, но могут быть более сложными в развертывании и настройке по сравнению с Authentik, особенно для небольших и средних инсталляций.

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

Какой VPS-конфиг нужен под эту задачу

Схема: Какой VPS-конфиг нужен под эту задачу
Схема: Какой VPS-конфиг нужен под эту задачу

Правильный выбор конфигурации VPS является ключевым для стабильной и производительной работы Authentik. Ниже представлены минимальные и рекомендуемые требования, актуальные на 2026 год, с учетом роста функциональности и оптимизации Authentik.

Минимальные требования (для небольших команд до 50 пользователей)

  • CPU: 2 vCPU (современный процессор x86-64, например, Intel Xeon E3/E5 или AMD EPYC).
  • RAM: 4 ГБ (этого достаточно для операционной системы, Authentik и PostgreSQL).
  • Диск: 80-100 ГБ NVMe SSD. Скорость дисковой подсистемы критична для производительности базы данных и общего отклика системы. NVMe значительно превосходит обычные SATA SSD.
  • Сеть: 1 Гбит/с uplink. Публичный IPv4 адрес обязателен для доступа к Authentik из интернета.

Рекомендуемый VPS-план (для команд до 200-300 пользователей)

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

  • CPU: 4 vCPU.
  • RAM: 8 ГБ.
  • Диск: 160-200 ГБ NVMe SSD.
  • Сеть: 1 Гбит/с uplink, публичный IPv4.

Для аренды VPS с указанными характеристиками, вы можете рассмотреть предложения различных провайдеров, которые соответствуют этим параметрам. Убедитесь, что выбранный тариф включает NVMe SSD и достаточный объем оперативной памяти.

Когда нужен dedicated, а не VPS

Хотя VPS является отличным выбором для большинства сценариев, есть ситуации, когда выделенный сервер (dedicated server) будет более предпочтительным:

  • Очень высокая нагрузка: Если вы ожидаете тысячи активных пользователей, сотни запросов на аутентификацию в секунду или интеграцию с критически важными корпоративными системами, dedicated сервер предоставит вам всю мощь физического оборудования без виртуализации.
  • Строгие требования к производительности: Для приложений, где задержка даже в миллисекунды критична, dedicated сервер может предложить более предсказуемую и стабильную производительность.
  • Специфические требования к безопасности/комплаенсу: Некоторые регуляторные нормы или внутренние политики компании могут требовать полного контроля над аппаратным обеспечением, что лучше всего достигается на dedicated сервере.
  • Большие объемы данных: Если Authentik будет хранить значительные объемы пользовательских данных, логов или интегрироваться с очень крупными директориями, большая дисковая подсистема dedicated сервера будет кстати.

Локация VPS: на что влияет

Выбор географического расположения вашего VPS имеет несколько важных аспектов:

  • Задержка (Latency): Размещайте VPS как можно ближе к основной массе ваших пользователей. Чем меньше расстояние, тем быстрее будут ответы сервера, что критично для интерактивных веб-приложений и общего пользовательского опыта.
  • Законодательство о данных: Если вы работаете с персональными данными, убедитесь, что локация VPS соответствует требованиям GDPR, HIPAA или другим местным законам о хранении и обработке данных.
  • Доступность сети: Выбирайте локации с хорошими сетевыми связями и пирингом с основными провайдерами, чтобы обеспечить стабильный и быстрый доступ.

Подготовка сервера

Схема: Подготовка сервера
Схема: Подготовка сервера

Перед тем как приступить к установке Authentik, необходимо выполнить базовую настройку вашего VPS для обеспечения безопасности и стабильности. Мы будем использовать Ubuntu Server 24.04 LTS как операционную систему, так как она является одной из самых популярных и хорошо поддерживаемых платформ для серверов.

1. Подключение к серверу

Подключитесь к вашему VPS по SSH, используя учетные данные, предоставленные провайдером (обычно логин root и пароль, или пользователь с SSH-ключом).


ssh root@ВАШ_IP_АДРЕС

2. Обновление системы

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


sudo apt update && sudo apt upgrade -y

3. Создание нового пользователя и настройка sudo

Работа под пользователем root не рекомендуется для повседневных задач. Создайте нового пользователя с ограниченными правами и добавьте его в группу sudo.


# Замените 'youruser' на желаемое имя пользователя
sudo adduser youruser
sudo usermod -aG sudo youruser

Выйдите из сессии root и войдите под новым пользователем:


exit
ssh youruser@ВАШ_IP_АДРЕС

4. Настройка SSH-доступа по ключам (рекомендуется)

Для повышения безопасности рекомендуется использовать SSH-ключи вместо паролей. Если вы уже используете ключи, убедитесь, что ваш публичный ключ добавлен в файл ~/.ssh/authorized_keys нового пользователя.

На локальной машине:


# Если у вас нет SSH-ключа, сгенерируйте его
ssh-keygen -t rsa -b 4096

# Скопируйте публичный ключ на сервер (замените youruser и ВАШ_IP_АДРЕС)
ssh-copy-id youruser@ВАШ_IP_АДРЕС

На сервере: отключите вход по паролю и для root-пользователя.


sudo nano /etc/ssh/sshd_config

Найдите и измените следующие строки (или добавьте, если отсутствуют):


# Отключить вход для root
PermitRootLogin no

# Отключить вход по паролю (после того, как убедитесь, что вход по ключу работает!)
PasswordAuthentication no

# Убедитесь, что аутентификация по ключам включена
PubkeyAuthentication yes

Перезапустите SSH-сервис:


sudo systemctl restart sshd

5. Установка и настройка Fail2Ban

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


sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Создайте файл локальной конфигурации:


sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

В секции [DEFAULT] можете установить более агрессивные параметры, например:


bantime = 1h    # Время блокировки (1 час)
findtime = 10m  # Время, за которое считаются попытки (10 минут)
maxretry = 3    # Максимальное количество попыток до блокировки

Убедитесь, что секция [sshd] активна (enabled = true).


sudo systemctl restart fail2ban

6. Настройка брандмауэра (UFW)

UFW (Uncomplicated Firewall) — это удобный интерфейс для управления iptables. Настроим его, чтобы разрешить только необходимый трафик.


sudo apt install ufw -y

# Запретить весь входящий трафик по умолчанию
sudo ufw default deny incoming

# Разрешить весь исходящий трафик по умолчанию
sudo ufw default allow outgoing

# Разрешить SSH (по умолчанию порт 22)
sudo ufw allow ssh

# Разрешить HTTP (порт 80) и HTTPS (порт 443) для веб-сервера
sudo ufw allow http
sudo ufw allow https

# Включить UFW
sudo ufw enable

Подтвердите действие, введя y. Проверьте статус брандмауэра:


sudo ufw status verbose

7. Установка базовых утилит

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


sudo apt install curl wget git htop net-tools -y

Теперь ваш сервер подготовлен и защищен для дальнейшего развертывания Authentik.

Установка ПО — пошагово

Схема: Установка ПО — пошагово
Схема: Установка ПО — пошагово

Authentik разворачивается с использованием Docker Compose, что значительно упрощает управление его компонентами. Мы также будем использовать внешнюю базу данных PostgreSQL для лучшей производительности и масштабируемости.

1. Установка Docker Engine и Docker Compose Plugin (актуально на 2026)

Установим Docker Engine и Docker Compose Plugin, которые являются основой для запуска Authentik.


# 1. Обновление пакетов и установка необходимых зависимостей
sudo apt update && sudo apt install ca-certificates curl gnupg lsb-release -y

# 2. Добавление официального GPG ключа Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 3. Добавление репозитория Docker
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 4. Обновление индекса пакетов APT и установка Docker Engine
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

# 5. Добавление текущего пользователя в группу docker для выполнения команд без sudo
sudo usermod -aG docker $USER
newgrp docker # Примените изменения группы без перезапуска сессии

# 6. Проверка установки Docker
docker run hello-world

# 7. Проверка установки Docker Compose Plugin
docker compose version

Ожидаемый вывод для Docker Compose версии будет примерно Docker Compose version v2.24.x или выше.

2. Установка и настройка PostgreSQL 16

Authentik использует базу данных для хранения своих данных. Вместо использования встроенной базы данных в Docker-контейнере, мы установим PostgreSQL 16 непосредственно на VPS для лучшей производительности и управляемости.


# 1. Установка PostgreSQL 16
sudo apt install postgresql-16 -y

# 2. Запуск и включение PostgreSQL
sudo systemctl enable postgresql
sudo systemctl start postgresql

# 3. Переключение на пользователя postgres для настройки базы данных
sudo -i -u postgres

# 4. Создание новой базы данных и пользователя для Authentik
psql -c "CREATE DATABASE authentik;"
psql -c "CREATE USER authentik_user WITH PASSWORD 'ВАШ_ОЧЕНЬ_СИЛЬНЫЙ_ПАРОЛЬ_ДЛЯ_БД';"
psql -c "GRANT ALL PRIVILEGES ON DATABASE authentik TO authentik_user;"

# 5. Выход из пользователя postgres
exit

Замените 'ВАШ_ОЧЕНЬ_СИЛЬНЫЙ_ПАРОЛЬ_ДЛЯ_БД' на сложный уникальный пароль. Запишите его, он понадобится для конфигурации Authentik.

3. Развертывание Authentik с Docker Compose

Теперь мы готовы развернуть Authentik, используя его официальные Docker-образы.


# 1. Создание директории для Authentik и переход в нее
mkdir ~/authentik
cd ~/authentik

# 2. Загрузка файлов docker-compose.yml и .env из официального репозитория Authentik
# Для примера используем актуальную версию на 2024 год, которая будет актуальна и для 2026 с небольшими обновлениями
# Всегда проверяйте актуальный URL на официальном сайте Authentik (goauthentik.io)
wget https://goauthentik.io/docker-compose.yml
wget https://goauthentik.io/docker-compose.env
mv docker-compose.env .env # Переименовываем файл .env

# 3. Генерация уникального секретного ключа для Authentik
# Этот ключ используется для шифрования данных и должен быть надежным.
# Замените его на свой сгенерированный ключ.
AUTHENTIK_SECRET_KEY=$(python3 -c 'import secrets; print(secrets.token_urlsafe(64))')
echo "AUTHENTIK_SECRET_KEY=$AUTHENTIK_SECRET_KEY" >> .env
echo "Секретный ключ Authentik сгенерирован и добавлен в .env"

Важно: убедитесь, что вы используете актуальные версии файлов docker-compose.yml и .env с официального сайта Authentik. Команды выше используют общедоступные ссылки, но в 2026 году могут быть изменения.

4. Настройка файла .env

Отредактируйте файл .env, чтобы Authentik мог подключиться к вашей внешней базе данных PostgreSQL и использовать правильный домен.


nano .env

Найдите следующие строки и измените их в соответствии с вашей конфигурацией:

  • AUTHENTIK_HOST=https://your.domain.com/: Замените your.domain.com на ваше реальное доменное имя, через которое будет доступен Authentik.
  • AUTHENTIK_POSTGRESQL__HOST=localhost: Указываем, что PostgreSQL находится на том же сервере.
  • AUTHENTIK_POSTGRESQL__NAME=authentik: Имя базы данных, которую мы создали.
  • AUTHENTIK_POSTGRESQL__USER=authentik_user: Имя пользователя базы данных.
  • AUTHENTIK_POSTGRESQL__PASSWORD=ВАШ_ОЧЕНЬ_СИЛЬНЫЙ_ПАРОЛЬ_ДЛЯ_БД: Пароль пользователя базы данных.
  • AUTHENTIK_REDIS__HOST=redis: Оставьте как есть, если используете внутренний Redis от Docker Compose.

Пример отредактированных строк в .env:


AUTHENTIK_HOST=https://auth.example.com/ # Ваше доменное имя
AUTHENTIK_SECRET_KEY=ВАШ_СГЕНЕРИРОВАННЫЙ_КЛЮЧ # Он уже должен быть там
AUTHENTIK_POSTGRESQL__HOST=localhost
AUTHENTIK_POSTGRESQL__NAME=authentik
AUTHENTIK_POSTGRESQL__USER=authentik_user
AUTHENTIK_POSTGRESQL__PASSWORD=ВАШ_ОЧЕНЬ_СИЛЬНЫЙ_ПАРОЛЬ_ДЛЯ_БД
AUTHENTIK_REDIS__HOST=redis

Сохраните изменения (Ctrl+O, Enter, Ctrl+X).

5. Запуск Authentik

Теперь, когда все настроено, запустите Authentik с помощью Docker Compose.


# Загрузка образов Docker
docker compose pull

# Запуск контейнеров Authentik в фоновом режиме
docker compose up -d

Проверьте статус запущенных контейнеров:


docker compose ps

Вы должны увидеть контейнеры authentik_server, authentik_worker и redis в статусе running.

6. Создание суперпользователя Authentik

Для первого входа в Authentik необходимо создать учетную запись суперпользователя.


docker compose exec authentik sh -c "python3 manage.py createsuperuser"

Следуйте инструкциям в терминале, чтобы создать пользователя admin (или любое другое имя) и установить для него надежный пароль. Запишите эти учетные данные.

На этом шаге Authentik установлен и запущен. Далее мы настроим доступ к нему через веб-интерфейс с использованием обратного прокси и HTTPS.

Конфигурация

Схема: Конфигурация
Схема: Конфигурация

После установки Authentik нам необходимо настроить доступ к нему через веб-интерфейс, обеспечить шифрование трафика с помощью HTTPS и проверить его работоспособность. Для этих целей мы будем использовать Caddy — мощный и простой в настройке веб-сервер, который автоматически управляет сертификатами Let's Encrypt.

1. Установка и настройка Caddy

Caddy значительно упрощает настройку HTTPS, автоматически получая и обновляя SSL-сертификаты. Установим его на VPS.


# 1. Установка необходимых зависимостей для добавления репозитория Caddy
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https

# 2. Добавление GPG ключа Caddy
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg

# 3. Добавление репозитория Caddy
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list

# 4. Обновление индекса пакетов APT и установка Caddy
sudo apt update
sudo apt install caddy -y

# 5. Проверка статуса Caddy (он должен быть запущен автоматически)
sudo systemctl status caddy

Если Caddy не запущен, используйте sudo systemctl start caddy.

2. Настройка Caddyfile для Authentik

Создайте или отредактируйте файл конфигурации Caddy (Caddyfile), чтобы он выступал в роли обратного прокси для Authentik.


sudo nano /etc/caddy/Caddyfile

Удалите существующее содержимое и добавьте следующее:


your.domain.com {
    # Замените 'your.domain.com' на ваше реальное доменное имя (например, auth.example.com)

    # Включить сжатие GZIP
    encode gzip

    # Настройки обратного прокси на Authentik
    reverse_proxy authentik:9000 {
        # Заголовки для правильной работы проксирования
        header_up Host {host}
        header_up X-Real-IP {remote_ip}
        header_up X-Forwarded-For {remote_ip}
        header_up X-Forwarded-Proto {scheme}
    }

    # Настройки логов (опционально, но полезно для отладки)
    log {
        output file /var/log/caddy/access.log
    }
}

Важно: замените your.domain.com на ваш фактический домен, который вы указали в .env файле Authentik (например, auth.example.com). Убедитесь, что DNS A-запись для этого домена указывает на IP-адрес вашего VPS.

Сохраните изменения (Ctrl+O, Enter, Ctrl+X) и проверьте конфигурацию Caddy:


sudo caddy validate --config /etc/caddy/Caddyfile

Если конфигурация корректна, перезагрузите Caddy, чтобы применить изменения:


sudo systemctl reload caddy

Caddy автоматически получит SSL/TLS сертификаты от Let's Encrypt для вашего домена. Для этого убедитесь, что порты 80 и 443 открыты в фаерволе (мы это сделали на этапе подготовки сервера).

3. Работа с секретами

Как было показано ранее, все чувствительные данные, такие как секретный ключ Authentik (AUTHENTIK_SECRET_KEY) и пароли к базе данных, хранятся в файле .env. Это стандартная практика для Docker-приложений. Никогда не храните эти данные непосредственно в docker-compose.yml или в публичных репозиториях.

Убедитесь, что файл .env имеет ограниченные права доступа, чтобы только владелец мог его читать:


chmod 600 ~/authentik/.env

4. Проверка работоспособности

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

  • Проверка состояния контейнеров Docker:
  • 
    docker compose ps
    

    Все контейнеры (authentik_server, authentik_worker, redis) должны быть в статусе running.

  • Проверка логов Authentik:
  • 
    docker compose logs authentik_server
    docker compose logs authentik_worker
    

    Ищите ошибки или предупреждения. Нормальные логи должны показывать успешный запуск и инициализацию.

  • Проверка состояния Caddy:
  • 
    sudo systemctl status caddy
    sudo journalctl -u caddy --no-pager
    

    Убедитесь, что Caddy запущен и в логах нет ошибок, связанных с получением сертификатов или проксированием.

  • Проверка доступа через curl:
  • 
    curl -I https://your.domain.com/
    

    Вы должны получить HTTP-статус 200 OK или 302 Found (перенаправление на страницу входа Authentik), что указывает на успешное подключение и работу HTTPS.

  • Доступ через браузер:
  • Откройте в веб-браузере адрес https://your.domain.com/. Вы должны увидеть страницу входа Authentik. Используйте учетные данные суперпользователя, созданные ранее, для первого входа.

Поздравляем! Authentik успешно установлен и настроен на вашем VPS с HTTPS. Теперь вы можете приступить к интеграции своих приложений.

Бэкапы и обслуживание

Схема: Бэкапы и обслуживание
Схема: Бэкапы и обслуживание

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

1. Что бэкапить

Для полного восстановления Authentik вам понадобятся следующие компоненты:

  • База данных PostgreSQL: Содержит все пользовательские данные, конфигурации приложений, политики, логи и другую критически важную информацию Authentik. Это самый важный компонент для бэкапа.
  • Конфигурационные файлы Authentik: Файл .env, содержащий секретный ключ и параметры подключения к БД, а также docker-compose.yml.
  • Конфигурация обратного прокси: Файл /etc/caddy/Caddyfile (или конфигурация Nginx).
  • Данные медиа-файлов Authentik (опционально): Если вы загружаете изображения или другие медиа-файлы через Authentik (например, логотипы провайдеров), эти данные хранятся в томе Docker. По умолчанию, Authentik использует именованный том authentik_media. Если этот том не примонтирован к хостовой системе, его содержимое нужно бэкапить отдельно.

2. Простой скрипт автобэкапа

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


nano ~/backup_authentik.sh

Вставьте следующее содержимое:


#!/bin/bash

# --- Настройки ---
DATE=$(date +%Y%m%d%H%M%S)
BACKUP_DIR="/var/backups/authentik" # Директория для хранения бэкапов
DB_NAME="authentik"                 # Имя базы данных Authentik
DB_USER="authentik_user"            # Пользователь базы данных
DB_HOST="localhost"                 # Хост базы данных (наш VPS)
DB_PASSWORD="ВАШ_ОЧЕНЬ_СИЛЬНЫЙ_ПАРОЛЬ_ДЛЯ_БД" # Пароль к БД. В ПРОДАКШЕНЕ ИСПОЛЬЗУЙТЕ .pgpass ИЛИ SECRETS!

AUTHENTIK_ROOT_DIR="$HOME/authentik" # Путь к директории с docker-compose.yml и .env
CADDY_CONFIG_PATH="/etc/caddy/Caddyfile" # Путь к Caddyfile

# --- Создание директории для бэкапов, если ее нет ---
mkdir -p "$BACKUP_DIR"

# --- 1. Бэкап базы данных PostgreSQL ---
echo "Начало бэкапа базы данных PostgreSQL..."
export PGPASSWORD="$DB_PASSWORD" # Устанавливаем пароль для pg_dump
pg_dump -h "$DB_HOST" -U "$DB_USER" -d "$DB_NAME" > "$BACKUP_DIR/authentik_db_$DATE.sql"
unset PGPASSWORD # Удаляем пароль из переменных окружения
if [ $? -eq 0 ]; then
    echo "Бэкап базы данных успешно создан: $BACKUP_DIR/authentik_db_$DATE.sql"
else
    echo "Ошибка при создании бэкапа базы данных."
fi

# --- 2. Бэкап конфигурационных файлов Authentik ---
echo "Бэкап конфигурационных файлов Authentik..."
cp "$AUTHENTIK_ROOT_DIR/.env" "$BACKUP_DIR/authentik_env_$DATE.env"
cp "$AUTHENTIK_ROOT_DIR/docker-compose.yml" "$BACKUP_DIR/authentik_compose_$DATE.yml"
echo "Конфигурационные файлы Authentik забэкаплены."

# --- 3. Бэкап Caddyfile ---
echo "Бэкап Caddyfile..."
cp "$CADDY_CONFIG_PATH" "$BACKUP_DIR/Caddyfile_$DATE"
echo "Caddyfile забэкаплен."

# --- 4. Бэкап Docker-тома 'authentik_media' (если он не примонтирован к хосту) ---
# Если у вас том authentik_media примонтирован к хосту, вам нужно бэкапить эту директорию напрямую.
# Иначе, если это именованный Docker-том, можно использовать следующий подход:
# Определяем путь к тому Docker. Это может меняться в зависимости от версии Docker.
# VOLUME_PATH=$(docker volume inspect authentik_media --format '{{ .Mountpoint }}')
# if [ -d "$VOLUME_PATH" ]; then
#    echo "Бэкап Docker-тома authentik_media..."
#    tar -czf "$BACKUP_DIR/authentik_media_$DATE.tar.gz" -C "$VOLUME_PATH" .
#    echo "Docker-том authentik_media забэкаплен."
# else
#    echo "Том authentik_media не найден или не примонтирован к хосту."
# fi

# --- 5. Очистка старых бэкапов (например, хранить бэкапы за последние 7 дней) ---
echo "Очистка старых бэкапов..."
find "$BACKUP_DIR" -type f -name 'authentik_db_.sql' -mtime +7 -delete
find "$BACKUP_DIR" -type f -name 'authentik_env_.env' -mtime +7 -delete
find "$BACKUP_DIR" -type f -name 'authentik_compose_.yml' -mtime +7 -delete
find "$BACKUP_DIR" -type f -name 'Caddyfile_' -mtime +7 -delete
# find "$BACKUP_DIR" -type f -name 'authentik_media_.tar.gz' -mtime +7 -delete # Если вы бэкапите медиа-том
echo "Старые бэкапы удалены."

echo "Автоматический бэкап Authentik завершен в $DATE."

Важно: Замените 'ВАШ_ОЧЕНЬ_СИЛЬНЫЙ_ПАРОЛЬ_ДЛЯ_БД' на реальный пароль к вашей БД. В производственной среде крайне не рекомендуется хранить пароли непосредственно в скрипте. Вместо этого используйте файл ~/.pgpass с ограниченными правами доступа (chmod 0600 ~/.pgpass) или переменные окружения, которые безопасно загружаются.

Сделайте скрипт исполняемым:


chmod +x ~/backup_authentik.sh

3. Автоматизация бэкапов с помощью Cron

Добавьте скрипт в планировщик Cron, чтобы он запускался автоматически.


crontab -e

Добавьте следующую строку в конец файла, чтобы скрипт запускался ежедневно в 3:00 ночи:


0 3    /home/youruser/backup_authentik.sh > /dev/null 2>&1

Замените /home/youruser/backup_authentik.sh на полный путь к вашему скрипту.

4. Куда складывать бэкапы

Хранение бэкапов на том же сервере, что и основной сервис, является рискованным. В случае выхода из строя VPS, вы потеряете и данные, и бэкапы. Рекомендуется использовать внешние хранилища:

  • S3-совместимое хранилище: Облачные сервисы, такие как Amazon S3, DigitalOcean Spaces, Backblaze B2, предлагают надежное и недорогое хранение. Для загрузки бэкапов можно использовать утилиты типа s3cmd или rclone.
  • Отдельный VPS/Dedicated сервер: Вы можете настроить второй, более дешевый VPS исключительно для хранения бэкапов и их синхронизации по rsync или scp.
  • Локальный NAS/Сетевое хранилище: Для домашнего использования или небольших офисов можно использовать собственное сетевое хранилище, доступное через VPN.

5. Обновления Authentik и системы

Регулярные обновления важны для безопасности и получения новых функций.

  • Обновление Authentik:

    Для обновления Docker-контейнеров Authentik:

    
    cd ~/authentik
    docker compose pull # Загрузка новых образов
    docker compose down # Остановка текущих контейнеров
    docker compose up -d # Запуск новых контейнеров
    

    Всегда проверяйте официальную документацию Authentik перед крупными обновлениями (например, при переходе на новую мажорную версию), так как могут потребоваться миграции базы данных или изменения в файле docker-compose.yml.

  • Обновление операционной системы и PostgreSQL:

    Регулярно обновляйте ОС и все установленные пакеты:

    
    sudo apt update && sudo apt upgrade -y
    sudo apt autoremove -y
    

    Для PostgreSQL обновления обычно происходят вместе с системными, но иногда мажорные версии требуют ручной миграции данных. Всегда следуйте рекомендациям Ubuntu/PostgreSQL для таких случаев.

  • Планирование обслуживания:

    Проводите обновления в запланированные окна обслуживания, когда нагрузка на сервер минимальна, чтобы минимизировать возможное влияние на пользователей. Всегда делайте бэкапы перед крупными обновлениями.

Troubleshooting + FAQ

В этом разделе мы рассмотрим типичные проблемы, которые могут возникнуть при установке и эксплуатации Authentik, а также ответим на часто задаваемые вопросы.

Authentik контейнеры не запускаются.

Что проверить: Прежде всего, проверьте логи Docker Compose. Перейдите в директорию Authentik (~/authentik) и выполните docker compose logs. Это покажет вывод всех контейнеров. Если проблема в конкретном контейнере (например, authentik_server), можно посмотреть его логи отдельно: docker compose logs authentik_server.

Как фиксить: Ищите сообщения об ошибках в логах. Частые причины: неправильные параметры в файле .env (особенно AUTHENTIK_SECRET_KEY или параметры БД), недоступность базы данных PostgreSQL (проверьте, запущен ли PostgreSQL: sudo systemctl status postgresql), конфликты портов (если какой-то другой сервис уже использует порт 9000), или недостаток ресурсов (RAM/CPU) на VPS.

Не могу подключиться к Authentik через браузер (502 Bad Gateway или Connection Refused).

Что проверить:

  • DNS A-запись: Убедитесь, что ваше доменное имя (например, auth.example.com) правильно указывает на IP-адрес вашего VPS. Используйте dig your.domain.com или nslookup your.domain.com.
  • Caddy/Nginx статус: Проверьте, запущен ли ваш обратный прокси-сервер: sudo systemctl status caddy (или nginx).
  • Логи Caddy/Nginx: Изучите логи прокси-сервера. Для Caddy это sudo journalctl -u caddy --no-pager или файл, указанный в Caddyfile (например, /var/log/caddy/access.log). Для Nginx это обычно /var/log/nginx/error.log.
  • Фаервол: Убедитесь, что порты 80 и 443 открыты в UFW: sudo ufw status verbose.
  • Доступность Authentik изнутри: Попробуйте выполнить curl http://localhost:9000 на самом VPS. Если это работает, проблема в прокси-сервере или его конфигурации.

Как фиксить: Если проблема в DNS, обновите A-запись у вашего регистратора доменных имен. Если Caddy не запущен, попробуйте запустить его: sudo systemctl start caddy и проверить Caddyfile на синтаксические ошибки. Убедитесь, что в Caddyfile указан правильный адрес для проксирования (authentik:9000 или localhost:9000, в зависимости от сетевой конфигурации Docker).

Проблемы с TLS (сертификаты Let's Encrypt).

Что проверить: Caddy автоматически получает сертификаты. Основная причина проблем – невозможность Caddy связаться с серверами Let's Encrypt. Убедитесь, что:

  • Ваш домен доступен из интернета по портам 80 и 443.
  • Нет других сервисов, занимающих эти порты.
  • DNS A-запись для домена настроена правильно.

Как фиксить: Проверьте логи Caddy на сообщения об ошибках при получении сертификатов. Убедитесь, что UFW разрешает входящий трафик на порты 80 и 443. Если вы только что обновили DNS, дайте ему время на распространение (до нескольких часов).

Какой VPS-конфиг минимально подойдёт?

Для небольшой команды (до 50 пользователей) и базовых сценариев аутентификации, минимально подойдёт VPS с 2 vCPU, 4 ГБ RAM и 80 ГБ NVMe SSD. Это обеспечит стабильную работу Authentik и PostgreSQL, но без большого запаса на рост или высокую нагрузку.

Что выбрать — VPS или dedicated для этой задачи?

Для большинства сценариев, особенно для команд до нескольких сотен пользователей, VPS будет оптимальным и экономически выгодным решением. Dedicated сервер стоит рассматривать при очень высокой нагрузке (тысячи активных пользователей, интенсивные запросы), строгих требованиях к производительности или необходимости полного контроля над аппаратным обеспечением. VPS предлагает достаточную гибкость и мощность для большинства потребностей в централизованной аутентификации.

Как обновить Authentik?

Для обновления Authentik необходимо обновить его Docker-образы. Перейдите в директорию установки Authentik (~/authentik), затем выполните: docker compose pull (для загрузки новых образов), docker compose down (для остановки текущих контейнеров), и docker compose up -d (для запуска новых контейнеров). Всегда проверяйте официальную документацию Authentik перед крупными обновлениями на предмет миграций базы данных или изменений в конфигурации, чтобы избежать проблем совместимости.

Как сменить пароль суперпользователя Authentik?

Если вы забыли пароль суперпользователя, вы можете сбросить его, выполнив команду внутри контейнера Authentik: docker compose exec authentik sh -c "python3 manage.py changepassword admin" (замените admin на имя вашего суперпользователя). Система предложит ввести новый пароль.

Выводы и следующие шаги

Схема: Выводы и следующие шаги
Схема: Выводы и следующие шаги

Мы успешно развернули и настроили Authentik на вашем VPS, предоставив мощное и гибкое решение для централизованного управления идентификацией и доступом. Теперь у вас есть собственная платформа для единого входа (SSO) и многофакторной аутентификации (MFA), способная значительно повысить безопасность и удобство использования для ваших приложений.

Дальнейшие шаги помогут вам максимально использовать потенциал Authentik и интегрировать его в вашу инфраструктуру:

  • Интеграция первого приложения: Начните с интеграции одного из ваших веб-приложений (например, GitLab, Mattermost, Nextcloud, Grafana). Authentik поддерживает множество протоколов (OpenID Connect, SAML, LDAP) и имеет готовые интеграции.
  • Исследование расширенных функций: Изучите такие возможности Authentik, как LDAP Outposts (для синхронизации с существующими каталогами), создание сложных политик MFA, настройка различных источников идентификации (например, социальных провайдеров) и управление пользователями/группами.
  • Внедрение мониторинга и оповещений: Настройте системы мониторинга (например, Prometheus + Grafana) для отслеживания состояния Authentik, использования ресурсов VPS и активности аутентификации, чтобы своевременно реагировать на потенциальные проблемы или инциденты безопасности.

Поделиться этой записью:

установка authentik на vps: sso, mfa и централизованная аутентификация
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.