Инструкция предоставляет базовую конфигурацию для удобного управления проксированием серверов с помощью Angie.
Angie — современный веб-сервер, созданный бывшими разработчиками nginx с открытым исходным кодом (лицензия BSD).
Он сочетает проверенную архитектуру nginx с новыми возможностями:
✅ Поддержка HTTP/3 (клиент ↔ сервер независимо)
✅ Встроенный Docker-модуль для автоматического управления сервисами
✅ ACME-клиент — автоматическое получение TLS-сертификатов
✅ REST API + Prometheus — мониторинг и метрики
✅ Console Light — веб-интерфейс для наблюдения за сервером
✅ Легковесность, высокая производительность, минималистичная конфигурация
Мы используем Angie только как обратный прокси — без хостинга файлов.
Вместо того чтобы:
Открывать десятки портов
Давать пользователям прямой доступ к сервисам
Управлять сертификатами вручную
Обратный прокси: два уровня инфраструктуры
1. Базовое проксирование (Стандарт)
Принимает весь трафик на порт 443, распределяет запросы по сервисам (например, site1.example.com → сервер А, site2.example.com → сервер Б). Скрывает внутреннюю архитектуру, централизует SSL и защиту.
2. Прокси как шлюз доступа
IP-фильтрация (просто):
Пользователи обращаются только к IP прокси через порт 443.
Пример:
finance.example.comдоступен с IP 192.168.1.10 и 192.168.1.20.admin.example.com— с IP 10.0.0.5.
SSO (гибко):
Единый вход через CASdoor + Angie: пользователь получает доступ только к тем сервисам в изолированном VLAN, на которые у него есть права.
Преимущества:
Для сервисов в одном VLAN не нужны отдельные сетевые правила для пользователей из других VLAN.
Достаточно открыть один порт 443 до прокси — фильтрация и SSO (через CASdoor или аналоги) настраиваются централизованно.
Итог: Прокси обеспечивает базовую безопасность (уровень 1) и заменяет сложные ACL единым шлюзом для доступа к сервисам в VLAN (уровень 2).
Мы создаём единую точку входа:
🔒 Только порт 443 открыт наружу
🌐 Все сервисы доступны по поддоменам (
grafana.test,whoami.test)🛡️ Вся инфраструктура изолирована в Docker-сетях
🔄 Новые сервисы добавляются автоматически через лейблы
Три способа проксирования
Способ | Особенности |
|---|---|
1. С хоста |
|
2. Через Docker DNS |
|
3. Через Docker-модуль | Управление через лейблы в yaml, |
📁 Структура каталогов
front-proxy/ # Основной каталог прокси
├── angie.conf # Главный конфиг Angie
├── compose.yaml # Docker Compose для Angie + Docker Socket Proxy
├── conf.d/ # Общие настройки: proxy, security, limits
├── genloc/ # Общие location-правила (favicon, robots.txt и т.д.)
├── http.d/ # Server-блоки для каждого сервиса
└── ssl/ # TLS-сертификаты (локальные или ACME)
# Тестовые сервисы (для демонстрации трёх способов проксирования)
hostwhoami/ # Способ 1: проксирование с хоста
└── hostwhoami.yaml
dockerwhoami/ # Способ 2: через Docker DNS
└── dockerwhoami.yaml
dmodulwhoami/ # Способ 3: через Docker-модуль
└── dmodulwhoami.yaml
Главный конфиг Angie
vim angie.conf
# Автоматическое количество рабочих процессов (по числу CPU)
worker_processes auto;
# Увеличенный лимит открытых файловых дескрипторов на процесс
worker_rlimit_nofile 65535;
events {
# Разрешить приёму одного worker'а нескольких соединений за раз
multi_accept on;
# Максимальное число одновременных соединений на worker
worker_connections 65535;
}
http {
#Подключение к Docker API через proxy
docker_endpoint http://docker-socket-proxy:2375;
# Максимальный размер буфера для ответов Docker API
# (достаточно для ~50 контейнеров; увеличить при большом количестве)
docker_max_object_size 128k;
# Кодировка по умолчанию
charset utf-8;
# Оптимизации передачи файлов
sendfile on; # Использовать системный вызов sendfile()
tcp_nopush on; # Отправлять заголовки целиком
tcp_nodelay on; # Отключить алгоритм Нейгла для интерактивных соединений
# Безопасность: скрыть версию сервера
server_tokens off;
# Не логировать ошибки 404
log_not_found off;
# Увеличенный размер хеш-таблицы для MIME-типов
types_hash_max_size 2048;
# Максимальный размер тела запроса от клиента
client_max_body_size 16M;
# MIME-типы
include mime.types;
default_type application/octet-stream;
# Логирование
access_log /var/log/angie/access.log;
error_log /var/log/angie/error.log warn;
# Ограничение частоты запросов (защита от брутфорса)
limit_req_log_level warn;
limit_req_zone $binary_remote_addr zone=login:10m rate=10r/m;
# Настройки SSL/TLS
ssl_session_timeout 1d; # Время жизни SSL-сессии
ssl_session_cache shared:SSL:10m; # Общая память для кэширования сессий
ssl_session_tickets off; # Отключить session tickets (безопаснее)
# Только современный протокол TLS 1.3
ssl_protocols TLSv1.3;
# OCSP Stapling (требует доверенного CA)
ssl_stapling off; # Включить, если будет свой CA
ssl_stapling_verify off; # Включить, если будет свой CA
# Общие переиспользуемые настройки (proxy, security и т.д.)
include /etc/angie/conf.d/*.conf;
# Серверные блоки для каждого сервиса
include /etc/angie/http.d/*.conf;
}
Docker Compose для Angie + Docker Socket Proxy
vim compose.yaml
services:
docker-socket-proxy:
# Безопасный прокси для Docker Socket — даёт Angie доступ только на чтение списка контейнеров
image: tecnativa/docker-socket-proxy:v0.4.2
container_name: docker-socket-proxy
restart: unless-stopped
# Требуется privileged для доступа к /var/run/docker.sock в некоторых системах
privileged: true
volumes:
# Монтируем сокет только на чтение (:ro) — нельзя управлять контейнерами
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
CONTAINERS: 1 # Чтение списка контейнеров
NETWORKS: 1 # Чтение сетевых настроек (для получения IP)
EVENTS: 1 # Подписка на события (запуск/остановка контейнеров)
networks:
- front-proxy
front-proxy:
# Основной обратный прокси-сервер
image: docker.angie.software/angie:1.11.2
container_name: front-proxy
restart: unless-stopped
environment:
- TZ=UTC-5
ports:
# Открываем только стандартные порты HTTP/HTTPS
- "80:80"
- "443:443"
volumes:
# Все конфиги монтируются из текущего каталога
- ./angie.conf:/etc/angie/angie.conf:ro
- ./http.d/:/etc/angie/http.d/:ro
- ./conf.d:/etc/angie/conf.d/:ro
- ./genloc:/etc/angie/genloc/:ro
- ./ssl:/etc/angie/ssl/:ro
networks:
- front-proxy # Подключаемся к той же сети, что и docker-socket-proxy
- app-net # Подключиться ко всем сетям, где есть сервисы, иначе Angie их не увидит
networks:
front-proxy:
# Используем существующую сеть или создаём новую с заданной подсетью
name: front-proxy
external: true
app-net:
name: app-net
external: true
Заглушка для первого запуска http.d/default.conf
vim default.conf
# Заглушка для первого запуска
# Обеспечивает минимальный server-блок, чтобы Angie запустился
# Будет обрабатывать только запросы к IP или неизвестным доменам
# Реальные сервисы должны иметь свои server-блоки с конкретными server_name
server {
listen 80 default_server;
listen [::]:80 default_server;
# Заглушка для неизвестных доменов
return 444; # закрывает соединение без ответа
}
Запускаем и логах видно, что всё работает корректно
🛠️ Общие конфигурационные файлы
Чтобы не дублировать настройки в каждом server-блоке, используем переиспользуемые фрагменты.
conf.d/proxy.conf — стандартные заголовки проксирования
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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_http_version 1.1 — поддержка keep-alive и WebSocket
Upgrade + Connection — корректная работа WebSocket и HTTP/2
X-Real-IP, X-Forwarded-* — передача оригинальных данных клиента бэкенду
(без этого все запросы будут приходить «от Angie»)
Включается в
locationчерезinclude /etc/angie/conf.d/proxy.conf;
conf.d/security.conf — безопасные HTTP-заголовки
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-referrer-when-downgrade" always;
add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
Включается в
serverчерезinclude /etc/angie/conf.d/security.conf;
genloc/general-location.conf — общие правила для всех сервисов
# правила отключают логирование для служебных файлов favicon.ico и robots.txt, чтобы очистить логи, и блокируют доступ ко всем скрытым файлам (кроме .well-known)
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
log_not_found off;
access_log off;
}
# Запрет .файлов (кроме .well-known)
location ~ /\.(?!well-known) {
deny all;
}
Включается в
serverчерезinclude /etc/angie/genloc/general-location.conf;
🔐 Локальный TLS-сертификат для тестовых доменов
Для работы по HTTPS наши тестовые сервисы используют следующие домены:
hostwhoami.test— проксирование с хостаdockerwhoami.test— проксирование через Docker DNSdmodulwhoami.test— автоматическое управление через Docker-модуль
Чтобы все они работали по HTTPS, мы генерируем один wildcard-сертификат на *.test, который покрывает любой поддомен зоны .test.
Сертификат использует современное шифрование:
Алгоритм: ECDSA на кривой
prime256v1(P-256) — безопаснее и быстрее RSAПоддержка wildcard
*.testчерезsubjectAltNameСрок действия: 10 лет
Генерация сертификата
Выполните в каталоге front-proxy/:
mkdir -p ssl
openssl req -x509 \
-newkey ec -pkeyopt ec_paramgen_curve:prime256v1 \
-days 3650 \
-nodes \
-keyout ssl/server.key \
-out ssl/server.crt \
-subj "/CN=*.test" \
-addext "subjectAltName=DNS:*.test,DNS:test"
✅ Этот сертификат будет автоматически использоваться тестовыми сайтами через общие директивы в их
server-блоках:
ssl_certificate /etc/angie/ssl/server.crt;
ssl_certificate_key /etc/angie/ssl/server.key;
🧪 Практические примеры: два классических способа проксирования
Все тестовые сервисы используют образ traefik/whoami — легковесный HTTP-сервер, который выводит информацию о запросе (IP, заголовки, метод и т.д.).
🔒 Оба способа работают по HTTPS (
https://*.test) и включают:
Автоматическое перенаправление с HTTP → HTTPS
Безопасные заголовки
Защиту от утечки
.файловЛогирование ошибок в отдельный файл
Не используйте
proxy_passhttp://имя\_контейнера;или домена напрямую!
Это создаёт статический upstream, который:
Требует существования контейнера/домена при старте Angie
Если сервис недоступен — весь прокси не запустится
Ломает динамический резолвинг для других сервисов
Плохо (статический резолвинг):
proxy_pass http://dockerwhoami:80;
Хорошо (динамический резолвинг):
resolver 127.0.0.11 valid=10s; # Docker DNS
set $backend dockerwhoami;
proxy_pass http://$backend:80;
Способ 1: Проксирование сервиса, запущенного на хосте (hostwhoami/)
Когда использовать:
Когда бэкенд не находится в Docker-сети прокси, например:
Сервис запущен на хосте (на порту 8080, 3000 и т.д.)
Приложение работает на другом сервере во внутренней сети
Старый сервис, который нельзя или не нужно интегрировать в Docker-сеть
💡 Поскольку порт 80 на хосте уже занят Angie, сервис запускается на порту 8080, и именно его проксирует Angie.
hostwhoami/hostwhoami.yaml
services:
hostwhoami:
image: traefik/whoami
container_name: hostwhoami
restart: unless-stopped
ports:
- "8080:80" # ← проброс 8080 хоста → 80 контейнера
🔒 Контейнер не подключён к сети
front-proxy— он доступен только через хостовой порт8080.
http.d/hostwhoami.conf
# HTTPS-сервер для hostwhoami.test
server {
# Слушаем порт 443 (HTTPS) для IPv4 и IPv6
listen 443 ssl;
listen [::]:443 ssl;
# Включаем HTTP/2 для улучшения производительности
http2 on;
# Доменное имя сервиса
server_name hostwhoami.test;
# Пути к TLS-сертификату и приватному ключу
ssl_certificate /etc/angie/ssl/server.crt;
ssl_certificate_key /etc/angie/ssl/server.key;
# Включаем безопасные HTTP-заголовки
include /etc/angie/conf.d/security.conf;
# Отдельный файл логов ошибок для этого сервиса
error_log /var/log/angie/hostwhoami.test.error.log warn;
# Основной location — проксируем все запросы
location / {
# Используем DNS-резолвер Docker, valid=10s — кэшировать результаты на 10 секунд
resolver 127.0.0.11 valid=10s;
# Сохраняем IP-адрес целевого сервера в переменную
# Такой подход работает одинаково и для доменов, и для IP
set $backend 192.168.88.7;
# Проксируем запросы на указанный адрес и порт
# Даже если сервер временно недоступен — Angie запустится и будет работать для других сервисов
proxy_pass http://$backend:8080;
# Передаём стандартные заголовки проксирования
include /etc/angie/conf.d/proxy.conf;
}
# Общие правила для всех сервисов:
include /etc/angie/genloc/general-location.conf;
}
# Автоматическое перенаправление с HTTP на HTTPS
server {
# Слушаем порт 80 (HTTP) для IPv4 и IPv6
listen 80;
listen [::]:80;
# Доменное имя сервиса
server_name hostwhoami.test;
# Перенаправляем все HTTP-запросы на HTTPS с тем же URL
return 301 https://$host$request_uri;
}
✅ Преимущество: максимальная гибкость — можно проксировать любой сервис.
После добавления или изменения конфигурационных файлов в
http.d/необходимо перезагрузить контейнерfront-proxy, чтобы Angie применил новые настройки.
Способ 2: Проксирование через Docker DNS (dockerwhoami/)
Когда использовать:
Когда сервис запущен в той же Docker-сети, что и Angie.
Безопасность:
Трафик никогда не покидает Docker-сеть
front-proxyНет необходимости открывать порты на хосте
Полная сетевая изоляция
dockerwhoami/dockerwhoami.yaml
services:
dockerwhoami:
image: traefik/whoami
container_name: dockerwhoami
restart: unless-stopped
networks:
- front-proxy
networks:
front-proxy:
name: front-proxy
external: true
http.d/dockerwhoami.conf
# HTTPS-сервер для dockerwhoami.test
server {
# Слушаем порт 443 (HTTPS) для IPv4 и IPv6
listen 443 ssl;
listen [::]:443 ssl;
# Включаем HTTP/2 для улучшения производительности
http2 on;
# Доменное имя сервиса
server_name dockerwhoami.test;
# Пути к TLS-сертификату и приватному ключу
ssl_certificate /etc/angie/ssl/server.crt;
ssl_certificate_key /etc/angie/ssl/server.key;
# Включаем безопасные HTTP-заголовки
include /etc/angie/conf.d/security.conf;
# Отдельный файл логов ошибок для этого сервиса
error_log /var/log/angie/dockerwhoami.test.error.log warn;
# Основной location — проксируем все запросы
location / {
# Используем DNS-резолвер Docker, valid=10s — кэшировать результаты на 10 секунд
resolver 127.0.0.11 valid=10s;
# Сохраняем имя контейнера в переменную
set $backend dockerwhoami;
# Проксируем на контейнер с именем "dockerwhoami" в той же Docker-сети
# Даже если сервер временно недоступен — Angie запустится и будет работать для других сервисов
proxy_pass http://$backend:80;
# Передаём стандартные заголовки проксирования
include /etc/angie/conf.d/proxy.conf;
}
# Общие правила для всех сервисов:
include /etc/angie/genloc/general-location.conf;
}
# Автоматическое перенаправление с HTTP на HTTPS
server {
# Слушаем порт 80 (HTTP) для IPv4 и IPv6
listen 80;
listen [::]:80;
# Доменное имя сервиса
server_name dockerwhoami.test;
# Перенаправляем все HTTP-запросы на HTTPS с тем же URL
return 301 https://$host$request_uri;
}
✅ Преимущество: безопасность, простота, отказоустойчивость.
После добавления или изменения конфигурационных файлов в
http.d/необходимо перезагрузить контейнерfront-proxy, чтобы Angie применил новые настройки.
🧪 Практический пример: через Docker-модуль
Способ 3: Автоматическое проксирование через Docker-модуль (dmodulwhoami/)
Angie подключается к Docker API через Socket Proxy
При запуске контейнера Angie автоматически читает его лейблы
Контейнер может находиться в любой Docker-сети, доступной Angie
Сервер мгновенно добавляется в upstream без перезагрузки
✅ Главное преимущество:
Добавление/удаление сервисов работает без перезагрузки Angie
Неважен порядок запуска — даже если контейнер появится позже, всё заработает
Если сервис упадёт — он автоматически исчезнет из upstream 📚 Официальная документация
dmodulwhoami/dmodulwhoami.yaml
services:
dmodulwhoami:
image: traefik/whoami
container_name: dmodulwhoami
restart: unless-stopped
networks:
- app-net
labels:
# Указываем, что контейнер должен быть добавлен в upstream "docker_dmodulwhoami"
- "angie.http.upstreams.docker_dmodulwhoami.port=80"
# Явно указываем, из какой сети брать IP
- "angie.network=app-net"
networks:
app-net:
name: app-net
conf.d/00-upstreams-docker.conf
# Upstream, управляемый Docker-модулем
upstream docker_dmodulwhoami {
zone docker_dmodulwhoami 64k; # обязательная зона разделяемой памяти
}
http.d/dmodulwhoami.conf
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name dmodulwhoami.test;
ssl_certificate /etc/angie/ssl/server.crt;
ssl_certificate_key /etc/angie/ssl/server.key;
include /etc/angie/conf.d/security.conf;
error_log /var/log/angie/dmodulwhoami.test.error.log warn;
location / {
proxy_pass http://docker_dmodulwhoami; # ← upstream управляется модулем
include /etc/angie/conf.d/proxy.conf;
}
include /etc/angie/genloc/general-location.conf;
}
server {
listen 80;
listen [::]:80;
server_name dmodulwhoami.test;
return 301 https://$host$request_uri;
}
— сервис https://dmodulwhoami.test становится доступен мгновенно, без перезагрузки прокси.
🖥️ Подключение панели мониторинга Console Light
Console Light — встроенная веб-панель мониторинга Angie, которая отображает ключевые показатели нагрузки и производительности в реальном времени без перезагрузки сервера.
✅ Преимущества консоли:
Мониторинг всех HTTP/TCP-серверов и апстримов
Отслеживание состояния контейнеров в Docker-сетях
Визуализация трафика, соединений и времени отклика
Управление конфигурацией без перезагрузки (в Angie PRO)
Не требует внешних инструментов — работает на базе API Angie
Веб-панель мониторинга Console Light
🔧 Установка и настройка Console Light
1. Создание пользователя для доступа к консоли
Сначала создайте каталог для хранения паролей и сгенерируйте файл .htpasswd:
mkdir -p auth
htpasswd -c auth/.htpasswd adminВ процессе выполнения команды будет предложено ввести пароль для пользователя admin.
2. Добавление конфигурации в Docker Compose
Добавьте монтирование файла аутентификации в compose.yaml:
services:
front-proxy:
# ... остальные настройки
volumes:
# ... остальные тома
- ./auth/.htpasswd:/etc/angie/.htpasswd:ro3. Создание конфигурации для консоли
Создайте файл http.d/console.conf со следующим содержимым:
# HTTPS-сервер для console.test
server {
# Слушаем порт 443 (HTTPS) для IPv4 и IPv6
listen 443 ssl;
listen [::]:443 ssl;
# Включаем HTTP/2 и HTTP/3 для улучшения производительности
http2 on;
http3 on;
# Доменное имя панели мониторинга
server_name console.test;
# Пути к TLS-сертификату и приватному ключу
ssl_certificate /etc/angie/ssl/server.crt;
ssl_certificate_key /etc/angie/ssl/server.key;
# Ограничение доступа только по IP-адресу
allow 192.168.*.*; # разрешаем доступ по конкретному IP
deny all; # запрещаем доступ со всех остальных адресов
# Отдельный файл логов ошибок для панели
error_log /var/log/angie/console.test.error.log warn;
# Активируем мониторинг самого сервера консоли
status_zone console.test;
# Основной location для Console Light
location / {
# Аутентификация для интерфейса
auth_basic "Angie Console Light";
auth_basic_user_file /etc/angie/.htpasswd;
# Путь к файлам Console Light
alias /usr/share/angie-console-light/html/;
index index.html;
# API для получения статистики в реальном времени
location /api/ {
api /status/;
}
}
}
# Автоматическое перенаправление с HTTP на HTTPS
server {
listen 80;
listen [::]:80;
server_name console.test;
return 301 https://$host$request_uri;
}
4. Добавление метрик в существующие серверы
Чтобы консоль отображала данные по вашим сервисам, добавьте директиву status_zone в каждый серверный блок:
server {
# ... остальные настройки
server_name dockerwhoami.test;
# Добавляем метрику для мониторинга
status_zone dockerwhoami.test;
# ... остальные настройки
}Полный пример с добавлением метрики
# HTTPS-сервер для dockerwhoami.test
server {
# Слушаем порт 443 (HTTPS) для IPv4 и IPv6
listen 443 ssl;
listen [::]:443 ssl;
# Включаем HTTP/2 для улучшения производительности
http2 on;
# Доменное имя сервиса
server_name dockerwhoami.test;
# Добавляем метрику для мониторинга
status_zone dockerwhoami.test;
# Пути к TLS-сертификату и приватному ключу
ssl_certificate /etc/angie/ssl/server.crt;
ssl_certificate_key /etc/angie/ssl/server.key;
# Включаем безопасные HTTP-заголовки
include /etc/angie/conf.d/security.conf;
# Отдельный файл логов ошибок для этого сервиса
error_log /var/log/angie/dockerwhoami.test.error.log warn;
# Основной location — проксируем все запросы
location / {
# Используем DNS-резолвер Docker, valid=10s — кэшировать результаты на 10 секунд
resolver 127.0.0.11 valid=10s;
# Сохраняем имя контейнера в переменную
set $backend dockerwhoami;
# Проксируем на контейнер с именем "dockerwhoami" в той же Docker-сети
# Даже если сервер временно недоступен — Angie запустится и будет работать для других сервисов
proxy_pass http://$backend:80;
# Передаём стандартные заголовки проксирования
include /etc/angie/conf.d/proxy.conf;
}
# Общие правила для всех сервисов:
include /etc/angie/genloc/general-location.conf;
}
# Автоматическое перенаправление с HTTP на HTTPS
server {
# Слушаем порт 80 (HTTP) для IPv4 и IPv6
listen 80;
listen [::]:80;
# Доменное имя сервиса
server_name dockerwhoami.test;
# Перенаправляем все HTTP-запросы на HTTPS с тем же URL
return 301 https://$host$request_uri;
}
Для мониторинга состояния бэкендов необходимо объявить zone в каждом upstream-блоке.
Сервисы через Docker-модуль (уже прописаны) 💡 Пояснение:
status_zoneвserver→ мониторинг виртуального хоста
zoneвupstream→ мониторинг бэкендов (состояние, время ответа, ошибки)
5. Для DNS-резолвера добавьте status_zone в общую конфигурацию в angie.conf
http {
# DNS resolver с мониторингом (один для всего сервера)
resolver 127.0.0.11 valid=10s status_zone=docker_dns;
#Подключение к Docker API через proxy
docker_endpoint http://docker-socket-proxy:2375;
# ... остальные настройки
После добавления или изменения конфигурационных файлов необходимо перезагрузить контейнер front-proxy


Дальше:
ACME + Smallstep CA — автоматизация TLS для всех доменов (публичных через Let’s Encrypt и внутренних через локальный CA)
CASdoor — централизованная аутентификация и авторизация
Единая точка входа — безопасный, удобный и управляемый доступ ко всем сервисам
