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

Отримати VPS arrow_forward

Authelia на VPS: встановлення, налаштування та обслуговування

calendar_month June 11, 2026 schedule 24 хв. читання visibility 28 переглядів
person
Valebyte Team
Authelia на VPS: встановлення, налаштування та обслуговування

Встановлення 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 вам знадобиться:

  1. Доменне ім'я: Зареєструйте доменне ім'я, якщо у вас його ще немає.
  2. 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.

rocket_launch Швидкий вибір

Шукаєте сервер, який просто працює?

Valebyte VPS — NVMe, підтримка 24/7, розгортання за 60 секунд.

Переглянути тарифи VPS arrow_forward

Інтеграція Authelia з Reverse Proxy (Nginx, Caddy) та HTTPS

Authelia працює як проміжний шар, а це означає, що їй потрібен reverse proxy, який буде направляти запити до неї, а потім до ваших захищених додатків. Reverse proxy також відповідає за термінування SSL/TLS (HTTPS) та маршрутизацію на основі доменних імен. Ми розглянемо налаштування з Nginx та Caddy — двома популярними рішеннями.

Загальні принципи роботи з реверс-проксі та Authelia

Принцип роботи наступний:

  1. Користувач запитує app.yourdomain.com.
  2. Reverse proxy перехоплює запит.
  3. Reverse proxy надсилає запит на внутрішній ендпоінт Authelia (зазвичай /api/verify), щоб перевірити, чи автентифікований користувач.
  4. Якщо Authelia повідомляє, що користувач не автентифікований, reverse proxy перенаправляє користувача на сторінку входу Authelia (auth.yourdomain.com).
  5. Після успішної автентифікації 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 включає два основні компоненти:

  1. Конфігураційні файли: configuration.yml, users_database.yml (та будь-які інші, якщо ви їх використовуєте).
  2. База даних: Якщо ви використовуєте 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 рядків
  • Стан контейнера: Переконайтеся, що контейнер Authelia запущений.
  • docker compose ps
  • Доступність Authelia: Використовуйте зовнішній моніторинг (наприклад, UptimeRobot) для перевірки доступності вашого домену auth.yourdomain.com.
  • Моніторинг ресурсів VPS: Відстежуйте використання CPU, RAM, дискового простору та мережевого трафіку. Інструменти на кшталт Netdata або Prometheus/Grafana чудово підходять для цього.

Регулярне виконання цих процедур дозволить підтримувати вашу 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 зверніть увагу на наступні аспекти:

  1. Надійність та аптайм: Вибирайте провайдерів з високою репутацією та гарантованим аптаймом (99.9% і вище).
  2. Продуктивність дисків: NVMe SSD значно прискорять роботу Docker та бази даних.
  3. Мережеве підключення: Стабільне та швидке мережеве підключення важливе для швидкого доступу до Authelia та захищуваних додатків.
  4. Підтримка: Наявність оперативної технічної підтримки, особливо якщо ви обираєте self-managed VPS.
  5. Географічне розташування: Розміщуйте VPS ближче до основних користувачів для зниження затримок.
  6. Можливість масштабування: Переконайтеся, що ви можете легко збільшити ресурси (CPU, RAM, диск) вашого VPS у міру зростання потреб.

Для більшості користувачів, які починають з Authelia, VPS з 2 vCPU, 2-4 ГБ RAM та 50-80 ГБ NVMe SSD буде більш ніж достатньо для комфортної та стабільної роботи. У міру зростання потреб завжди можна масштабувати ресурси, що є однією з ключових переваг використання віртуальних серверів.

rocket_launch Швидкий вибір

Шукаєте сервер, який просто працює?

Valebyte VPS — NVMe, підтримка 24/7, розгортання за 60 секунд.

Переглянути тарифи VPS arrow_forward

Типові проблеми при встановленні та налаштуванні 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
    Ці логи вкажуть на проблеми з проксіюванням або SSL.
  • Доступність 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
  • Власник: Якщо Authelia запускається від імені іншого користувача всередині контейнера (що рідкість для стандартного образу), можливо, знадобиться змінити власника файлів.

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-доступом.

Почати зараз →
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.