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
- REMNAWAVE_CUSTOM_LOGIN_ROUTE=supersecretroute
- 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
Пользовательский маршрут входа. Этот путь будет использоваться ТОЛЬКО для страницы входа. Перенаправления при открытии панели без предварительной аутентификации не будет. Только люди, знающие этот путь, смогут получить доступ к панели.
REMNAWAVE_CUSTOM_LOGIN_ROUTE=supersecretroute
Данные администратора. Используйте надёжный пароль.
AUTHP_ADMIN_USER=admin
AUTHP_ADMIN_EMAIL=[email protected]
AUTHP_ADMIN_SECRET=strong_password
Время жизни токена.
AUTH_TOKEN_LIFETIME=3600
Caddyfile
Разберём Caddyfile подробнее.
Прежде всего выберите один из предустановленных вариантов.
Рекомендуем использовать полную защиту с MFA для продакшн-сред, где вы будете выдавать API-ключи.
Вы сможете войти только через этот путь (REMNAWAVE_CUSTOM_LOGIN_ROUTE).
Полная защита с MFA
- Все маршруты защищены аутентификацией. (Фронтенд, Бэкенд)
- Все API-эндпоинты защищены, включая /api/sub/*.
- Вход требует MFA с OTP-кодами.
- Специальные API-ключи могут выдаваться для /api/* эндпоинтов.
- Полная защита домена.
Запустите команду ниже для загрузки Caddyfile.
curl -o Caddyfile https://raw.githubusercontent.com/remnawave/caddy-with-auth/refs/heads/main/examples/custom-webpath-with-auth-and-protected-api-route/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/custom-webpath-with-auth-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/custom-webpath-with-auth-with-opened-api-sub/Caddyfile
Запуск контейнера
После выбора одного из вариантов выше запустите контейнер следующей командой.
docker compose up -d && docker compose logs -f
Доступ к панели
После запуска контейнера панель доступна по адресу https://panel.domain.com/REMNAWAVE_CUSTOM_LOGIN_ROUTE.
При первом запуске вам предложат добавить метод 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>/REMNAWAVE_CUSTOM_LOGIN_ROUTE/auth.

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