Встановлення 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-доступом.
Почати зараз →