PCAPrivate Control Administration
Private infrastructure. Professional control and administration.Частная инфраструктура. Профессиональный контроль и администрирование.

PCA

Private Control Administration

Private infrastructure. Professional control and administration.

Пошаговое руководство по панели PCA: вкладки, агент, router_setup, дашборд и безопасная работа без публикации секретов

1. Что такое PCA

PCA (PCA) — веб-панель на вашем сервере (VPS), через которую вы управляете несколькими роутерами Keenetic: статусы, домены Hydra, туннели, агент и уведомления.

Роутеры сами отправляют heartbeat на сервер; вы открываете сайт (например keenetichome.ru) и видите все объекты на одном дашборде.

Браузер → сервер PCA → роутеры и ПК в локальных сетях
Браузер → сервер PCA → роутеры и ПК в локальных сетях

2. Вход в панель

Окно ввода пароля администратора
Окно ввода пароля администратора

Шаги входа

Шаг 1

Откройте адрес панели

  • В браузере введите адрес, который выдал техник (например https://keenetichome.ru).
  • Появится тёмная страница PCA.
Шаг 2

Введите пароль администратора

  • В поле «Пароль» введите пароль админки PCA (задаётся при установке на VPS).
  • Нажмите «Войти» или Enter.
⚠️ Пароль чувствителен к регистру и раскладке. В инструкции и скриншотах он никогда не показывается — только «ваш пароль».
Шаг 3

Режим зрителя

Отдельный пароль «только просмотр» не даёт менять настройки и запускать опасные действия.

4. Дашборд — главный экран

Карточки роутеров; на каждой — кнопка 🤖 для быстрого apply-setup
Карточки роутеров; на каждой — кнопка 🤖 для быстрого apply-setup
Прокрутка дашборда: карточки роутеров, плашки сайтов и статусы ON/OFF
▶ Прокрутка дашборда: карточки роутеров, плашки сайтов и статусы ON/OFF
Кнопка 🤖 на карточке — быстрый apply-setup без перехода на /agent (сначала dry_run на /agent)
▶ Кнопка 🤖 на карточке — быстрый apply-setup без перехода на /agent (сначала dry_run на /agent)
▶ Видео: полный сценарий apply-setup с карточки дашборда (дольше, чем GIF выше)

Карточка роутера

Шаг 1

Статус ON / OFF

Зелёный — роутер на связи. Красный — нет heartbeat или ошибка.

Шаг 2

Плашки сайтов

Проверка важных URL с роутера; красные — сайт не открылся.

Шаг 3

🔄 Домены

Обновить Hydra только на этом роутере (10–60 с).

Шаг 4

🤖 на карточке

Быстрый запуск apply-setup (туннель + HR + проброс) без перехода на /agent. Сначала лучше dry_run на странице агента.

Шаг 5

🔕 / 🔔

Заглушить Telegram по этому объекту.

Шапка дашборда

🚀 Speedtest — замер на всех ПК-агентах. 🔗 Туннель — массовая выдача reverse-SSH. 💬 TG — переход в блок Telegram на странице /ai.

5. 🤖 Агент — подключение роутеров (/agent)

Страница /agent: новый роутер, существующий, переустановка, detach
Страница /agent: новый роутер, существующий, переустановка, detach
Новый роутер: прогресс playbook (карточка → bundle → opkg → туннель → HR)
▶ Новый роутер: прогресс playbook (карточка → bundle → opkg → туннель → HR)
Существующий роутер: шаги apply-setup и dry_run
▶ Существующий роутер: шаги apply-setup и dry_run
Блок «Новый роутер»: имя, маска пароля hrweb, прогресс playbook (демо, без реальных ключей)
▶ Блок «Новый роутер»: имя, маска пароля hrweb, прогресс playbook (демо, без реальных ключей)
Блок «Существующий роутер»: шаги apply-setup, галочка dry_run и «Совет ИИ при ошибке»
▶ Блок «Существующий роутер»: шаги apply-setup, галочка dry_run и «Совет ИИ при ошибке»
Блок detach: опции очистки, dry_run и подтверждение DETACH
▶ Блок detach: опции очистки, dry_run и подтверждение DETACH
Heal-all: проверка и починка туннелей (если блок есть в вашей версии UI)
▶ Heal-all: проверка и починка туннелей (если блок есть в вашей версии UI)
Галочка «Совет ИИ при ошибке» — ключ API задаётся на /ai, в кадре не показывается
▶ Галочка «Совет ИИ при ошибке» — ключ API задаётся на /ai, в кадре не показывается
▶ Видео: полный onboard playbook на /agent (30–90 с, без звука)
▶ Видео: apply-setup с dry_run и окном плана — без применения на роутере

Важно: /agent ≠ /ai

Вкладка **🤖 Агент** в меню ведёт на **/agent** — автоматизация туннеля, HydraRoute Neo и проброса 22→222.

Вкладка **💬 AI** ведёт на **/ai** — чат, бюджет токенов, Telegram; это отдельная глава ниже.

📡 Новый роутер
Шаг 1

Когда использовать

Объект ещё не в routers.json: сначала мастер router_setup, затем apply-setup здесь.

Шаг 2

Действия

  • Укажите имя (латиницей) и пароль веб Neo (hrweb) → «💾 Сохранить в карточку».
  • «▶ Запустить полную настройку» или авто-опрос 30 с — playbook: карточка → bundle → opkg → проброс → туннель → HR.
  • Альтернатива: «▶ Открыть router_setup» — ручной opkg в Web CLI, затем блок «Существующий роутер».
  • Галочку Firstboot в apply-setup для уже работающего роутера обычно не ставят.
⚠️ Пароль hrweb в скриншотах и PDF не показывается — только маска «••••••••».
🔌 Существующий роутер (apply-setup)
Шаг 1

Порядок работы

  • Выберите роутер в списке.
  • Отметьте шаги: Туннель, HR Neo, Проброс 22→222, при необходимости Firstboot.
  • Включите «Только план (dry_run)» → «🤖 Применить агент» — просмотрите план без изменений.
  • Снимите dry_run и примените с подтверждением.
Шаг 2

Галочки шагов

  • **Туннель** — reverse SSH на VPS (нужен Entware SSH или живой туннель).
  • **HR Neo** — установка/обновление HydraRoute через install.sh.
  • **Проброс 22→222 / opkg disk** — через RCI, если в карточке есть hrweb_login и hrweb_password (пароль веб Keenetic, не SSH); иначе Web CLI вручную (глава 6a, режим Parse).
  • **Firstboot** — только после свежего opkg disk или сброса .firstboot_done.
⚠️ Firstboot на работающем роутере может переустановить пакеты — не включайте без необходимости.
Шаг 3

Только план (dry_run)

Сервер строит план команд, но ничего не выполняет на роутере. Всегда начинайте с dry_run.

Шаг 4

Совет ИИ при ошибке

Если включено — при ошибке шага краткий совет от модели (ключ API настраивается на /ai, в скриншотах не показывается).

Шаг 5

🔍 Диагностика

Reconcile с dry_run: состояние, проблемы, playbook — без изменений на роутере.

Шаг 6

🔧 Все туннели и SSH

  • Галочка «Проверить и починить все туннели и SSH» — массовый heal (autossh через router_cmd), без reboot.
  • Сначала dry_run — отчёт по каждому роутеру; затем снимите dry_run и подтвердите.
  • API: POST /api/routers/heal-all или reconcile-all?heal=true&dry_run=true.
🔄 Переустановка

План переустановки

  • Выберите роутер и режим: селективная (только KU) или полная (+ HydraRoute, нужно YES).
  • «📋 План переустановки» — чеклист и команды в модальном окне (копируете вручную).
  • Типичный цикл: план → cleanup на роутере → rm .firstboot_done → bundle → reboot → apply-setup с Firstboot при необходимости.
🔓 Безопасное отключение (detach)
Шаг 1

Зачем

Объект больше не обслуживается KU, но роутер должен остаться в сети.

Шаг 2

Опции

  • Очистка KU на роутере (autossh, cron, скрипты ku_*).
  • Удалить ключи туннеля на VPS.
  • Удалить карточку из routers.json.
  • Опционально снять HydraRoute (remove_hr) — отдельное подтверждение REMOVE_HR.
Шаг 3

dry_run и подтверждение

«Только план» — предпросмотр. Для применения введите DETACH, ОТКЛЮЧИТЬ или имя роутера; при снятии HR — ещё REMOVE_HR.

⚠️ Detach не отключает интернет WAN и не удаляет Entware целиком.

6. 📡 router_setup — новый роутер без Windows

Мастер /router_setup: карточка, opkg disk, bundle
Мастер /router_setup: карточка, opkg disk, bundle
Форма router_setup: имя объекта, KeenDNS, «Создать карточку» и команды для Web CLI
▶ Форма router_setup: имя объекта, KeenDNS, «Создать карточку» и команды для Web CLI

Когда выбирать router_setup

Нет Windows-ПК в сети роутера, но есть доступ к веб-морде Keenetic. После мастера firstboot поднимет openssh, HR (если включено) и туннель без Entware SSH на этапе установки.

Пошагово
Шаг 1

1 — войдите в панель

Сначала авторизация на дашборде; в форме router_setup поле «пароль VPS» — тот же пароль админки PCA.

Шаг 2

2 — имя и KeenDNS

Имя роутера латиницей (petrov_dom). Публичный KeenDNS hostname можно указать; секретные ключи в инструкцию не копируйте.

Шаг 3

3 — «Создать карточку»

Запись в routers.json на сервере. Скачайте сгенерированные команды для Web CLI.

Шаг 4

4 — opkg disk в Web CLI

Откройте Web CLI роутера (см. главу 6a): адрес вида https://ваш-keendns/a → вкладка Parse → вставьте строку opkg disk из /router_setup → «Отправить запрос» → перезагрузка 3–5 минут.

Шаг 5

5 — firstboot

После reboot скрипт S99ku-firstboot завершит настройку. Проверьте карточку на /admin.

Шаг 6

6 — дальше /agent

При необходимости проброс 22→222 и донастройка — блок «Существующий роутер» на /agent (без Firstboot, если firstboot уже прошёл).

6a. Веб-интерфейс Keenetic (Neo)

Команды opkg disk, проброс портов и проверка Entware выполняются в **веб-морде роутера**, не в PCA. Пароль входа — тот же, что сохраняете как hrweb на /agent или /admin.

Keenetic: раздел командной строки (Web CLI)
Keenetic: раздел командной строки (Web CLI)
Вход в веб Neo (пароль на скриншоте не показывается)
▶ Вход в веб Neo (пароль на скриншоте не показывается)
Дашборд роутера после входа (KeenDNS, порты)
▶ Дашборд роутера после входа (KeenDNS, порты)
Web CLI → Parse: одна команда, «Отправить запрос»
▶ Web CLI → Parse: одна команда, «Отправить запрос»
Web CLI → REST (на части прошивок вместо Execute): show system mode
▶ Web CLI → REST (на части прошивок вместо Execute): show system mode
Parse: opkg disk … (URL bundle — учебный example.invalid)
▶ Parse: opkg disk … (URL bundle — учебный example.invalid)
Parse: ip static tcp GigabitEthernet1/PPPoE0 222 LAN 22 — по одной строке
▶ Parse: ip static tcp GigabitEthernet1/PPPoE0 222 LAN 22 — по одной строке
Parse: show interface — имя WAN для wan_ndmc_iface в карточке
▶ Parse: show interface — имя WAN для wan_ndmc_iface в карточке
Меню OPKG: выбор USB-накопителя для Entware
▶ Меню OPKG: выбор USB-накопителя для Entware
Системные настройки NDMS (компоненты; Parse пишет в startup-config)
▶ Системные настройки NDMS (компоненты; Parse пишет в startup-config)
Открытие Web CLI в веб Neo после входа (меню или /a)
▶ Открытие Web CLI в веб Neo после входа (меню или /a)
Вкладка Parse: ввод одной команды перед «Отправить запрос»
▶ Вкладка Parse: ввод одной команды перед «Отправить запрос»
Parse: строка opkg disk (учебный URL example.invalid, без bootstrap)
▶ Parse: строка opkg disk (учебный URL example.invalid, без bootstrap)
Parse: проброс 22→222 — имена интерфейсов с вашего show interface
▶ Parse: проброс 22→222 — имена интерфейсов с вашего show interface
▶ Видео: полный цикл opkg disk в Web CLI (дольше, с паузами на reboot)
▶ Видео: проброс 22→222 по шагам в Parse
Порядок для нового объекта
Шаг 1

1 — вход

Откройте KeenDNS / dashboard роутера. Войдите под учёткой Neo (не путать с SSH root Entware).

Шаг 2

2 — открыть Web CLI

  • В браузере: `https://ваш-keendns/a` (или `/webcli/parse`) после входа в Neo.
  • В меню слева: **Управление** → **Web CLI** (на Netcraze Ultra).
Шаг 3

3 — режим Parse

  • Вкладка **Parse** — opkg disk, ip static tcp …, show interface.
  • Команды вводите **по одной строке**, затем «Отправить запрос».
  • После opkg disk — перезагрузка 3–5 минут, затем firstboot или playbook на /agent.
Шаг 4

4 — REST / Execute

Вкладка **REST** (или Execute на старых прошивках) — разовые запросы вроде show system mode без записи в конфиг.

Шаг 5

5 — OPKG и сохранение

  • Пункт меню **OPKG** — выбор USB-накопителя перед opkg disk.
  • Команды Parse попадают в startup-config; при сомнениях проверьте **Системные настройки** → файлы конфигурации.

7. 📡 Роутеры — вкладка /admin

Управление: список, туннели, кнопка 🤖 Агент в строке
Управление: список, туннели, кнопка 🤖 Агент в строке
Вкладка /admin: список роутеров, туннели и статусы
▶ Вкладка /admin: список роутеров, туннели и статусы
Кнопка 🤖 Агент в строке — тот же apply-setup, что на /agent
▶ Кнопка 🤖 Агент в строке — тот же apply-setup, что на /agent

Список роутеров

Шаг 1

Карточка в таблице

Имя, IP, туннель, firstboot, Hydra, последний контакт.

Шаг 2

Кнопка 🤖 Агент

Тот же apply-setup, что на /agent: выбор шагов в выпадающем списке → выполнение. Firstboot — только для нового bundle (см. /agent).

Шаг 3

hrweb_login / hrweb_password

Логин и пароль веб Neo на роутере — для проброса и RCI, не путать с SSH root. В скриншотах и PDF — только «пароль веб Neo».

Другие блоки на /admin
Шаг 1

🔑 Доступ для нового ПК

Bootstrap ku-ssh на ноутбук — одна команда, без публикации ключей в чатах.

Шаг 2

Туннели

Статус reverse-SSH, генерация строки для LAN.

Шаг 3

SSH-команды

Массовое выполнение — только если понимаете команду.

Шаг 4

🎛 Устройства и политики

Матрица галочек: Дашборд, AI, Алерты, TG/Email, Авто (MON = только мониторинг), Без ПК, RCI DNS. NAS/Wall/ТО — глава Wall.

8. 💬 AI — чат и Telegram (/ai)

Страница /ai: чат, провайдер, очередь подтверждений (не /agent)
Страница /ai: чат, провайдер, очередь подтверждений (не /agent)
Чат /ai: поле вопроса и очередь (ключ API в настройках провайдера, не в кадре)
▶ Чат /ai: поле вопроса и очередь (ключ API в настройках провайдера, не в кадре)

Чем отличается от /agent

**/agent** — подключение роутеров (туннель, HR, detach). **/ai** — диалог с моделью, бюджет, автопилот, Telegram-бот.

Чат
Шаг 1

Вопросы

Пишите обычным языком: «почему offline роутер дача», «скорость office».

Шаг 2

Подтверждения

Опасные действия попадают в «Ожидают подтверждения» — одобряйте только понимая последствия.

Шаг 3

Ключ API

Задаётся в настройках провайдера на этой странице; в инструкции и скриншотах не дублируется.

Telegram ↔ агент

Блок «Агент в Telegram» (#sec-tg-agent): привязка чата, команды /ai reset. Токен бота — в /admin → Уведомления.

9. Установка с Windows (pc_setup)

Альтернатива router_setup: ПК в Wi‑Fi роутера
Альтернатива router_setup: ПК в Wi‑Fi роутера
Вкладка /pc_setup: форма и шаги pc_setup.bat (если страница доступна)
▶ Вкладка /pc_setup: форма и шаги pc_setup.bat (если страница доступна)

Кратко

Вкладка **💻 ПК** (/pc_setup): форма → pc_setup.bat от администратора → 6 шагов (Neo, агент, туннель, Windows-агент). Подробности — в подсказках на странице pc_setup.

10. 🌐 Домены

Списки Hydra и прогресс отправки на роутеры
Списки Hydra и прогресс отправки на роутеры
Страница /domains: списки и кнопка отправки на все роутеры
▶ Страница /domains: списки и кнопка отправки на все роутеры

Отправка на все роутеры

Шаг 1

«На все роутеры»

Роутеры обрабатываются по очереди: ⏳ ✅ ❌ ⏭.

Шаг 2

Ошибка на одном

Запишите имя и текст; остальные могли обновиться. Повтор — 🔄 на дашборде для одного роутера.

Шаг 3

Если роутер не принимает домены

На объекте должен быть установлен HydraRoute Neo (apply-setup «HR Neo» или firstboot). Проверьте Web CLI: show system mode и доступность роутера с PCA.

11. Ключевые понятия

Туннель (reverse SSH)

Роутер сам подключается к VPS; сервер заходит на роутер через localhost. Нужен при «сером» IP. Ставится pc_setup шаг 4 или apply-setup «Туннель».

HR (HydraRoute Neo)

Маршрутизация доменов на роутере. Шаг apply-setup «HR Neo» или firstboot после bundle.

После успешной установки HR VPS автоматически пушит списки доменов на роутер (hydra_update.sh); в onboard — отдельная фаза domains перед verify.

Проброс 22→222

Порт WAN 222 на роутере → SSH 22 внутри. Нужны hrweb_login и пароль веб Neo в карточке /admin.

firstboot

Скрипт S99ku-firstboot после opkg disk: openssh, HR, туннель. Галочка Firstboot в apply-setup — только для свежего bundle.

dry_run

Режим «только план»: команды не выполняются. Используйте на /agent и detach перед реальным применением.

detach и remove_hr

detach — снять объект с VPS (карточка, ключи, опционально cleanup на роутере). remove_hr — дополнительно убрать HydraRoute; требует отдельного подтверждения REMOVE_HR.

12. Мониторинг и настройки

Вкладка /monitoring: аудит, PDF и интервалы проверок
▶ Вкладка /monitoring: аудит, PDF и интервалы проверок
Вкладка /settings: пароль PCA, Telegram и SMTP (токены не показываются)
▶ Вкладка /settings: пароль PCA, Telegram и SMTP (токены не показываются)

Мониторинг

Шаг 1

Полный аудит

Долгая проверка — не запускайте слишком часто.

Шаг 2

PDF отчёт

Для техника после аудита.

Настройки (/settings)
Шаг 1

Пароль PCA

Смена пароля входа в панель.

Шаг 2

Telegram / SMTP

Токены задаются в UI; не публикуйте в чатах.

13. VPS: перегрузка и чистка диска

Сервер PCA (keenetichome.ru) разделяет хост с VPN (Amnezia, x-ui). При нехватке RAM/диска используйте безопасные скрипты — они **не останавливают** VPN-сервисы.

Мониторинг в шапке

В шапке панели — CPU / RAM / диск VPS. Файл `server/data/vps_health.json` обновляется cron (`scripts/ku-vps-health.sh`). При перегрузке (>80%) — Telegram не чаще 1 раза в 30 мин.

ku-vps-cleanup.sh
Шаг 1

Обычная чистка

  • На VPS: `/opt/keenetic-unified/scripts/ku-vps-cleanup.sh`
  • Делает: apt clean, journal vacuum 7d, старый /tmp, __pycache__ в KU.
  • Не трогает: amnezia, x-ui, xray, wireguard, docker amnezia.
Шаг 2

Агрессивная

  • `KU_VPS_CLEANUP_YES=1 /opt/keenetic-unified/scripts/ku-vps-cleanup.sh --aggressive`
  • Дополнительно: journal 3d, старые .gz/.1 в /var/log.
  • Только после согласования — не во время активного деплоя.

Документация

Подробности для агентов: `docs/VPS_EMERGENCY.md` в репозитории. Перед тяжёлым rsync/deploy проверьте vps_health.json.

14. Частые проблемы

Не пускает с паролем

Проверка

Раскладка, Caps Lock. Техник сверяет ADMIN_PASSWORD на VPS (.env) — значение вам сообщают отдельно, не в этой инструкции.

Роутер красный на дашборде

Шаг 1

Подождите 5 минут

Краткие обрывы провайдера бывают.

Шаг 2

Туннель

На /admin бейдж tunnel; иначе apply-setup «Туннель» или pc_setup шаг 4.

apply-setup / dry_run
Шаг 1

Сначала план

Включите dry_run, прочитайте план, затем применяйте без dry_run.

Шаг 2

Проброс не встаёт

Заполните hrweb_login и пароль веб Neo в карточке на /admin; либо команды Parse в Web CLI (глава 6a). Укажите wan_ndmc_iface как в show interface.

Шаг 3

Нет пароля hrweb / не входит в Neo

Восстановите пароль веб-интерфейса (AnyDesk к объекту или сброс hrweb из бэкапа карточки на VPS). Без hrweb автоматический RCI opkg/проброс на /agent недоступен — только ручной Web CLI.

14. VPS: если сервер «накрывается»

Это про сервер PCA (VPS), а не про роутер. Когда сайт тормозит, API отдаёт 502, или в Telegram пришло «VPS перегрузка» — действуйте по шагам ниже. Подробный playbook для техника: docs/VPS_EMERGENCY.md в репозитории (на сервере — в /opt/keenetic-unified/docs/).

Признаки проблемы

  • Высокая нагрузка (load), дашборд не открывается или долго грузится.
  • Ошибки 502/504 на keenetichome.ru.
  • Диск заполнен (в Telegram или в метриках >80%).
  • systemctl status keenetic-unified — failed.

Шаг 1 — посмотреть метрики

Файлы на VPS (SSH)

  • vps_health.json — cpu, ram, disk, overloaded.
  • vps_health_alerts.jsonl — последние алерты перегрузки.
💡 Техник выполняет команды по VPS_EMERGENCY.md; пароли и токены в эту инструкцию не входят.

Шаг 2 — безопасная чистка

Скрипт ku-vps-cleanup.sh

На VPS: /opt/keenetic-unified/scripts/ku-vps-cleanup.sh — чистит apt, journal, tmp, кэш Python в KU. Показывает df -h до и после.

⚠️ Скрипт не останавливает Amnezia, 3x-ui (x-ui), xray, WireGuard и VPN-контейнеры.

Шаг 3 — перезапуск только PCA

keenetic-unified

Только: systemctl restart keenetic-unified. Не перезагружайте весь VPS и не трогайте x-ui / Amnezia без отдельного решения.

Чего не делать
  • reboot всего VPS без крайней необходимости.
  • Удалять /opt/keenetic-unified/server/data.
  • apt remove wireguard или останавливать VPN-сервисы «на всякий случай».
  • Копировать локальный server/data на прод через rsync.
Если не помогло

journalctl -u keenetic-unified -n 100, логи nginx, проверка зависших SSH-сессий — см. VPS_EMERGENCY.md. Telegram при disk/cpu/ram >80% уже настроен на сервере.

Словарик простыми словами

PCA / PCA
Веб-панель на VPS для управления роутерами Keenetic.
/agent
Подключение роутеров: apply-setup, reinstall, detach — не чат ИИ.
/ai
Чат с моделью, автопилот, Telegram, ключи API.
/admin
Вкладка «Роутеры»: список, туннели, кнопка 🤖 Агент в строке.
/router_setup
Мастер нового объекта без Windows: opkg disk + firstboot.
Туннель
Reverse SSH: роутер → VPS, доступ сервера к роутеру.
HR / HydraRoute Neo
Маршрутизация доменов на роутере.
Проброс 22→222
WAN-порт для SSH через VPS; нужен hrweb в карточке.
firstboot
Автонастройка после Entware bundle (S99ku-firstboot).
dry_run
Только план, без выполнения команд на роутере.
detach
Безопасное отключение объекта от VPS.
remove_hr
При detach — снять HydraRoute; отдельное подтверждение.
hrweb
Логин/пароль веб Neo на роутере — не SSH root.
pc_setup.bat
Установка с Windows: 6 шагов с галочками.
ku-ssh
SSH к роутеру через VPS после bootstrap «Доступ для нового ПК».
Web CLI
Командная строка Neo (/a): Parse — opkg, ip static; REST/Execute — разовые show.
ku-vps-cleanup.sh
Безопасная чистка диска/RAM на VPS без остановки VPN.
vps_health.json
Снимок CPU/RAM/диска; overloaded — не грузить VPS без согласования.
автор:GitHub·Boosty·Поддержка·@Iot_andrey