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

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

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>/r.

Auth Portal page

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

API-keys