Caddy с минимальной настройкой
Caddy — мощный и гибкий веб-сервер, который можно использовать для защиты вашей панели Remnawave.
Установка
Для начала создайте директорию для Caddy.
mkdir -p /opt/remnawave/caddy && cd /opt/remnawave/caddy
И создайте файл docker-compose.yml.
touch docker-compose.yml && nano docker-compose.yml
И добавьте следующее содержимое в файл:
services:
remnawave-caddy:
image: remnawave/caddy-with-auth:latest
container_name: 'remnawave-caddy'
hostname: remnawave-caddy
restart: always
environment:
- AUTH_TOKEN_LIFETIME=3600
- REMNAWAVE_PANEL_DOMAIN=PANEL_DOMAIN
- AUTHP_ADMIN_USER=LOGIN_USERNAME
- AUTHP_ADMIN_EMAIL=LOGIN_EMAIL
- AUTHP_ADMIN_SECRET=LOGIN_PASSWORD
ports:
- '0.0.0.0:443:443'
networks:
- remnawave-network
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- remnawave-caddy-ssl-data:/data
networks:
remnawave-network:
name: remnawave-network
driver: bridge
external: true
volumes:
remnawave-caddy-ssl-data:
driver: local
external: false
name: remnawave-caddy-ssl-data
Настройка переменных .env
Нужно задать доменное имя для панели Remnawave. Caddy автоматически выпустит для него сертификат.
REMNAWAVE_PANEL_DOMAIN=panel.domain.com
Данные администратора. Используйте надёжный пароль.
AUTHP_ADMIN_USER=admin
AUTHP_ADMIN_EMAIL=[email protected]
AUTHP_ADMIN_SECRET=strong_password
Время жизни токена.
AUTH_TOKEN_LIFETIME=3600
Caddyfile
Разберём Caddyfile подробнее.
Прежде всего выберите один из предустановленных вариантов.
Полная защита с MFA
- Все маршруты защищены аутентификацией. (Фронтенд, Бэкенд)
- Все API-эндпоинты защищены, включая /api/sub/*.
- Вход требует MFA с OTP-кодами.
- Специальные API-ключи могут выдаваться для /api/* эндпоинтов.
- Полная защита домена.
Запустите команду ниже для загрузки Caddyfile.
curl -o Caddyfile https://raw.githubusercontent.com/remnawave/caddy-with-auth/refs/heads/main/examples/minimal-security-setup-with-mfa/Caddyfile
API-маршруты без аутентификации (api/*)
- Маршруты защищены аутентификацией. (Фронтенд)
- Вход требует MFA с OTP-кодами. (Фронтенд)
- Все API-эндпоинты не защищены! (/api/* публичны)
Этот вариант открывает /api/* эндпоинты в публичный интернет.
Все эндпоинты не потребуют аутентификации, но по-прежнему будут использовать функции безопасности Remnawave.
Рекомендуем использовать полную защиту с MFA для продакшн-сред, где вы будете выдавать API-ключи.
Запустите команду ниже для загрузки Caddyfile.
curl -o Caddyfile https://raw.githubusercontent.com/remnawave/caddy-with-auth/refs/heads/main/examples/minimal-security-setup-with-mfa-with-api-without-auth/Caddyfile
Эндпоинты /api/sub/* без аутентификации
- Маршруты защищены аутентификацией. (Фронтенд)
- Вход требует MFA с OTP-кодами. (Фронтенд)
- Только
/api/sub/*эндпоинты публичны, остальные защищены.
Этот вариант открывает /api/sub/* эндпоинты в публичный интернет.
Рекомендуем использовать полную защиту с MFA для продакшн-сред, где вы будете выдавать API-ключи и использовать @remnawave/subscription-page для публичной страницы подписок.
Запустите команду ниже для загрузки Caddyfile.
curl -o Caddyfile https://raw.githubusercontent.com/remnawave/caddy-with-auth/refs/heads/main/examples/minimal-security-setup-with-mfa-with-api-without-auth/Caddyfile
Запуск контейнера
После выбора одного из вариантов выше запустите контейнер следующей командой.
docker compose up -d && docker compose logs -f
Доступ к панели
После запуска контейнера панель доступна по адресу https://panel.domain.com.
После этого вы будете перенаправлены на страницу входа Caddy Auth.
При первом запуске вам предложат создать метод MFA.
Рекомендуем использовать Google Authenticator.
Отключение MFA
Чтобы полностью отключить MFA, отредактируйте Caddyfile.
Откройте Caddyfile:
cd /opt/remnawave/caddy && nano Caddyfile
Найдите следующие строки и удалите строку require mfa.
transform user {
match origin local
action add role authp/admin
require mfa
}
После этого перезапустите контейнер:
docker compose down && docker compose up -d && docker compose logs -f
Доступ к странице Auth Portal
Страница Auth Portal доступна по адресу https://<your-domain>/r.

Здесь можно быстро перейти в панель Remnawave или управлять некоторыми настройками Auth Portal.
В разделе MFA можно удалять или добавлять MFA-устройства.
Выдача API-ключей
Страница Auth Portal доступна по адресу https://<your-domain>/r.
На странице Auth Portal можно выдавать API-ключи — нажмите вкладку API-keys.
После выдачи API-ключа используйте его в заголовке X-Api-Key запросов к API.
Пример: X-Api-Key: YxOovHLnpkcmSig5082egcHnyTk8SK4dNGAFHgZ2LKZezgj5oUj2FA2IR2sMwbALnP9YNpzZ
