Установка Authelia на VPS, ее настройка и последующее обслуживание — это эффективный путь к усилению безопасности ваших веб-приложений и сервисов через централизованную систему аутентификации и двухфакторную верификацию, развернутую на собственном виртуальном сервере.
В мире, где безопасность данных становится критически важной, использование надежных систем аутентификации — не прихоть, а необходимость. Authelia представляет собой мощное решение для реализации Single Sign-On (SSO) и Two-Factor Authentication (2FA) перед вашими веб-приложениями. Развернутая на собственном VPS, Authelia позволяет вам полностью контролировать процесс аутентификации, защищая доступ к таким сервисам, как Nextcloud, Gitea, Grafana или любой другой ресурс, доступный через reverse proxy.
В этой статье мы подробно рассмотрим, что такое Authelia, для чего она нужна, какие системные требования предъявляет, и как выполнить ее пошаговую установку на VPS с использованием Docker и Docker Compose. Мы также охватим интеграцию с популярными reverse proxy, такими как Nginx и Caddy, настройку HTTPS, вопросы бэкапов и обновлений, а также поможем выбрать оптимальную конфигурацию VPS для вашей нагрузки. Наша цель — предоставить исчерпывающее руководство, которое позволит даже начинающим системным администраторам успешно развернуть и поддерживать Authelia.
Что такое Authelia и зачем она нужна на сервере?
Authelia — это с открытым исходным кодом решение для аутентификации, которое работает как промежуточный слой (middleware) перед вашими веб-приложениями. Его основная функция — предоставление централизованного доступа с поддержкой Single Sign-On (SSO) и надежной двухфакторной аутентификации (2FA) для сервисов, которые сами по себе не имеют встроенной поддержки продвинутых методов верификации. По сути, Authelia выступает в роли привратника, который проверяет учетные данные пользователя, прежде чем разрешить ему доступ к целевому приложению.
Когда пользователь пытается получить доступ к защищенному приложению, Authelia перехватывает запрос, перенаправляет пользователя на свою страницу входа, где он вводит логин и пароль, а затем, при необходимости, проходит второй фактор аутентификации (например, через TOTP-приложение или по электронной почте). После успешной аутентификации Authelia устанавливает сессионную куку и перенаправляет пользователя к исходному приложению, предоставляя ему доступ. Это позволяет защитить множество сервисов, используя единый набор учетных данных и единую политику безопасности.
Сценарии использования Authelia self-hosted на VPS
Развертывание Authelia на VPS открывает широкие возможности для повышения безопасности вашей инфраструктуры. Вот несколько типичных сценариев:
- Защита внутренних веб-приложений: Если у вас есть самохостящиеся сервисы, такие как Nextcloud для облачного хранилища, Gitea для контроля версий, Grafana для мониторинга, Portainer для управления Docker-контейнерами или даже простая админ-панель для вашего сайта, Authelia может добавить к ним надежный слой аутентификации.
- Унификация доступа: Вместо того чтобы управлять учетными записями в каждом приложении отдельно, Authelia позволяет централизовать управление пользователями (например, через LDAP или YAML-файл), упрощая администрирование и улучшая пользовательский опыт благодаря SSO.
- Усиление безопасности с 2FA: Многие внутренние приложения не предлагают 2FA или имеют ограниченные опции. Authelia добавляет поддержку TOTP (Time-based One-Time Password) или U2F (Universal 2nd Factor), а также аутентификацию по электронной почте, значительно повышая уровень защиты от несанкционированного доступа.
- Защита API: Authelia может быть использована для защиты API-интерфейсов, требуя аутентификации перед доступом к данным или функциям.
Преимущества Authelia Docker на VPS
Использование Docker для установки Authelia на VPS приносит ряд существенных преимуществ:
- Изоляция: Authelia работает в изолированном контейнере, не влияя на другие сервисы на вашем VPS. Это уменьшает конфликты зависимостей и упрощает управление.
- Портативность: Контейнеры легко переносить между различными средами или VPS-серверами.
- Воспроизводимость: Вы всегда можете быть уверены, что Authelia будет работать одинаково в любой среде с Docker.
- Простота развертывания: Docker Compose позволяет определить всю инфраструктуру Authelia (сам сервис, базу данных) в одном файле, что значительно упрощает установку Authelia и ее управление.
- Легкость обновлений: Обновление Authelia сводится к обновлению Docker-образа и перезапуску контейнера.
Выбрав контейнеризацию, вы получаете гибкое, безопасное и управляемое решение для централизованной аутентификации на вашем собственном сервере.
Системные требования и предварительная подготовка для установки Authelia
Перед тем как приступить к непосредственной установке Authelia, важно убедиться, что ваш VPS соответствует минимальным системным требованиям и выполнить ряд предварительных настроек. Это обеспечит стабильную и безопасную работу сервиса.
Операционная система и аппаратные ресурсы VPS
- Операционная система: Authelia как Docker-контейнер может работать на любой Linux-дистрибутиве, поддерживающем Docker. Рекомендуются LTS-версии (Long Term Support) серверных дистрибутивов, такие как:
- Ubuntu 22.04 LTS или новее
- Debian 11 (Bullseye) или новее
- CentOS Stream 8/9
- Процессор (CPU): Для большинства сценариев использования Authelia достаточно 1 vCPU. При очень большом количестве пользователей (сотни одновременных аутентификаций) или интеграции с тяжелыми LDAP-каталогами, возможно, потребуется 2 vCPU.
- Оперативная память (RAM): Authelia сама по себе потребляет немного RAM, около 50-100 МБ. Однако для стабильной работы всей системы (ОС, Docker-демон, Authelia, а также другие сервисы на VPS) рекомендуется минимум 1 ГБ RAM. Оптимально — 2 ГБ, что даст запас для кэширования и пиковых нагрузок.
- Дисковое пространство: Authelia не требует много места. Для самой Authelia и ее базы данных (SQLite по умолчанию или небольшой PostgreSQL) достаточно 5-10 ГБ. Однако для операционной системы, Docker-образов и логов рекомендуется минимум 25-50 ГБ SSD-диска. NVMe-диски обеспечат лучшую производительность.
Предварительная установка Docker и Docker Compose
Authelia предназначена для работы в Docker-контейнерах, поэтому установка Docker Engine и Docker Compose является обязательным шагом.
Установка Docker Engine
Для Ubuntu/Debian выполните следующие команды:
sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Добавьте вашего пользователя в группу docker, чтобы не использовать sudo при каждой команде Docker:
sudo usermod -aG docker $USER
newgrp docker
Проверьте установку Docker:
docker run hello-world
Установка Docker Compose
В современных версиях Docker Compose устанавливается как плагин к Docker (docker-compose-plugin), как показано выше. Если вы используете старую версию Docker или хотите установить Docker Compose как отдельный исполняемый файл, можете сделать это так:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Проверьте установку Docker Compose:
docker compose version
Настройка доменного имени и DNS-записей
Для корректной работы Authelia и reverse proxy с HTTPS вам потребуется:
- Доменное имя: Зарегистрируйте доменное имя, если у вас его еще нет.
- DNS-записи: Создайте следующие A-записи в вашем DNS-провайдере, указывающие на IP-адрес вашего VPS:
auth.yourdomain.com(для Authelia)app1.yourdomain.com(для первого защищаемого приложения)app2.yourdomain.com(для второго защищаемого приложения)- И так далее для каждого приложения, которое вы планируете защищать.
Почтовый сервер для 2FA и сброса пароля
Authelia использует электронную почту для отправки кодов 2FA (если выбран этот метод) и ссылок для сброса пароля. Вам потребуется доступ к SMTP-серверу. Это может быть:
- Внешний SMTP-провайдер: SendGrid, Mailgun, AWS SES, Gmail SMTP (с ограничениями). Это самый простой и надежный вариант.
- Собственный почтовый сервер: Если у вас уже есть свой почтовый сервер на VPS.
Подготовьте учетные данные SMTP (хост, порт, логин, пароль), так как они понадобятся при настройке Authelia.
После выполнения всех этих шагов ваш VPS будет готов к установке Authelia.
Ищете надёжный сервер для ваших проектов?
VPS от $10/мес и выделенные серверы от $9/мес с NVMe, DDoS-защитой и поддержкой 24/7.
Смотреть предложения →Пошаговая установка Authelia на VPS с использованием Docker Compose
Теперь, когда ваш VPS подготовлен, мы можем приступить к установке Authelia. Мы будем использовать Docker Compose для удобного развертывания Authelia вместе с базой данных.
1. Создание рабочей директории и файлов конфигурации
Создайте директорию для вашего проекта Authelia на VPS. Например, в домашней директории пользователя:
mkdir -p ~/authelia
cd ~/authelia
В этой директории мы создадим два основных файла: docker-compose.yml для определения сервисов Docker и configuration.yml для настроек Authelia.
2. Файл docker-compose.yml
Этот файл описывает, какие Docker-образы будут запущены, как они будут взаимодействовать, и какие ресурсы будут использовать. Для Authelia нам понадобится сам сервис Authelia и база данных для хранения пользовательских данных (по умолчанию Authelia может использовать SQLite, но для production рекомендуется PostgreSQL или MySQL). В нашем примере мы будем использовать SQLite для простоты, что идеально для небольших инсталляций.
Создайте файл docker-compose.yml:
nano docker-compose.yml
И вставьте следующее содержимое:
version: "3.8"
services:
authelia:
image: authelia/authelia:latest
container_name: authelia
restart: unless-stopped
volumes:
- ./config:/config # Маппинг директории с конфигурацией
environment:
- TZ=Europe/Moscow # Установите ваш часовой пояс
ports:
- "9091:9091" # Порт, на котором Authelia будет слушать запросы
networks:
- authelianet # Сеть для взаимодействия с reverse proxy
networks:
authelianet:
# external: true # Если вы хотите использовать существующую внешнюю сеть Docker,
# например, для вашего reverse proxy.
# Если reverse proxy тоже запускается через Docker Compose в той же директории,
# то можно оставить internal network.
# Для простоты пока оставим internal.
Пояснения:
image: authelia/authelia:latest: Использует последнюю стабильную версию образа Authelia.volumes: - ./config:/config: Маппирует локальную директориюconfig(которую мы создадим) внутри контейнера в/config, где Authelia ищет свои конфигурационные файлы.ports: - "9091:9091": Публикует порт 9091 контейнера на порт 9091 хоста. Этот порт будет использоваться вашим reverse proxy для связи с Authelia.networks: - authelianet: Определяет внутреннюю сеть Docker для Authelia. Если ваш reverse proxy также работает в Docker и ему нужно будет обращаться к Authelia по имени сервиса, убедитесь, что они находятся в одной Docker-сети (или используйтеexternal: trueи укажите имя существующей сети).
3. Файл configuration.yml (базовая настройка)
Это основной конфигурационный файл Authelia. Он определяет пользователей, домены, политики, настройки SMTP и многое другое. Создайте директорию config и файл configuration.yml внутри нее:
mkdir -p ~/authelia/config
nano ~/authelia/config/configuration.yml
Вставьте следующий базовый шаблон. Замените yourdomain.com на ваш реальный домен и заполните SMTP-данные.
# Документация: https://www.authelia.com/configuration/
---
log:
level: debug # Измените на 'info' или 'warn' для production
server:
host: 0.0.0.0
port: 9091
# Настройки доступа к базе данных (SQLite по умолчанию)
authentication_backend:
file:
path: /config/users_database.yml # Файл с пользователями и паролями (см. ниже)
access_control:
default_policy: deny # Запрещать по умолчанию, если не разрешено явно
rules:
# Разрешить доступ к Authelia UI без аутентификации (для самой страницы входа)
- domain: auth.yourdomain.com
policy: bypass
# Защитить все субдомены yourdomain.com, кроме auth.yourdomain.com
- domain: "*.yourdomain.com"
policy: two_factor
subject: "group:admins" # Только пользователи из группы 'admins'
# subject: "user:john.doe" # Или конкретный пользователь
session:
secret: # Генерируется ниже
domain: yourdomain.com # Ваш основной домен
name: authelia_session
# Настройки для двухфакторной аутентификации по электронной почте
notifier:
smtp:
host: smtp.your_email_provider.com # Например, smtp.sendgrid.net или smtp.gmail.com
port: 587 # Или 465 для SSL
username: your_smtp_username
password: your_smtp_password
sender: Authelia
disable_starttls: false # true, если порт 465 (SSL)
# Настройки для 2FA через TOTP
totp:
issuer: Authelia
# Настройки для генерации секретов
jwt_secret: # Генерируется ниже
# Настройки для хранения данных (SQLite)
storage:
local:
path: /config/db.sqlite3 # Путь к файлу базы данных SQLite
regulation:
max_retries: 3
find_time: 1m
ban_time: 5m
duo_api:
disable: true # Отключить Duo Security, если не используется
webauthn:
disable: true # Отключить WebAuthn, если не используется
# display_name: Authelia
# attestation_conveyance_preference: "none"
# user_verification: "preferred"
# challenge_timeout: "60s"
# rp_id: yourdomain.com
# rp_origin: https://auth.yourdomain.com
Важные поля для настройки:
log.level: Установитеdebugна время настройки, затемinfoдля production.access_control.rules: Определяет, какие домены и как будут защищены.default_policy: deny- хорошая практика безопасности.session.secretиjwt_secret: Это критически важные секреты. Их нужно сгенерировать.notifier.smtp: Заполните данные вашего SMTP-сервера.storage.local.path: Путь к файлу базы данных SQLite.
4. Генерация секретов и паролей
Для session.secret и jwt_secret требуются длинные случайные строки. Также вам понадобятся хэшированные пароли для пользователей.
Генерация Authelia-секретов
Authelia предоставляет утилиту для генерации этих секретов. Запустите временный контейнер Authelia для этого:
docker run --rm authelia/authelia:latest authelia crypto rand --size 64 --numeric --alphanumeric # Для session_secret
docker run --rm authelia/authelia:latest authelia crypto rand --size 64 --numeric --alphanumeric # Для jwt_secret
Скопируйте полученные строки и вставьте их в ваш configuration.yml под соответствующими полями session.secret и jwt_secret.
Генерация хэшированных паролей для пользователей
Authelia хранит пароли в виде хэшей. Используйте ту же утилиту для генерации хэшей:
docker run --rm authelia/authelia:latest authelia crypto hash generate --password 'Ваш_Пароль'
Замените 'Ваш_Пароль' на желаемый пароль. Скопируйте полученный хэш.
Теперь создайте файл users_database.yml в директории ~/authelia/config/ для определения пользователей и их групп:
nano ~/authelia/config/users_database.yml
Пример содержимого:
users:
john.doe:
displayname: John Doe
password: '$argon2id$v=19$m=65536,t=3,p=4$randomsalt$randomhash' # Вставьте сгенерированный хэш
email: [email protected]
groups:
- admins
- developers
jane.doe:
displayname: Jane Doe
password: '$argon2id$v=19$m=65536,t=3,p=4$randomsalt$randomhash' # Вставьте сгенерированный хэш
email: [email protected]
groups:
- developers
Замените хэши паролей и email-адреса на свои. Убедитесь, что группы соответствуют тем, что указаны в access_control.rules.
5. Запуск Authelia
После того как все файлы конфигурации созданы и заполнены, вы можете запустить Authelia с помощью Docker Compose:
cd ~/authelia
docker compose up -d
Команда -d запускает контейнеры в фоновом режиме. Проверьте статус контейнеров:
docker compose ps
И посмотрите логи Authelia, чтобы убедиться, что она запустилась без ошибок:
docker compose logs authelia
Вы должны увидеть сообщения о запуске и инициализации.
6. Первичная проверка
На данном этапе Authelia запущена и слушает на порту 9091 вашего VPS. Вы не сможете получить к ней доступ напрямую из браузера, так как она предназначена для работы через reverse proxy. Однако вы можете проверить ее доступность с помощью curl на самом сервере:
curl http://localhost:9091
Вы должны получить HTML-код страницы входа Authelia.
Теперь, когда установка Authelia Docker завершена, следующим шагом будет настройка reverse proxy для маршрутизации трафика к Authelia и вашим защищаемым приложениям, а также для обеспечения HTTPS.
Ищете сервер, который просто работает?
Valebyte VPS — NVMe, поддержка 24/7, развёртывание за 60 секунд.
Интеграция Authelia с Reverse Proxy (Nginx, Caddy) и HTTPS
Authelia работает как промежуточный слой, а это значит, что ей нужен reverse proxy, который будет направлять запросы к ней, а затем к вашим защищенным приложениям. Reverse proxy также отвечает за терминирование SSL/TLS (HTTPS) и маршрутизацию на основе доменных имен. Мы рассмотрим настройку с Nginx и Caddy — двумя популярными решениями.
Общие принципы работы с реверс-прокси и Authelia
Принцип работы следующий:
- Пользователь запрашивает
app.yourdomain.com. - Reverse proxy перехватывает запрос.
- Reverse proxy отправляет запрос на внутренний эндпоинт Authelia (обычно
/api/verify), чтобы проверить, аутентифицирован ли пользователь. - Если Authelia сообщает, что пользователь не аутентифицирован, reverse proxy перенаправляет пользователя на страницу входа Authelia (
auth.yourdomain.com). - После успешной аутентификации Authelia устанавливает сессионную куку, и reverse proxy разрешает доступ к
app.yourdomain.com.
HTTPS обязателен для безопасной работы Authelia, так как он защищает учетные данные и сессионные куки от перехвата.
1. Настройка Nginx для Authelia
Nginx — это мощный и широко используемый reverse proxy. Убедитесь, что Nginx установлен на вашем VPS. Если нет:
sudo apt update
sudo apt install nginx
Создание конфигурационных файлов Nginx
Мы создадим два файла конфигурации: один для Authelia и один для защищаемого приложения. Для начала отключите дефолтный сайт Nginx:
sudo rm /etc/nginx/sites-enabled/default
Файл конфигурации для Authelia (auth.yourdomain.com.conf):
Создайте файл в /etc/nginx/sites-available/:
sudo nano /etc/nginx/sites-available/auth.yourdomain.com.conf
Вставьте следующее содержимое, заменив yourdomain.com на ваш домен:
server {
listen 80;
listen [::]:80;
server_name auth.yourdomain.com;
# Перенаправление на HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name auth.yourdomain.com;
# Замените на пути к вашим SSL-сертификатам
# Получите их с помощью Certbot (см. ниже)
ssl_certificate /etc/letsencrypt/live/auth.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/auth.yourdomain.com/privkey.pem;
# Дополнительные настройки SSL
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1h;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers off;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";
location / {
proxy_pass http://127.0.0.1:9091; # Или имя сервиса Authelia, если Nginx в той же Docker-сети
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
proxy_connect_timeout 60s;
}
}
Файл конфигурации для защищаемого приложения (app.yourdomain.com.conf):
Предположим, у вас есть приложение, работающее на http://127.0.0.1:8080. Создайте файл:
sudo nano /etc/nginx/sites-available/app.yourdomain.com.conf
Вставьте следующее содержимое:
server {
listen 80;
listen [::]:80;
server_name app.yourdomain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name app.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/app.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/app.yourdomain.com/privkey.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1h;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers off;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";
# Authelia authentication block
location / {
# Если запрос не аутентифицирован, Nginx перенаправит на страницу Authelia
auth_request /authelia;
error_page 401 = @authelia;
# Передача заголовков с информацией о пользователе
auth_request_set $user $upstream_http_x_authentik_username; # Замените на X-Authelia-User, если используете старые версии или просто Authelia
auth_request_set $email $upstream_http_x_authentik_email; # Замените на X-Authelia-Email
proxy_set_header Remote-User $user;
proxy_set_header Remote-Email $email;
proxy_pass http://127.0.0.1:8080; # Адрес вашего приложения
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
proxy_connect_timeout 60s;
}
# Internal location for Authelia verification
location /authelia {
internal;
proxy_pass http://127.0.0.1:9091/api/verify; # Или имя сервиса Authelia
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_pass_request_body off;
proxy_pass_request_headers off;
proxy_set_header Content-Length "";
proxy_read_timeout 60s;
proxy_send_timeout 60s;
proxy_connect_timeout 60s;
}
# Перенаправление на Authelia UI при ошибке 401
location @authelia {
return 302 https://auth.yourdomain.com/?rd=$request_uri;
}
}
Важно: Замените http://127.0.0.1:8080 на реальный адрес вашего приложения. Если Nginx и Authelia находятся в одной Docker-сети, вы можете использовать http://authelia:9091 вместо http://127.0.0.1:9091.
Получение SSL-сертификатов с помощью Certbot
Certbot — это инструмент для автоматического получения и обновления бесплатных SSL/TLS сертификатов от Let's Encrypt.
sudo apt install certbot python3-certbot-nginx
Затем получите сертификаты для всех ваших доменов (auth.yourdomain.com и app.yourdomain.com):
sudo certbot --nginx -d auth.yourdomain.com -d app.yourdomain.com
Certbot автоматически изменит конфигурацию Nginx, добавив пути к сертификатам. После этого вам, возможно, придется вручную поправить некоторые настройки SSL, если они были перезаписаны.
Активация конфигурации Nginx
Создайте символические ссылки на ваши конфигурационные файлы в sites-enabled:
sudo ln -s /etc/nginx/sites-available/auth.yourdomain.com.conf /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/app.yourdomain.com.conf /etc/nginx/sites-enabled/
Проверьте конфигурацию Nginx на ошибки:
sudo nginx -t
Если ошибок нет, перезагрузите Nginx:
sudo systemctl reload nginx
2. Настройка Caddy для Authelia
Caddy — это современный reverse proxy, который автоматически управляет HTTPS-сертификатами с Let's Encrypt, что значительно упрощает его настройку. Установите Caddy, следуя инструкциям на официальном сайте (например, для Debian/Ubuntu):
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
Создание Caddyfile
Основной конфигурационный файл Caddy называется Caddyfile. Создайте или отредактируйте его:
sudo nano /etc/caddy/Caddyfile
Вставьте следующее содержимое:
{
# Глобальные настройки Caddy
email [email protected] # Для уведомлений Let's Encrypt
}
# Authelia UI
auth.yourdomain.com {
reverse_proxy 127.0.0.1:9091
}
# Защищаемое приложение
app.yourdomain.com {
# Authelia authentication block
# Замените authelia.yourdomain.com на фактический адрес Authelia
# Если Caddy и Authelia в одной Docker сети, то используйте имя сервиса: http://authelia:9091
# Если Authelia на хосте, то: http://127.0.0.1:9091
# Важно: Authelia должна быть доступна по HTTPS для Caddy, если она не на том же хосте без SSL.
# Для простоты, мы предполагаем, что Authelia доступна по HTTP на localhost:9091.
# Проверка аутентификации
handle {
# Отправляем запрос на проверку в Authelia
remote_auth http://127.0.0.1:9091/api/verify {
# Передаем заголовки, если Authelia их поддерживает (X-Authelia-User, X-Authelia-Groups)
# В зависимости от версии Authelia и вашей конфигурации, заголовки могут отличаться
# Проверьте документацию Authelia для актуальных заголовков
# forward_auth_response_headers X-Authelia-User X-Authelia-Groups X-Authelia-Email
}
# Если аутентификация прошла, проксируем к приложению
reverse_proxy 127.0.0.1:8080 # Адрес вашего приложения
}
# Перенаправление на Authelia UI при ошибке 401
handle_errors {
@401 {
expression `{http.error.status_code} == 401`
}
rewrite @401 https://auth.yourdomain.com/?rd={http.request.uri}
respond "{http.error.status_code} {http.error.status_text}" {
close
}
}
}
Важно: Замените yourdomain.com на ваш домен и http://127.0.0.1:8080 на адрес вашего приложения. Если Caddy и Authelia находятся в одной Docker-сети, используйте http://authelia:9091.
Проверка и запуск Caddy
Проверьте конфигурацию Caddy:
sudo caddy validate --config /etc/caddy/Caddyfile
Если конфигурация корректна, перезагрузите Caddy:
sudo systemctl reload caddy
Caddy автоматически получит и настроит HTTPS-сертификаты для ваших доменов.
Теперь, когда reverse proxy настроен, вы можете попробовать получить доступ к app.yourdomain.com. Вас должно перенаправить на auth.yourdomain.com для входа. После успешной аутентификации вы получите доступ к вашему приложению.
Обслуживание Authelia: бэкапы, обновления и мониторинг
Развертывание Authelia — это только начало. Для обеспечения стабильной, безопасной и актуальной работы системы необходимо регулярно выполнять бэкапы, обновлять компоненты и мониторить ее состояние. Self-managed VPS подразумевает, что вся ответственность за эти процессы лежит на вас.
Стратегии бэкапирования конфигурации и данных Authelia
Бэкап Authelia включает в себя два основных компонента:
- Конфигурационные файлы:
configuration.yml,users_database.yml(и любые другие, если вы их используете). - База данных: Если вы используете SQLite (
db.sqlite3), это просто один файл. Если PostgreSQL или MySQL, то необходимо использовать инструменты для бэкапа этих баз данных.
Рекомендации по бэкапированию:
- Автоматизация: Настройте ежедневные или еженедельные автоматические бэкапы с помощью cron-скриптов.
- Хранение: Храните бэкапы на отдельном хранилище, отличном от вашего VPS (например, S3-совместимое хранилище, Dropbox, Google Drive, другой сервер). Это защитит данные в случае полного отказа VPS.
- Шифрование: Всегда шифруйте бэкапы, особенно если они хранятся на внешних сервисах.
- Тестирование: Регулярно проверяйте возможность восстановления из бэкапов, чтобы убедиться в их целостности.
Пример скрипта для бэкапа (для SQLite):
Создайте файл backup_authelia.sh в ~/authelia/:
#!/bin/bash
# Путь к директории Authelia
AUTHELIA_DIR="/home/youruser/authelia"
# Директория для хранения бэкапов
BACKUP_DIR="/var/backups/authelia"
# Имя файла бэкапа
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="${BACKUP_DIR}/authelia_backup_${TIMESTAMP}.tar.gz"
# Секретный ключ для шифрования (замените на свой)
ENCRYPTION_PASS="YourVeryStrongEncryptionPassword"
mkdir -p "$BACKUP_DIR"
echo "Останавливаем Authelia для консистентного бэкапа..."
docker compose -f "$AUTHELIA_DIR/docker-compose.yml" stop authelia
echo "Создаем архив конфигурации и базы данных..."
tar -czf "$BACKUP_FILE" -C "$AUTHELIA_DIR/config" .
echo "Запускаем Authelia..."
docker compose -f "$AUTHELIA_DIR/docker-compose.yml" start authelia
echo "Шифруем бэкап..."
gpg --batch --passphrase "$ENCRYPTION_PASS" --symmetric "$BACKUP_FILE"
rm "$BACKUP_FILE" # Удаляем незашифрованный бэкап
echo "Бэкап Authelia завершен: ${BACKUP_FILE}.gpg"
# Удаляем старые бэкапы (например, старше 7 дней)
find "$BACKUP_DIR" -name "authelia_backup_*.tar.gz.gpg" -mtime +7 -delete
echo "Старые бэкапы удалены."
Сделайте скрипт исполняемым: chmod +x ~/authelia/backup_authelia.sh.
Затем добавьте его в cron для регулярного выполнения (например, ежедневно в 3 часа ночи):
crontab -e
Добавьте строку:
0 3 * * * /bin/bash /home/youruser/authelia/backup_authelia.sh >> /var/log/authelia_backup.log 2>&1
Процесс обновления Authelia Docker-образов
Регулярные обновления Authelia важны для получения новых функций, исправления ошибок и, самое главное, устранения уязвимостей безопасности.
Поскольку Authelia развернута через Docker Compose, процесс обновления очень прост:
cd ~/authelia
docker compose pull authelia # Загружает последнюю версию образа Authelia
docker compose up -d --remove-orphans # Пересоздает контейнер с новым образом и удаляет старые
Рекомендуется проверять официальную документацию Authelia перед крупными обновлениями, чтобы убедиться в отсутствии критических изменений в конфигурации.
Мониторинг состояния и логов Authelia
Мониторинг позволяет своевременно выявлять проблемы и реагировать на них. Вот что нужно отслеживать:
- Логи Authelia: Регулярно просматривайте логи Authelia на предмет ошибок или предупреждений.
docker compose logs authelia -f # Просмотр логов в реальном времени
docker compose logs authelia --tail 100 # Последние 100 строк
docker compose ps
auth.yourdomain.com.Регулярное выполнение этих процедур позволит поддерживать вашу Authelia в актуальном и работоспособном состоянии, обеспечивая непрерывную защиту ваших сервисов.
Выбор оптимального VPS-конфига для Authelia под реальную нагрузку
Выбор правильной конфигурации VPS для Authelia зависит от нескольких ключевых факторов, включая количество пользователей, частоту аутентификаций, количество защищаемых приложений и наличие других сервисов на том же VPS. Authelia сама по себе довольно легковесна, но общая инфраструктура (ОС, Docker, reverse proxy, база данных) требует определенного запаса ресурсов.
Факторы, влияющие на нагрузку Authelia
- Количество активных пользователей: Чем больше пользователей регулярно аутентифицируются, тем выше нагрузка.
- Частота аутентификаций: Если пользователи часто заходят и выходят из защищенных приложений, Authelia будет активнее.
- Метод 2FA: Использование внешнего SMTP-сервера для email-кодов может быть более ресурсоемким, чем TOTP.
- Интеграция с LDAP/AD: Если Authelia интегрирована с внешним LDAP-сервером, это может добавить небольшую нагрузку, но обычно она незначительна на стороне Authelia.
- Совместное размещение сервисов: Если на том же VPS работает сам reverse proxy, защищаемые приложения или другие сервисы, их требования к ресурсам нужно суммировать.
Рекомендации по RAM, CPU, SSD
Приведенные ниже рекомендации касаются только Authelia и необходимого для нее reverse proxy. Если вы планируете размещать на VPS другие сервисы, их требования следует добавлять к этим значениям.
| Сценарий использования Authelia | vCPU (ядра) | RAM (ГБ) | SSD (ГБ) | Примерная стоимость VPS (в месяц) |
|---|---|---|---|---|
| Персональное использование / Тестирование (1-5 пользователей) | 1 | 1 | 25-50 | $5 - $10 |
| Малый бизнес / Небольшая команда (5-20 пользователей) | 1-2 | 2 | 50-80 | $10 - $20 |
| Средний бизнес / Активное использование (20-100 пользователей) | 2 | 4 | 80-160 | $20 - $40 |
| Крупная организация / Высокая нагрузка (100+ пользователей) | 4+ | 8+ | 160+ | $40+ |
Пояснения к таблице:
- vCPU: Для большинства сценариев Authelia достаточно одного ядра. Два ядра дают запас производительности для пиковых нагрузок и для работы reverse proxy. Для очень больших нагрузок или интеграции с тяжелыми LDAP-каталогами, возможно, потребуются 4+ ядра.
- RAM: 1 ГБ RAM — это абсолютный минимум для операционной системы, Docker и Authelia. 2 ГБ — это комфортный минимум для малых и средних инсталляций. 4 ГБ и более обеспечивают отличную производительность и запас для кэширования, особенно если на VPS работают другие сервисы.
- SSD: Authelia не требует много места, но для операционной системы, Docker-образов, логов и потенциальных бэкапов рекомендуется от 25 ГБ. NVMe-диски значительно улучшают общую производительность системы.
- Примерная стоимость VPS: Цены могут сильно варьироваться в зависимости от провайдера, региона и дополнительных опций (например, управляемый VPS). Указаны примерные ориентиры для качественных VPS с хорошей производительностью.
Рекомендации по выбору VPS-провайдера:
При выборе VPS для Authelia обратите внимание на следующие аспекты:
- Надежность и аптайм: Выбирайте провайдеров с высокой репутацией и гарантированным аптаймом (99.9% и выше).
- Производительность дисков: NVMe SSD значительно ускорят работу Docker и базы данных.
- Сетевое подключение: Стабильное и быстрое сетевое подключение важно для быстрого доступа к Authelia и защищаемым приложениям.
- Поддержка: Наличие оперативной технической поддержки, особенно если вы выбираете self-managed VPS.
- Географическое расположение: Размещайте VPS ближе к основным пользователям для снижения задержек.
- Возможность масштабирования: Убедитесь, что вы можете легко увеличить ресурсы (CPU, RAM, диск) вашего VPS по мере роста потребностей.
Для большинства пользователей, начинающих с Authelia, VPS с 2 vCPU, 2-4 ГБ RAM и 50-80 ГБ NVMe SSD будет более чем достаточно для комфортной и стабильной работы. По мере роста потребностей всегда можно масштабировать ресурсы, что является одним из ключевых преимуществ использования виртуальных серверов.
Ищете сервер, который просто работает?
Valebyte VPS — NVMe, поддержка 24/7, развёртывание за 60 секунд.
Типичные проблемы при установке и настройке Authelia и их решения
При установке и настройке Authelia на VPS могут возникнуть различные сложности. Знание типичных проблем и способов их устранения значительно упростит процесс отладки.
1. Ошибки в конфигурации configuration.yml
Проблема: Authelia не запускается или ведет себя непредсказуемо, в логах видны ошибки парсинга YAML или неверные параметры.
Причина: Неправильный синтаксис YAML (отступы, двоеточия, регистр), опечатки в параметрах, пропущенные обязательные поля.
Решение:
- Проверка синтаксиса: Используйте онлайн-валидаторы YAML (например, YAML Lint) или инструмент
yamllintдля проверки файла на синтаксические ошибки. - Внимательное чтение логов: Логи Authelia (
docker compose logs authelia) обычно очень информативны и указывают на конкретную строку или секцию, где произошла ошибка. - Официальная документация: Всегда сверяйтесь с официальной документацией Authelia для актуальных параметров и их значений.
- Уровень логирования: Установите
log.level: debugвconfiguration.ymlдля получения максимально подробной информации об ошибках.
2. Проблемы с Reverse Proxy (Nginx/Caddy)
Проблема: Не удается получить доступ к Authelia UI или защищаемому приложению, ошибки 502 Bad Gateway, 403 Forbidden, или бесконечный редирект.
Причина: Неверная конфигурация Nginx/Caddy, проблемы с SSL-сертификатами, Authelia недоступна для reverse proxy.
Решение:
- Проверка логов Reverse Proxy:
- Для Nginx:
sudo tail -f /var/log/nginx/error.log - Для Caddy:
sudo journalctl -u caddy -f
- Для Nginx:
- Доступность Authelia: Убедитесь, что Authelia слушает на правильном порту (9091) и доступна для reverse proxy. Если Nginx/Caddy и Authelia в разных Docker-сетях или Nginx/Caddy работает на хосте, убедитесь, что порт 9091 открыт и нет фаерволов, блокирующих трафик. Проверьте командой
curl http://127.0.0.1:9091на VPS. - SSL-сертификаты: Убедитесь, что сертификаты Let's Encrypt для
auth.yourdomain.comиapp.yourdomain.com(или других доменов) корректно получены, не просрочены и правильно указаны в конфигурации reverse proxy. - Правила аутентификации: Проверьте, соответствуют ли правила
access_control.rulesвconfiguration.ymlдоменам, которые вы пытаетесь защитить. - Заголовки: Убедитесь, что reverse proxy правильно передает заголовки
X-Forwarded-For,X-Forwarded-ProtoиX-Forwarded-Hostв Authelia, так как она использует их для корректной работы.
3. Некорректная работа почтового сервера для 2FA или сброса пароля
Проблема: Пользователи не получают коды 2FA или ссылки для сброса пароля.
Причина: Неверные SMTP-настройки в configuration.yml, проблемы с сетью или брандмауэром, блокировка почтовым провайдером.
Решение:
- Проверка логов Authelia: Authelia будет регистрировать ошибки, связанные с отправкой электронной почты.
- SMTP-настройки: Тщательно проверьте
notifier.smtpвconfiguration.yml: хост, порт, имя пользователя, пароль, отправитель. Убедитесь, чтоdisable_starttlsустановлен правильно (falseдля порта 587,trueдля порта 465). - Тестирование SMTP: Попробуйте отправить тестовое письмо с VPS, используя утилиту
curlилиswaks, чтобы исключить проблемы с сетью или брандмауэром. - Спам-фильтры: Проверьте папку "Спам" у получателя. Возможно, письма Authelia блокируются.
- Лимиты провайдера: Некоторые почтовые провайдеры (особенно бесплатные) имеют строгие лимиты на количество отправляемых писем.
4. Проблемы с правами доступа
Проблема: Authelia не может записать данные в базу данных (SQLite) или прочитать конфигурационные файлы, ошибки "permission denied".
Причина: Неправильные права доступа к директории ~/authelia/config или файлам внутри нее.
Решение:
- Права на директорию
config: Убедитесь, что пользователь, под которым работает Docker-контейнер Authelia, имеет права на чтение и запись в директорию~/authelia/config. Обычно достаточно, чтобы владелец директории был вашим пользователем, а права были755для директорий и644для файлов.
sudo chmod -R 755 ~/authelia/config
sudo chmod 644 ~/authelia/config/*.yml ~/authelia/config/*.sqlite3
5. Проблемы с сессиями и куками
Проблема: Пользователи постоянно перенаправляются на страницу входа, даже после успешной аутентификации.
Причина: Неправильно настроен session.domain в configuration.yml, блокировка кук браузером, или несоответствие между HTTPS и HTTP.
Решение:
session.domain: Убедитесь, чтоsession.domainустановлен на ваш основной домен (например,yourdomain.com), а не на субдомен (auth.yourdomain.com). Это позволяет кукам быть доступными для всех субдоменов.- HTTPS: Убедитесь, что весь трафик идет через HTTPS. Authelia требует безопасного контекста для сессионных кук.
- Очистка кук браузера: Попробуйте очистить куки и кэш в браузере.
session.secret: Убедитесь, чтоsession.secretдлинный и случайный. При изменении секрета все активные сессии будут инвалидированы.
Системный подход к отладке, начиная с логов и проверки конфигурации, обычно позволяет быстро найти и устранить большинство проблем. Не забывайте о сообществе Authelia и их GitHub-репозитории, где можно найти ответы на многие вопросы.
Выводы
Authelia на VPS предоставляет мощное и гибкое решение для централизованной аутентификации и двухфакторной защиты ваших самохостящихся веб-приложений. Следуя подробным инструкциям по установке через Docker Compose, настройке reverse proxy и регулярному обслуживанию, вы сможете значительно повысить безопасность вашей инфраструктуры.
Выбор оптимального VPS-конфига на Valebyte.com обеспечит стабильную работу Authelia даже под значительной нагрузкой, а регулярные бэкапы и обновления гарантируют долгосрочную надежность вашей системы аутентификации.
Готовы выбрать сервер?
VPS и выделенные серверы в 72+ странах с мгновенной активацией и полным root-доступом.
Начать сейчас →