🌐 Автоматическое создание DNS-записей
Если A-запись домена отсутствует или указывает не на этот сервер — скрипт сам предложит её создать:
1. Создать автоматически через Cloudflare API
2. Создать автоматически через Gcore DNS API
3. Продолжить без записи (создам вручную)
- Работает для всех доменов всех установок: панель, подписка, selfsteal, портал.
- Токен провайдера вводится один раз за установку — остальные отсутствующие записи создаются автоматически.
- Существующие записи с неверным IP или с включённым прокси исправляются (PATCH/PUT), а не падают с «record already exists».
- Ручной путь: показывается точная запись для создания (домен → IP сервера) и цикл перепроверки после нажатия Enter.
- Меню метода сертификатов подставляет провайдера введённого токена (Enter — принять).
🔐 Страница входа для панели
При установке панели появился выбор способа защиты:
- nginx (панель / панель+подписка / панель+нода): Cookie-защита (по умолчанию) или страница входа TinyAuth. Она живёт на своём поддомене (имя вводится одной меткой, домен считается сам), вход в панель — только через него (
auth_request),/api/*и Telegram OAuth остаются открытыми. Конфигурация по официальному гайду v5 (docs.rw) - Caddy (те же режимы): Cookie-защита или страница входа caddy-with-auth с MFA. Ставится по официальному гайду Remnawave — docs.rw → Security → Caddy, официальный образ
remnawave/caddy-with-auth; security-блок встроен в скрипт дословно из примераminimal-security-setup-with-mfa-with-api-without-authрепозитория remnawave/caddy-with-auth (адаптированы только имена переменных окружения) — зависимости от GitHub во время установки нет. Вход по логину/паролю, MFA — TOTP: одноразовые коды из приложения-аутентификатора (Google Authenticator, Aegis и совместимые), настройка при первом входе обязательна (require mfaв конфигурации). Дополнительно: API-ключи и смена пароля наhttps://<домен>/r,/api/*и Telegram OAuth остаются открытыми. - Данные страницы входа генерируются автоматически и показываются в финальном баннере вместе с адресом входа (для TinyAuth — ссылка на домен панели, чтобы сработал возврат после логина).
🔑 API-токен страницы подписки — минимальные права
Токен создаётся с пятью точечными скоупами вместо полного доступа (*) и живёт 10 лет
⏰ Автообновление сертификатов
В cron-команду добавлен deploy-hook: при фактическом обновлении сертификата контейнер веб-сервера перезапускается сам — раньше контейнер продолжал отдавать старый сертификат, пока тот не истекал.