Add reverse proxy masking and Cloudflare panel SSL via DNS-01.

Introduce Caddy-based reverse proxy with decoy site and DPI masking, plus automatic Let's Encrypt certificate issuance for the panel through Cloudflare API without binding port 443.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
test2
2026-07-08 00:41:50 +03:00
co-authored by Cursor
commit 7ef408afe7
46 changed files with 19886 additions and 0 deletions
+401
View File
@@ -0,0 +1,401 @@
{
"nav_servers": "Серверы",
"nav_users": "Пользователи",
"nav_settings": "Настройки",
"nav_connections": "Подключения",
"nav_logout": "Выход",
"theme_dark": "Темная",
"theme_light": "Светлая",
"back_to_servers": "← Назад к серверам",
"server_check": "Проверить",
"server_checking": "Проверка...",
"protocols": "Протоколы",
"install": "Установить",
"uninstall": "Удалить",
"run": "Работает",
"stop": "Остановлен",
"not_installed": "Не установлен",
"installed": "Установлен",
"add_server": "Добавить сервер",
"no_servers": "Серверы не добавлены",
"name": "Название",
"host": "Адрес",
"port": "Порт",
"status": "Статус",
"actions": "Действия",
"edit": "Редактировать",
"delete": "Удалить",
"save": "Сохранить",
"cancel": "Отмена",
"loading": "Загрузка...",
"copy": "Копировать",
"download": "Скачать",
"config": "Конфигурация",
"qr_code": "QR-код",
"vpn_key": "VPN-ключ",
"clients": "Клиенты",
"traffic": "Трафик",
"limit": "Limit",
"manage": "Управление",
"no_protocols": "Нет протоколов",
"add_server_desc": "Добавьте свой первый VPN сервер для начала работы. Вам понадобятся SSH-данные для подключения.",
"ssh_host": "Хост / IP",
"ssh_port": "SSH Порт",
"ssh_user": "Пользователь",
"ssh_password": "Пароль",
"ssh_key": "SSH Ключ",
"ssh_key_placeholder": "Приватный SSH ключ",
"ssh_key_hint": "Вставьте содержимое вашего файла id_rsa или id_ed25519",
"connect": "Подключить",
"connecting": "Подключение...",
"server_added": "Сервер успешно добавлен",
"server_deleted": "Сервер удалён",
"delete_confirm": "Вы уверены, что хотите удалить этот сервер?",
"success": "Успешно",
"error": "Ошибка",
"info": "Информация",
"login_title": "Вход в панель",
"username": "Логин",
"password": "Пароль",
"captcha": "Капча",
"captcha_placeholder": "Введите символы с картинки",
"captcha_hint": "Нажмите для обновления картинки",
"login": "Войти",
"logging_in": "Вход...",
"login_error": "Ошибка входа",
"check_done": "Проверка завершена",
"check_error": "Ошибка подключения",
"ssh_ok": "SSH подключение",
"docker_ok": "Docker",
"docker_not_installed": "Docker не установлен",
"awg_desc": "Новая версия протокола на основе awg-go. Поддерживает расширенную обфускацию с параметрами S3, S4.",
"awg_legacy_desc": "Оригинальная версия AWG на базе ядра WireGuard. Совместима с клиентами старых версий.",
"xray_desc": "Современный протокол с маскировкой под обычный веб-трафик (XTLS-Reality). Устойчив к глубокому анализу пакетов.",
"wireguard_desc": "Стандартный и самый быстрый VPN-протокол. Встроен во все современные ОС, но легко блокируется DPI.",
"not_checked": "Не проверено",
"connections": "Подключения",
"add": "Добавить",
"loading_connections": "Загрузка подключений...",
"no_connections": "Нет подключений",
"no_connections_desc": "Добавьте первое подключение для генерации VPN конфигурации",
"install_protocol": "Установить протокол",
"port_default_hint": "Порт по умолчанию: 55424. Убедитесь, что он не занят",
"port_xray_hint": "Порт по умолчанию: 443 (рекомендуется для Xray). Убедитесь, что он не занят другим веб-сервером.",
"reinstall": "Переустановить",
"uninstall_confirm": "Удалить {}? Все подключения и конфигурации будут потеряны.",
"stop_container_confirm": "Остановить контейнер {}?",
"start_container_confirm": "Запустить контейнер {}?",
"stopping": "Остановка",
"starting": "Запуск",
"stopped": "остановлен",
"started": "запущен",
"server_config": "Конфигурация сервера",
"add_connection": "Добавить подключение",
"connection_name": "Имя подключения",
"connection_name_placeholder": "Например: iPhone, Laptop",
"assign_to_user": "Назначить пользователю (опционально)",
"no_assign": "— Без привязки —",
"create": "Создать",
"creating": "Создание...",
"connection_created": "Подключение \"{}\" создано",
"delete_connection_confirm": "Удалить это подключение? Конфигурация перестанет работать.",
"connection_deleted": "Подключение удалено",
"config_tab": "📄 Конфиг",
"vpn_key_tab": "🔑 VPN-ключ",
"qr_code_tab": "📱 QR-код",
"copy_config": "📋 Копировать",
"download_conf": "⬇ Скачать .conf",
"copy_key": "📋 Копировать ключ",
"vpn_link_hint": "Вставьте эту ссылку в приложение AmneziaVPN для автоматической настройки",
"qr_hint": "Отсканируйте QR-код в приложении AmneziaVPN",
"no_data": "Нет данных",
"start_btn": "▶ Старт",
"stop_btn": "⏹ Стоп",
"config_btn": "⚙️ Конфиг",
"done": "Готово",
"installing": "Установка...",
"start_install": "Начинаем установку...",
"check_docker": "Проверка Docker...",
"prepare_host": "Подготовка хоста...",
"build_container": "Сборка контейнера...",
"install_success": "Протокол установлен успешно!",
"install_error": "Ошибка установки: ",
"qr_error": "Не удалось сгенерировать QR-код",
"users_title": "Пользователи",
"search_placeholder": "Поиск по имени, email или Telegram...",
"add_user": "Добавить пользователя",
"prev_page": "← Назад",
"next_page": "Вперёд →",
"page_info": "Страница {} из {}",
"loading_users": "Загрузка пользователей...",
"nothing_found": "Ничего не найдено",
"search_empty_desc": "Попробуйте изменить запрос или создайте нового пользователя",
"username_label": "Имя пользователя",
"password_label": "Пароль",
"role_label": "Роль",
"role_user_desc": "User — только просмотр своих подключений",
"role_support_desc": "Support — управление серверами",
"role_admin_desc": "Admin — полный доступ",
"tg_id_label": "Telegram ID (опц.)",
"email_label": "Email (опц.)",
"traffic_limit_label": "Лимит трафика (ГБ) (опц., 0 = ∞)",
"expiration_date_label": "Срок действия (до)",
"description_label": "Описание (опц.)",
"auto_conn_title": "Автоматическое создание подключения (опционально)",
"server_label": "Сервер",
"no_create_conn": "— Не создавать подключение —",
"protocol_label": "Протокол",
"edit_user_title": "Редактировать пользователя: {}",
"edit_user_tg": "Telegram ID (опционально)",
"edit_user_email": "Email (опционально)",
"edit_user_limit": "Лимит трафика (ГБ) (0 = ∞)",
"new_password_hint": "Новый пароль (оставьте пустым, если не нужно менять)",
"op_type_label": "Тип операции",
"create_new_conn": "Создать новое подключение",
"link_existing_conn": "Привязать существующее",
"select_existing_conn": "Выберите существующее подключение",
"existing_conn_hint": "Будут показаны только не привязанные к пользователям подключения",
"conn_name_panel": "Имя подключения (в панели)",
"user_conns_title": "Подключения пользователя",
"no_free_conns": "Нет свободных подключений",
"linking": "Привязка...",
"conn_linked": "Подключение привязано",
"enabling": "Включение",
"disabling": "Отключение",
"user_enabled": "Пользователь включён",
"user_disabled": "Пользователь отключён",
"delete_user_confirm": "Удалить пользователя? Все его подключения будут удалены.",
"share_access": "Поделиться доступом",
"enable_public_access": "Включить публичный доступ",
"share_password_label": "Пароль (опционально)",
"share_password_hint": "Если установлен, пользователь должен будет его ввести",
"public_link_label": "Публичная ссылка",
"disabled": "Отключён",
"out_of": "Из",
"settings_title": "Настройки панели",
"appearance": "🎨 Внешний вид",
"title_label": "Заголовок (Title)",
"logo_label": "Логотип (Emoji или символ)",
"subtitle_label": "Подзаголовок (Subtitle)",
"captcha_title": "🔐 Капча",
"enable_captcha": "Включить капчу (multicolorcaptcha)",
"telegram_bot_title": "🤖 Telegram Bot",
"bot_token_label": "Bot Token (от @BotFather)",
"bot_status": "Статус",
"bot_running": "✅ Запущен",
"bot_stopped": "⏹ Остановлен",
"bot_stop_btn": "⏹ Остановить",
"bot_start_btn": "▶️ Запустить",
"bot_hint": "После изменения токена сохраните настройки — бот перезапустится автоматически. Пользователи должны иметь Telegram ID в профиле.",
"api_docs_title": "🔌 API Документация",
"api_docs_hint": "Используйте эти интерфейсы для изучения возможностей API панели",
"tunnels_title": "Tunnels",
"local_server": "Local Server",
"tunnel_install_enable": "Install & Enable",
"tunnel_enable": "Enable Tunnel",
"tunnel_running": "Туннель запущен",
"tunnel_stop": "Остановить",
"tunnel_stopping": "Остановка...",
"tunnel_stopped": "Туннель остановлен",
"tunnel_delete": "Удалить",
"tunnel_deleted": "Туннель удалён",
"tunnel_delete_confirm": "Остановить и удалить бинарный файл туннеля, установленный панелью?",
"tunnel_starting": "Запуск туннеля...",
"tunnel_started": "Туннель запущен",
"tunnel_waiting_url": "Туннель запущен. Ждем публичный адрес...",
"tunnel_no_public_url": "Публичный адрес появится здесь после запуска туннеля.",
"tunnels_hint": "Быстрые туннели публикуют локальную панель в интернете. Используйте надежный пароль администратора и передавайте публичные адреса только доверенным пользователям.",
"ngrok_authtoken_placeholder": "ngrok authtoken (для некоторых аккаунтов необязательно)",
"import_users_title": "📤 Импорт пользователей",
"import_source_label": "Источник импорта / Синхронизации",
"remnawave_url_label": "Remnawave URL",
"api_key_label": "API Key",
"enable_sync": "Включить синхронизацию",
"sync_hint": "Пользователи будут создаваться, отключаться и удаляться автоматически на основе данных из Remnawave",
"sync_now_btn": "🔄 Синхронизировать сейчас",
"delete_sync_btn": "🗑 Удалить синхронизацию",
"auto_create_conns": "Создавать подключения автоматически",
"sync_server_label": "Сервер для новых подключений",
"save_changes": "💾 Сохранить изменения",
"sync_success": "Синхронизация завершена: {} пользователей",
"sync_deleted": "Удалено {} синхронизированных пользователей",
"delete_sync_confirm": "Вы уверены, что хотите удалить ВСЕХ синхронизированных пользователей и их подключения? Это действие необратимо.",
"settings_saved": "Настройки успешно сохранены",
"bot_started": "Бот запущен",
"bot_stopped_msg": "Бот остановлен",
"sync_running": "Синхронизация...",
"deleting": "Удаление...",
"my_connections_title": "Мои подключения",
"show_config": "📄 Показать конфиг",
"no_connections_user_desc": "Обратитесь к администратору для создания VPN подключения",
"share_title": "Доступ к подключениям",
"vpn_access": "VPN Доступ",
"user_label_share": "Пользователь",
"share_protected_desc": "Этот доступ защищен паролем. Пожалуйста, введите его для продолжения.",
"auth_success": "Вход выполнен",
"loading_share_conns": "Загрузка подключений...",
"no_active_conns": "У вас пока нет активных подключений.",
"show_settings_btn": "🔑 Показать настройки",
"copied": "Скопировано!",
"active": "Активен",
"site_description": "Amnezia Web Panel — управление VPN серверами и протоколами AmneziaWG",
"toggle_theme": "Сменить тему",
"copied_to_clipboard": "Скопировано в буфер обмена",
"share_not_found": "404 Не Найдено",
"share_not_found_desc": "Либо ссылка неверна, либо доступ был отключен.",
"invalid_captcha": "Неверная капча",
"account_disabled": "Аккаунт отключён",
"invalid_login": "Неверный логин или пароль",
"user_exists": "Пользователь с таким именем уже существует",
"cannot_delete_self": "Нельзя удалить самого себя",
"wrong_share_password": "Неверный пароль",
"saving": "Сохранение...",
"select_lang": "Выберите язык",
"lang_ru": "Русский",
"lang_en": "English",
"lang_fr": "Français",
"lang_zh": "中文 (Chinese)",
"lang_fa": "فارسی (Persian)",
"backup_title": "Резервное копирование",
"download_backup": "Скачать data.json",
"restore_backup": "Восстановить из файла",
"restore_confirm": "Вы уверены? Текущие данные будут перезаписаны, и приложение перезагрузится.",
"restore_success": "Восстановление успешно! Перезагрузка...",
"invalid_backup_file": "Неверный файл резервной копии или структура",
"config_unavailable": "Конфигурация недоступна",
"config_unavailable_desc": "Этот клиент был создан через нативное приложение Amnezia.\\nПриватный ключ хранится только на устройстве пользователя и не может быть восстановлен сервером.",
"client_public_key": "Публичный ключ клиента:",
"telemt_desc": "Прокси для Telegram на базе MTProxy с продвинутой обфускацией и эмуляцией TLS.",
"tls_emulation": "TLS-эмуляция",
"tls_domain": "Домен маскировки",
"max_connections_limit": "Макс. соединений",
"max_connections_hint": "0 — без ограничений. Ограничивает одновременных пользователей.",
"traffic_reset_strategy_label": "Стратегия сброса трафика",
"traffic_reset_never": "Никогда не сбрасывать",
"traffic_reset_daily": "Сброс ежедневно",
"traffic_reset_weekly": "Сброс еженедельно",
"traffic_reset_monthly": "Сброс ежемесячно",
"traffic_reset_hint": "Как часто следует сбрасывать трафик пользователя",
"traffic_used_total": "Всего потрачено",
"traffic_reset_info": "Следующий сброс: {}",
"services": "Сервисы",
"dns_desc": "Персональный DNS-сервер для блокировки рекламы и защиты приватности ваших запросов.",
"dns_internal_hint": "Сервис будет запущен во внутренней сети (172.29.172.254) без привязки к портам хоста.",
"telemt_port_hint": "Порт для Telegram-прокси (обычно 443).",
"socks5_desc": "SOCKS5-прокси (3proxy) с одной учётной записью и аутентификацией по логину/паролю.",
"socks5_username": "Логин",
"socks5_password": "Пароль",
"socks5_password_placeholder": "Оставьте пустым для автогенерации",
"socks5_password_hint": "Если поле пустое, будет сгенерирован случайный пароль на 16 символов.",
"socks5_port_hint": "TCP-порт, на котором будет слушать прокси. В официальном клиенте Amnezia по умолчанию 38080.",
"socks5_change_settings": "Изменить настройки",
"socks5_settings_title": "SOCKS5 — Настройки подключения",
"socks5_port_change_hint": "Смена порта пересоздаёт контейнер — текущие соединения оборвутся.",
"socks5_settings_saved": "Настройки SOCKS5 сохранены",
"adguard_desc": "AdGuard Home — DNS-блокировщик рекламы с веб-интерфейсом администратора.",
"adguard_mode": "Режим установки",
"adguard_mode_sidebyside": "Рядом с AmneziaDNS",
"adguard_mode_sidebyside_hint": "поднимается параллельно AmneziaDNS на отдельном внутреннем IP (172.29.172.253)",
"adguard_mode_replace": "Заменить AmneziaDNS",
"adguard_mode_replace_hint": "удаляет контейнер amnezia-dns и забирает его IP — VPN-клиенты сразу пойдут в AdGuard",
"adguard_dns_port": "DNS-порт (53)",
"adguard_dns_port_hint": "Внутренний DNS-порт, на который ходят VPN-клиенты через docker-сеть.",
"adguard_web_port": "Порт Web UI",
"adguard_dot_port": "Порт DoT",
"adguard_doh_port": "Порт DoH",
"adguard_expose_web": "Опубликовать наружу",
"adguard_expose": "Опубликовать наружу",
"adguard_install_hint": "Первоначальная настройка AdGuard проходит через мастер на веб-интерфейсе после установки.",
"adguard_internal_ip": "Внутренний IP",
"adguard_web_ui": "Адрес панели",
"adguard_open_ui": "Открыть Web UI",
"edit_server_title": "Изменить сервер",
"edit_keep_credential": "Оставьте пустым, чтобы сохранить текущее значение",
"server_saved": "Настройки сервера сохранены",
"servers_reordered": "Порядок серверов изменён",
"ping_checking": "Проверяем соединение...",
"offline": "недоступен",
"api_tokens_title": "API-токены",
"api_tokens_hint": "Bearer-токены для внешних интеграций. Передавайте токен в заголовке `Authorization: Bearer <token>`. Токены имеют права администратора и перестают работать, если их владелец отключён или понижен в роли.",
"api_tokens_empty": "Пока нет ни одного API-токена. Создайте, чтобы подключить панель к внешнему сервису.",
"api_tokens_create": "Создать токен",
"api_tokens_create_title": "Создание API-токена",
"api_tokens_name_label": "Название",
"api_tokens_name_placeholder": "напр. Linear, CI-бот, мониторинг",
"api_tokens_name_hint": "Нужно, чтобы отличать токен в списке. Сам токен сгенерируется автоматически.",
"api_tokens_name_required": "Укажите название токена",
"api_tokens_created_title": "Токен создан",
"api_tokens_value_label": "Значение токена",
"api_tokens_warning_title": "Это единственный раз, когда вы увидите этот токен.",
"api_tokens_warning_body": "Скопируйте его сейчас и сохраните в менеджере секретов вашей интеграции. Панель хранит только хэш — если потеряете значение, токен придётся отозвать и создать заново.",
"api_tokens_revoke": "Отозвать",
"api_tokens_revoke_confirm": "Отозвать токен «{}»? Любая интеграция, использующая его, перестанет работать.",
"api_tokens_revoked": "Токен отозван",
"api_tokens_created": "Создан",
"api_tokens_last_used": "Последнее использование",
"api_tokens_owner": "Владелец",
"api_tokens_never": "никогда",
"coming_soon": "Скоро",
"promo_star_cta": "Поставить звезду на GitHub",
"aivpn_subtitle": "ИИ-подбор протокола, который сам выбирает правильный туннель под текущие условия. Поможете звездой — выйдет быстрее.",
"revproxy_title": "Reverse Proxy",
"revproxy_subtitle": "Высокопроизводительная маскировка трафика: прячем VPN за обычным сайтом, снижаем заметность для DPI.",
"revproxy_desc": "Reverse proxy на Caddy с декой-сайтом на портах 80/443. Маскирует VPN-трафик под обычный HTTPS-сайт для снижения детекции DPI.",
"revproxy_domain": "Домен",
"revproxy_domain_hint": "Необязательно. Направьте A-запись DNS на этот сервер для Let's Encrypt. Пусто — самоподписанный сертификат.",
"revproxy_site_title": "Название сайта",
"revproxy_tls_email": "Email для ACME",
"revproxy_tls_email_hint": "Нужен для автоматического получения сертификата Let's Encrypt при указании домена.",
"revproxy_backend": "VPN-бэкенд",
"revproxy_backend_none": "Только декой-сайт",
"revproxy_backend_port": "Порт бэкенда",
"revproxy_vpn_path": "Секретный путь туннеля",
"revproxy_vpn_path_hint": "Скрытый путь, проксируемый на VPN-бэкенд (напр. /cdn-cgi/challenge).",
"revproxy_telemt_mask": "Включить маскировку Telemt через Caddy",
"revproxy_install_hint": "Порт 443 занимает reverse proxy. Переустановите Xray/Telemt на внутренний порт (напр. 8443) перед маршрутизацией бэкенда.",
"revproxy_port_hint": "Reverse proxy слушает порты 80 и 443 (HTTPS + HTTP/3).",
"revproxy_site": "Декой-сайт",
"revproxy_open_site": "Открыть сайт",
"revproxy_change_settings": "Настройки",
"revproxy_settings_title": "Настройки Reverse Proxy",
"management": "Управление",
"server_management": "Управление сервером",
"server_management_desc": "Выполнение системных действий на вашей машине.",
"check_server_services": "Проверить сервисы сервера",
"reboot_server": "Перезагрузить сервер",
"clear_server": "Очистить сервер",
"remove_server": "Удалить сервер из панели",
"ssl_title": "SSL / HTTPS Настройки",
"enable_https": "Включить HTTPS",
"panel_port_label": "Порт панели",
"domain_label": "Доменное имя",
"cert_path_label": "Путь к SSL сертификату (.pem)",
"key_path_label": "Путь к приватному ключу (.pem)",
"or_paste_text": "ИЛИ вставьте текст сертификатов",
"cert_text_label": "Содержимое сертификата (CRT)",
"key_text_label": "Содержимое ключа (KEY)",
"ssl_hint": "После включения панель будет доступна по https:// на указанном домене. Убедитесь, что пути к файлам или текстовые данные верны.",
"ssl_provider_label": "Источник сертификата",
"ssl_provider_manual": "Вручную (пути / вставка)",
"ssl_provider_cloudflare": "Cloudflare (авто Let's Encrypt)",
"cf_token_label": "API-токен Cloudflare",
"cf_token_hint": "Создайте токен с правами Zone:DNS:Edit и Zone:Zone:Read для зоны вашего домена. Используется только для DNS-01 проверки — порты 80/443 остаются свободными.",
"acme_email_label": "Email (уведомления Let's Encrypt)",
"acme_staging_label": "Тестовый режим (staging-сертификаты)",
"cf_issue_btn": "Выпустить / Обновить сертификат",
"cf_issue_hint": "Выпускает настоящий сертификат Let's Encrypt через DNS Cloudflare без занятия порта 443. После выпуска перезапустите панель.",
"cf_issuing": "Выпускаем...",
"cf_issued_ok": "Сертификат успешно выпущен",
"cf_restart_required": "Перезапустите панель, чтобы применить новый сертификат",
"cf_need_domain": "Сначала укажите домен",
"cf_cert_active": "Активен",
"cf_cert_none": "Сертификат ещё не выпущен",
"cf_days_left": "дн. осталось",
"about_title": "О программе и обновления",
"current_version": "Текущая версия",
"check_updates": "Проверить обновления",
"checking_updates": "Проверка...",
"update_available": "Доступна новая версия",
"download_update": "Скачать обновление",
"up_to_date": "У вас установлена последняя версия"
}