Перейти к основному содержимому

Caddy с пользовательским путём

Caddy — мощный и гибкий веб-сервер, который можно использовать для защиты вашей панели Remnawave.

Установка

Для начала создайте директорию для Caddy.

mkdir -p /opt/remnawave/caddy && cd /opt/remnawave/caddy

Затем создайте файл docker-compose.yml.

touch docker-compose.yml && nano docker-compose.yml

И добавьте следующее содержимое в файл:

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.

Caddyfile
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.

Auth Portal page

Здесь можно быстро перейти в панель 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

API-keys