<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:georss="http://www.georss.org/georss">
<channel>
<title>V3TROV.PRO — DIY БЛОГ</title>
<link>https://v3trov.pro/</link>
<language>ru</language><item>
<title>Tailscale на OpenWrt: доступ к домашней сети через subnet router</title>
<link>https://v3trov.pro/tailscale-na-openwrt-mesh-set-subnet-router-i-bezopasnoe-administrirovanie</link>
<pdalink>https://v3trov.pro/tailscale-na-openwrt-mesh-set-subnet-router-i-bezopasnoe-administrirovanie</pdalink>
<guid>https://v3trov.pro/tailscale-na-openwrt-mesh-set-subnet-router-i-bezopasnoe-administrirovanie</guid>
<pubDate>Sun, 13 Sep 2026 04:44:29 +0000</pubDate>
<category>index</category>

<enclosure url="/uploads/posts/v3trov/images/20260914_003126_13d92dba.webp" type="image/webp" />
<content:encoded><![CDATA[<p>Tailscale установился, роутер появился в списке устройств, но домашний NAS с телефона не открывается. Это не противоречие: доступ к самому узлу и доступ к сети за ним — две разные настройки.</p> <p>Разберём сценарий <strong>удалённого доступа к своим домашним сервисам</strong>. В примере OpenWrt имеет LAN 192.168.10.0/24, Home Assistant находится на 192.168.10.20:8123, а телефон подключается через мобильную сеть. Эти адреса нужно заменить своими.</p> <figure class="article-media"><img src="/uploads/posts/v3trov/images/20260914_003126_13d92dba.webp" alt="203-scheme.png" loading="lazy" style="max-width:100%;height:auto;" width="1600" height="900"></figure> <h2>Что именно делает subnet router</h2> <p>Обычный узел Tailscale доступен по собственному адресу tailnet. Subnet router дополнительно передаёт трафик к устройствам, на которые клиент Tailscale не установлен: NAS, принтеру или локальному серверу.</p> <p>Для этого должны совпасть три условия: маршрут объявлен и принят, политика tailnet разрешает соединение, firewall OpenWrt пропускает пересылку к целевому устройству. Галочка Online подтверждает только присутствие узла в сети.</p> <p>Exit node — отдельная функция для направления интернет-трафика клиента. Для доступа к своей LAN объявлять маршрут по умолчанию не требуется. Различия и ограничения описаны в <a href="http://https://v3trov.pro/index.php?do=go&amp;encryptedurl=U2FsdGVkX1_GaTlZyWX7sftK1MptEK__QOmPZPyzPBlEPvr-wxkrzonSWa3ve4S3vhifw3zcsEVPV0BXH3IrKb7PyjfZbm8t7uw0-HAmm14&amp;crc=ce68bbee0328d196689a27ff67d6ddc7" target="_blank" data-encode="true" rel="noopener external">документации subnet routers</a>.</p> <h2>До установки: адреса, версия и способ аварийного входа</h2> <p>Скачайте backup конфигурации OpenWrt и оставьте возможность локального подключения по кабелю. Первую настройку маршрутов удобнее делать дома, а не после отъезда.</p> <p>Проверьте версию, место и существующие маршруты:</p> <pre><code class="language-bash">ubus call system board df -h ip -4 route </code></pre> <p>Если дома и в удалённой сети один диапазон 192.168.1.0/24, доступ может уходить не туда. Для первого теста используйте мобильную сеть телефона. Постоянное решение — продуманная адресация без пересечений, а не набор всё более широких маршрутов.</p> <p>Если на роутере уже используется PBR, учтите его правила отдельно. Материал <a href="/vpn-tolko-dlya-vybrannyh-saytov-i-ustroystv-v-openwrt-razdelnaya-marshrutizatsiya-trafika">о раздельной маршрутизации OpenWrt</a> объясняет, почему разные устройства и назначения могут получать разные пути.</p> <h2>Установите пакет и подключите сам роутер</h2> <p>Используйте репозитории своей сборки. В OpenWrt 25.12+ пакетный менеджер — apk, в 24.10 — opkg; в производных прошивках проверьте фактический менеджер. <a href="https://openwrt.org/docs/guide-user/additional-software/apk" rel="external noopener">Документация apk</a> описывает современный синтаксис.</p> <p>Для apk:</p> <pre><code class="language-bash">apk update apk add tailscale </code></pre> <p>Для opkg:</p> <pre><code class="language-bash">opkg update opkg install tailscale </code></pre> <p>Затем:</p> <pre><code class="language-bash">service tailscale enable service tailscale start tailscale up --accept-dns=false tailscale status </code></pre> <p>Откройте выданную ссылку авторизации и подключите роутер к своей tailnet. Не публикуйте её в журнале диагностики. Параметр accept-dns=false в этой схеме сохраняет собственную DNS-настройку OpenWrt, чтобы не смешивать запуск туннеля и смену DNS.</p> <p>Проверьте установленную версию и доступность обновлений. Пакет в конкретной ветке OpenWrt может отставать от upstream; отсутствие ошибок установки не доказывает актуальность версии.</p> <h2>Объявите только нужную домашнюю подсеть</h2> <p>Сначала убедитесь, что Linux forwarding включён:</p> <pre><code class="language-bash">sysctl net.ipv4.ip_forward </code></pre> <p>Для работы IPv4 subnet router ожидается значение 1. На обычном OpenWrt-маршрутизаторе пересылка, как правило, уже включена. Если это специальная сборка или устройство в роли точки доступа, настройте постоянное включение forwarding по документации своей системы и повторите проверку после reboot.</p> <p>На подключённом узле объявите <strong>свою</strong> подсеть:</p> <pre><code class="language-bash">tailscale set --advertise-routes=192.168.10.0/24 </code></pre> <p>В панели Tailscale откройте роутер и подтвердите объявленный маршрут. Объявление и одобрение — разные действия. Не путайте их с разрешением доступа: принятый маршрут сообщает, куда отправлять трафик, но не определяет, кому это разрешено.</p> <p>У клиента тоже должна быть включена работа с subnet routes. В Linux для этого обычно требуется:</p> <pre><code class="language-bash">sudo tailscale set --accept-routes=true </code></pre> <p>Эту команду выполняют <strong>на Linux-клиенте</strong>, а не на домашнем роутере ради объявления его LAN. Порядок включения и одобрения маршрутов приведён в <a href="http://https://v3trov.pro/index.php?do=go&amp;encryptedurl=U2FsdGVkX1-Y9frp9Qld5p3mg4qpf8YcOFtyDVhBL6CwPmg9sz4oz9_ynVMFAna0L0plGLBS4sd4zLzshEnz7qLG5CDFCnMiEh8vkYh3kdY&amp;crc=a5c10a17d15d65c8d48de98fc8bfd056" target="_blank" data-encode="true" rel="noopener external">инструкции Tailscale</a>.</p> <h2>Разрешите ровно нужный доступ</h2> <p>Начните с одного назначения: Home Assistant 192.168.10.20, TCP 8123, только для своей административной учётной записи или группы. В политике tailnet добавьте соответствующее разрешение и проверьте существующие широкие правила: точечное правило не отменяет уже разрешённый доступ «ко всему».</p> <p>В OpenWrt выделите tailscale0 в отдельный unmanaged-интерфейс и отдельную firewall-зону, если ваша пакетная конфигурация ещё не создала нужные объекты. До добавления проверьте текущие интерфейсы и зоны, чтобы не сделать дубликаты.</p> <p>Сохраните запрет по умолчанию на вход к самому роутеру и на forwarding из этой зоны. Затем создайте отдельное правило пересылки: источник — зона Tailscale, назначение — LAN, адрес 192.168.10.20, TCP-порт 8123, действие Accept. Глобальный forwarding Tailscale → LAN для этого теста не нужен.</p> <p>LuCI и SSH <strong>самого роутера</strong> относятся к input, а соединение с сервером за ним — к forward. Поэтому правило доступа к LuCI не открывает автоматически NAS.</p> <p>Tailscale использует SNAT для subnet routes по умолчанию. Не отключайте его в первой настройке: без SNAT устройствам LAN потребуется обратный маршрут к адресам tailnet. Детали поведения приведены в документации subnet routers.</p> <h2>Проверка с телефона вне домашнего Wi-Fi</h2> <p>Отключите Wi-Fi телефона, включите Tailscale и откройте http://192.168.10.20:8123. Сначала используйте IP: имя nas.lan добавляет ещё один слой DNS-диагностики.</p> <p>Успешный результат — открывается именно нужный сервис. Ping может быть запрещён отдельно, поэтому не делайте вывод о доступности TCP только по ICMP.</p> <p>На роутере для диагностики пригодятся:</p> <pre><code class="language-bash">tailscale status tailscale netcheck logread -e tailscale </code></pre> <p>Также проверьте доступ к Home Assistant из обычной домашней LAN. Если сервис не работает локально, subnet router это не исправит.</p> <h2>Роутер виден, а LAN недоступна: порядок поиска</h2> <ol> <li><strong>Маршрут:</strong> объявлена верная подсеть и одобрена в панели? Нет ли опечатки в маске?</li> <li><strong>Клиент:</strong> приняты subnet routes? Не совпадает ли удалённая LAN с домашней?</li> <li><strong>Права tailnet:</strong> разрешены этот пользователь, адрес и порт? Нет ли другого профиля входа?</li> <li><strong>OpenWrt:</strong> существует интерфейс tailscale0, включён forwarding, правило относится к правильным зонам?</li> <li><strong>Целевой сервер:</strong> сервис слушает LAN-адрес и разрешает соединения в своём firewall?</li> <li><strong>Обратный путь:</strong> не отключён ли SNAT без соответствующих маршрутов?</li> </ol> <p>Если соединение работает, но медленно, проверьте тип пути: прямое соединение и ретрансляция могут давать разную задержку. Не открывайте LuCI на WAN для «ускорения» — это другой маршрут доступа, который не устраняет причину.</p> <p>Если IP работает, а имя нет, настройте DNS отдельно. MagicDNS даёт имена узлам tailnet и не превращает автоматически все имена домашнего dnsmasq в доступные удалённому клиенту.</p> <p>Если хотите пользоваться домашним DNS-фильтром удалённо, сначала настройте и проверьте его в LAN по <a href="/adguard-home-na-openwrt-ustanovka-dns-filtratsiya-i-ustranenie-konfliktov">инструкции AdGuard Home на OpenWrt</a>. Затем отдельно настройте DNS клиента и разрешения к DNS-серверу: объявление subnet route не переключает DNS автоматически.</p> <h2>Что оставить после успешного теста</h2> <p>Расширяйте список разрешённых сервисов по одному. Для домашнего роутера полезно заранее проверить локальные настройки по <a href="/routerich-ax3000-nastroyka-routera-na-openwrt-mesh-torrserver-i-setevoe-hranilische">руководству Routerich AX3000 на OpenWrt</a>, если используется эта модель.</p> <p>Проверьте автозапуск после перезагрузки, срок действия ключа узла и способ его повторной авторизации. Сохраните локальный способ входа. Итоговая рабочая конфигурация — та, где вы можете объяснить каждый объявленный маршрут и каждое разрешённое направление, а удалённый телефон открывает нужный сервис без публикации панели на WAN.</p>]]></content:encoded>
</item><item>
<title>Локальный голосовой помощник Home Assistant на русском: Whisper и Piper</title>
<link>https://v3trov.pro/home-assistant-voice-lokalnyy-assist-wake-word-i-golosovoe-upravlenie</link>
<pdalink>https://v3trov.pro/home-assistant-voice-lokalnyy-assist-wake-word-i-golosovoe-upravlenie</pdalink>
<guid>https://v3trov.pro/home-assistant-voice-lokalnyy-assist-wake-word-i-golosovoe-upravlenie</guid>
<pubDate>Sun, 13 Sep 2026 04:44:01 +0000</pubDate>
<category>index</category>

<enclosure url="/uploads/posts/v3trov/images/20260914_003107_f452989e.webp" type="image/webp" />
<content:encoded><![CDATA[<p>«Включи свет на кухне». Колонка услышала фразу, подумала и ничего не сделала. Причиной может быть микрофон, язык распознавания, имя сущности или доступ к лампе. Менять всё сразу — плохой способ найти виновника.</p> <p>Соберём <strong>локальный Assist на русском языке</strong>, начиная с телефона и одной лампы. Покупать голосовую колонку для первой проверки не нужно. Основной сценарий рассчитан на Home Assistant OS, где речевые компоненты устанавливаются через каталог приложений.</p> <figure class="article-media"><img src="/uploads/posts/v3trov/images/20260914_003107_f452989e.webp" alt="202-scheme.png" loading="lazy" style="max-width:100%;height:auto;" width="1600" height="900"></figure> <h2>Из чего складывается ответ</h2> <p>Команда проходит несколько этапов: микрофон → распознавание речи (STT) → обработка намерения → действие → синтез ответа (TTS). Wake word запускает прослушивание на совместимом устройстве, но не заменяет остальные этапы.</p> <p>Для выбранной схемы используем Whisper для речи в текст, встроенный агент Home Assistant для команд и Piper для ответа. Это локальные компоненты; внешний LLM или облачная речь для включения света не обязательны. Разные варианты представлены в <a href="https://www.home-assistant.io/voice_control/voice_remote_local_assistant/" rel="external noopener">руководстве по локальному Assist</a>.</p> <p>Локальность нужно проверять по всей цепочке. Если Assist работает дома, но сама лампа управляется только через облачную интеграцию, потеря интернета всё равно может нарушить сценарий.</p> <p>Чтобы локальная речь не заканчивалась обращением лампы к облаку, проверьте <a href="/wi-fi-integratsii-home-assistant-podklyuchenie-lokalnyh-ustroystv-bez-oblaka">варианты локальных Wi-Fi-интеграций Home Assistant</a>. Поддержка зависит от устройства; наличие Wi-Fi само по себе локального управления не гарантирует.</p> <h2>Шаг 1. Добейтесь выполнения текстовой команды</h2> <p>Откройте Assist в интерфейсе HA и введите: «Включи свет на кухне». Пока текст не работает, к микрофону переходить рано.</p> <p>Выберите одну лампу, проверьте управление её карточкой, назначьте комнату и разрешите доступ к ней для Assist. Дайте понятное имя и при необходимости псевдоним. Сущность light.kitchen_ceiling может иметь русское отображаемое имя — переименовывать технический entity_id ради разговорной фразы не требуется.</p> <p>Не открывайте Assist сразу все устройства. Для первого теста хватит лампы и датчика температуры. Проверьте также обратную команду «Выключи свет на кухне» и запрос температуры.</p> <p>Если на панели устройств нет, сначала настройте их интеграцию. Для Zigbee это отдельный этап, разобранный в <a href="/zha-ili-zigbee2mqtt-chto-vybrat-i-kak-pereyti-v-home-assistant">сравнении ZHA и Zigbee2MQTT</a>. Речевая модель не исправляет потерянную связь с координатором.</p> <p>Рекомендации по именам, комнатам и псевдонимам приведены в <a href="https://www.home-assistant.io/voice_control/best_practices/" rel="external noopener">Best practices with Assist</a>.</p> <h2>Шаг 2. Выберите модель для русского языка</h2> <p>У Whisper есть многоязычные модели и английские варианты с суффиксом .en. Для русского выбирайте многоязычную модель, а не .en. Начать можно с небольшой модели и затем сравнить точность на своих командах.</p> <p>Большая модель не всегда улучшает бытовой результат: задержка может оказаться важнее точности распознавания длинного текста. Запишите одинаковые десять коротких команд, прогоните их несколько раз и считайте именно успешные действия, а не впечатление от одного ответа.</p> <p>Speech-to-Phrase рассчитан на ограниченный набор команд и может быть быстрее, но доступность нужного языка и поддерживаемых фраз проверяйте для конкретной версии. Для этой инструкции базовый путь — Whisper. Список моделей и языков доступен в <a href="https://github.com/openai/whisper" rel="external noopener">репозитории Whisper</a>.</p> <p>В Piper выберите доступный голос ru_RU и прослушайте образец. Если нужного голоса нет в установленной версии, сначала проверьте пакет и список голосов; смена языка Assist сама по себе голос не скачивает.</p> <h2>Шаг 3. Соберите конвейер в HAOS</h2> <p>Установите и запустите приложения Whisper и Piper. Затем в Settings → Devices &amp; services добавьте обнаруженные службы Wyoming. Они связывают речевые компоненты с Home Assistant.</p> <p>В Settings → Voice assistants создайте помощника:</p> <ul> <li>язык: русский;</li> <li>Conversation agent: Home Assistant;</li> <li>Speech-to-text: Whisper, русский язык;</li> <li>Text-to-speech: Piper, русский голос.</li> </ul> <p>Запустите Assist из Companion app на телефоне и произнесите те же команды, которые уже сработали текстом. Проверяйте отдельно: что распознано, какое действие выполнено и услышали ли вы ответ.</p> <p>Home Assistant Container не имеет каталога приложений HAOS. В таком случае Whisper и Piper запускаются отдельными службами, а Wyoming подключается по сети. Не ищите отсутствующий пункт меню и не ставьте второй Home Assistant ради него.</p> <h2>Шаг 4. Добавляйте wake word после проверки речи</h2> <p>Голосовому спутнику нужны поддерживаемая прошивка, микрофон, динамик, питание и стабильная сеть. Возможность распознавать ключевую фразу локально на устройстве зависит от конкретного спутника; в других схемах её обрабатывает сервер, например openWakeWord.</p> <p>Выберите установленный русский конвейер для спутника. Не создавайте новый облачный pipeline по невнимательности в мастере устройства. Проверьте ручной запуск кнопкой, затем активацию wake word.</p> <p>Если кнопкой работает, а ключевой фразой нет, STT, обработка команды и TTS уже прошли проверку. Ищите проблему в активации: модель wake word, шум, дистанция или выбранный режим спутника.</p> <p>Разместите устройство в стороне от вентилятора и телевизора. Проверьте одинаковую фразу рядом, с обычного места в комнате и на фоне разговора. Усиление микрофона не является универсальным лечением: вместе с голосом оно усиливает шум.</p> <h2>Как понять, где теряются секунды</h2> <p>В настройках голосового помощника откройте отладку последнего запуска. Она помогает увидеть этапы pipeline; порядок описан в <a href="https://www.home-assistant.io/voice_control/troubleshooting/" rel="external noopener">диагностике Assist</a>.</p> <p><strong>Текст распознан неверно:</strong> сравните запись с телефона и со спутника, проверьте язык и модель. Не меняйте автоматизацию, если до неё дошла другая фраза.</p> <p><strong>Текст правильный, действие не найдено:</strong> проверьте exposed entities, имя, псевдоним и комнату. Убедитесь, что выбран встроенный агент Home Assistant, если рассчитываете на его стандартные команды.</p> <p><strong>Лампа включилась быстро, ответ пришёл поздно:</strong> отдельно проверьте TTS и воспроизведение. Увеличение мощности STT этот участок не ускорит.</p> <p><strong>Долгая пауза до появления текста:</strong> попробуйте меньшую многоязычную модель или перенесите STT на более производительный сервер. Не обещайте себе мгновенный ответ на любом одноплатнике — измерьте задержку своей установки.</p> <h2>Что реально стоит отдавать голосу</h2> <p>Хороший старт — свет, температура и несколько сцен с однозначными названиями. Для «ночного режима» сначала настройте и проверьте сам сценарий кнопкой; идеи действий можно взять из <a href="/20-poleznyh-avtomatizatsiy-home-assistant-dlya-vashego-umnogo-doma">подборки автоматизаций Home Assistant</a>, адаптируя сущности и условия под свой дом.</p> <p>Не разрешайте открытие замков и ворот в первом тестовом наборе. Wake word не удостоверяет личность: его может произнести гость или телевизор. Для действий с последствиями нужен отдельный продуманный контроль доступа.</p> <p>Перед окончательной настройкой выключите доступ в интернет на тестовом участке, сохранив LAN, и повторите простые локальные команды. Если они перестали работать, найдите облачный компонент цепочки. После этого верните обычную сеть.</p> <p>Результат первого вечера — не «замена всех голосовых помощников», а несколько русских команд, которые предсказуемо выполняются с выбранного устройства. Именно такую систему удобно расширять.</p>]]></content:encoded>
</item><item>
<title>Frigate и Home Assistant: первая камера и уведомление о человеке</title>
<link>https://v3trov.pro/frigate-i-home-assistant-kamery-mqtt-i-lokalnoe-raspoznavanie-obektov</link>
<pdalink>https://v3trov.pro/frigate-i-home-assistant-kamery-mqtt-i-lokalnoe-raspoznavanie-obektov</pdalink>
<guid>https://v3trov.pro/frigate-i-home-assistant-kamery-mqtt-i-lokalnoe-raspoznavanie-obektov</guid>
<pubDate>Sun, 13 Sep 2026 04:43:36 +0000</pubDate>
<category>index</category>

<enclosure url="/uploads/posts/v3trov/images/20260914_003031_321a5dca.webp" type="image/webp" />
<content:encoded><![CDATA[<p>Камера умеет присылать десятки уведомлений за ночь: дождь, фары, ветка, насекомое. Для полезного оповещения нужен более конкретный вопрос: <strong>появился ли человек там, где его стоит заметить?</strong></p> <p>Соберём первый сценарий Frigate + Home Assistant: одна RTSP-камера, распознавание person и проверочное уведомление внутри HA. Затем ограничим события нужной зоной. Конфигурация ниже — стартовый пример для своей камеры, а не готовый профиль под любую модель.</p> <figure class="article-media"><img src="/uploads/posts/v3trov/images/20260914_003031_321a5dca.webp" alt="201-scheme.png" loading="lazy" style="max-width:100%;height:auto;" width="1600" height="900"></figure> <h2>Что делает каждый компонент</h2> <p>Камера отдаёт видеопоток. Frigate получает кадры и распознаёт объекты. MQTT передаёт состояния и события. Интеграция Frigate добавляет их в Home Assistant, где работают автоматизации.</p> <p>Сам Frigate может работать без MQTT, но для связки с Home Assistant брокер нужен. Установленное приложение Frigate в HAOS и интеграция Frigate — <strong>разные компоненты</strong>: наличие пункта с видео в боковом меню не означает, что сущности уже созданы. Это разделение описано в <a href="https://docs.frigate.video/frigate/installation/" rel="external noopener">инструкции установки Frigate</a>.</p> <p>Для первой проверки выберите одну проводную камеру со стабильным RTSP. Закрепите её IP и создайте отдельную учётную запись просмотра, если камера это поддерживает. Проверьте поток в локальном проигрывателе до настройки NVR: неверный RTSP-путь не исправляется настройкой нейросети.</p> <h2>Основной поток и substream</h2> <p>Для записи полезен основной поток высокого качества. Для detect часто достаточно отдельного потока умеренного разрешения с 5 кадрами в секунду. Потоки и URL берите из документации вашей камеры: пути вроде /stream1 и /stream2 не универсальны.</p> <p>Декодирование видео и распознавание объектов — разные нагрузки. Видеодекодер GPU разгружает чтение кадров, а детектор обрабатывает изображения моделью. Покупка ускорителя детекции сама по себе не исправит перегрузку ffmpeg.</p> <p>Перед расширением до нескольких камер оцените запись. При постоянном битрейте <strong>4 Мбит/с одна камера создаёт около 43,2 ГБ за сутки</strong>: 4 × 86400 ÷ 8 ÷ 1000. Четыре камеры за неделю — примерно 1,21 ТБ без запаса и накладных расходов. Это расчёт, а не замер конкретной камеры.</p> <h2>Минимальный config.yml для проверки детекции</h2> <p>Установите Frigate способом, соответствующим своему хосту, по официальной инструкции. На HAOS это приложение; на отдельном Linux-сервере — Docker. Сначала добейтесь доступности интерфейса и редактора конфигурации.</p> <p>В примере MQTT находится на 192.168.1.10, камера — на 192.168.1.50. Измените адреса, пользователя и путь потока. Запись пока выключена, CPU-детектор используется только для краткого теста:</p> <pre><code class="language-yaml">mqtt: enabled: true host: 192.168.1.10 user: frigate password: "{FRIGATE_MQTT_PASSWORD}" detectors: test_cpu: type: cpu cameras: entrance: ffmpeg: inputs: - path: "rtsp://viewer:{FRIGATE_CAMERA_PASSWORD}@192.168.1.50:554/REPLACE_WITH_SUBSTREAM" roles: - detect detect: enabled: true fps: 5 objects: track: - person record: enabled: false </code></pre> <p>Переменные FRIGATE_MQTT_PASSWORD и FRIGATE_CAMERA_PASSWORD должны быть заданы <strong>в окружении процесса Frigate</strong> способом, предусмотренным вашей установкой. Это не автоматическая ссылка на secrets.yaml Home Assistant. Для RTSP-пароля со специальными символами учитывайте URL-кодирование. Подстановки и доступные поля проверяйте по <a href="https://docs.frigate.video/configuration/reference/" rel="external noopener">справочнику конфигурации Frigate</a>.</p> <p>Сохраните конфигурацию через встроенный редактор с валидацией. После запуска проверьте живое изображение и журнал ffmpeg. Пройдите перед камерой: Frigate должен показать объект person. Пока этого нет, не настраивайте уведомления — искать ошибку нужно до Home Assistant.</p> <h2>Подключение MQTT и интеграции Home Assistant</h2> <p>Обе системы должны использовать <strong>один брокер MQTT</strong>. Если он ещё не установлен, устройство брокера и проверка pub/sub разобраны в статье <a href="/mqtt-broker-mosquitto-osnova-umnogo-doma-svoimi-rukami">MQTT и Mosquitto</a>. Само подключение MQTT в актуальном Home Assistant выполняйте через Settings → Devices &amp; services, а не копированием старого блока broker в YAML.</p> <p>Интеграция Frigate распространяется через HACS. Если HACS ещё нет, начните с <a href="/hacs-ustanovka-nastroyka-i-bezopasnoe-obnovlenie-polzovatelskih-integratsiy-home-assistant">руководства по его установке</a>. Затем установите Frigate в HACS, перезапустите Home Assistant и добавьте Frigate в Devices &amp; services.</p> <p>Укажите адрес экземпляра Frigate, доступный именно серверу HA. Внутренний порт 5000 не имеет аутентификации: он допустим только в закрытом сетевом контуре. Порт 8971 обслуживает интерфейс с аутентификацией; схему подключения и параметры сверяйте с <a href="https://docs.frigate.video/integrations/home-assistant/" rel="external noopener">инструкцией интеграции</a>. Не открывайте эти порты на WAN ради соединения двух домашних сервисов.</p> <h2>Первое уведомление без телефона и внешних сервисов</h2> <p>Найдите сущность присутствия человека у камеры entrance. Фактический entity_id посмотрите в своей установке: он может отличаться от примера. Создайте новую автоматизацию в HA, откройте её YAML-редактор и замените содержимое следующим блоком:</p> <pre><code class="language-yaml">alias: "Frigate: человек у входа — проверка" triggers: - trigger: state entity_id: binary_sensor.entrance_person_occupancy from: "off" to: "on" conditions: [] actions: - action: persistent_notification.create dаta: title: "Камера у входа" message: "Frigate обнаружил человека. Проверьте событие в интерфейсе NVR." notification_id: frigate_entrance_person mode: single </code></pre> <p>Подставьте существующий entity_id. Пройдите перед камерой и проверьте встроенное уведомление HA. Один notification_id обновляет уведомление вместо создания длинной очереди. Это <strong>тест смены occupancy</strong>, а не отдельное уведомление на каждого человека: пока состояние остаётся on, новый переход не возникает.</p> <p>Когда тест проходит, можно заменить действие на уведомление Companion app и добавить снимок. Для более точной обработки используйте события Frigate с идентификатором объекта; форматы payload приведены в <a href="https://docs.frigate.video/integrations/mqtt/" rel="external noopener">документации MQTT</a>.</p> <h2>Зоны, маски и запись</h2> <p>Зона отвечает на вопрос «где находится объект». Нарисуйте область входа и проверьте, когда человек считается вошедшим в неё. Для дальнейшей автоматизации используйте подходящую сущность зоны или данные события.</p> <p>Motion mask исключает область из поиска движения, который помогает выбирать участки для анализа. <strong>Она не закрашивает видео и не гарантирует отсутствие детекции объекта внутри маски.</strong> Object filter mask решает другую задачу. Разницу показывает <a href="https://docs.frigate.video/configuration/masks/" rel="external noopener">документация масок Frigate</a>.</p> <p>Для исключения чужого окна из записи нужна privacy mask камеры либо другой механизм изменения самого изображения. Маской движения конфиденциальность не обеспечивается.</p> <p>Запись включайте после успешной детекции: добавьте основному потоку роль record и настройте сохранение под свою версию Frigate. Политики непрерывной записи и событий меняются между версиями, поэтому используйте встроенную валидацию и <a href="https://docs.frigate.video/guides/getting_started/" rel="external noopener">официальный Getting Started</a>.</p> <p>Для просмотра событий вне дома настройте <a href="/tailscale-na-openwrt-mesh-set-subnet-router-i-bezopasnoe-administrirovanie">удалённый доступ к нужным сервисам через Tailscale</a>. Начните с доступа к Home Assistant; если нужен отдельный интерфейс Frigate, разрешите его адрес и порт отдельным правилом.</p> <h2>Если результат не совпал с ожиданием</h2> <p><strong>Нет видео:</strong> RTSP-путь, пароль, доступ к камере, число разрешённых подключений.</p> <p><strong>Видео есть, CPU загружен:</strong> проверьте разрешение detect-потока, FPS и доступность аппаратного декодирования. CPU-детектор из примера не рассчитан на постоянную многокамерную систему.</p> <p><strong>Frigate видит person, HA нет:</strong> проверьте MQTT с обеих сторон, учётные данные и состояние интеграции.</p> <p><strong>HA видит человека, уведомления нет:</strong> откройте trace автоматизации и проверьте entity_id, переход off → on и выполненное действие.</p> <p><strong>Слишком много тревог:</strong> сначала уточните зону и положение камеры, затем параметры фильтрации. Одна хорошо ограниченная зона у двери часто полезнее десятка широких правил на весь двор.</p>]]></content:encoded>
</item><item>
<title>Matter не подключается к Home Assistant: проверяем Thread, IPv6 и код</title>
<link>https://v3trov.pro/matter-v-home-assistant-matter-server-thread-i-podklyuchenie-ustroystv</link>
<pdalink>https://v3trov.pro/matter-v-home-assistant-matter-server-thread-i-podklyuchenie-ustroystv</pdalink>
<guid>https://v3trov.pro/matter-v-home-assistant-matter-server-thread-i-podklyuchenie-ustroystv</guid>
<pubDate>Sun, 13 Sep 2026 04:43:06 +0000</pubDate>
<category>index</category>

<enclosure url="/uploads/posts/v3trov/images/20260914_003252_ed6940bd.webp" type="image/webp" />
<content:encoded><![CDATA[<p>Телефон прочитал QR-код, устройство помигало — и Home Assistant снова написал, что подключение не удалось. Очередной заводской сброс редко объясняет причину. Гораздо полезнее выяснить, <strong>на каком участке остановилось добавление</strong>.</p> <p>Эта инструкция посвящена диагностике Matter в Home Assistant. Будем идти от простого к сложному: проверим тип устройства, сервер, телефон, локальную сеть и только затем настройки Thread. Рабочие устройства заранее удалять не нужно.</p> <figure class="article-media"><img src="/uploads/posts/v3trov/images/20260914_003252_ed6940bd.webp" alt="200-scheme.png" loading="lazy" style="max-width:100%;height:auto;" width="1600" height="900"></figure> <p>Для знакомства с назначением протоколов есть <a href="/matter-i-thread-v-home-assistant-novyy-standart-umnogo-doma-2024">базовый разбор Matter и Thread</a>. Здесь сосредоточимся на поиске сбоя при подключении; названия меню и порядок действий сверяем с актуальной документацией ниже.</p> <h2>Быстрая развилка: Wi-Fi или Thread</h2> <p>Посмотрите маркировку и инструкцию <strong>конкретной модели</strong>. Надпись Matter не означает, что внутри обязательно есть Thread.</p> <ul> <li><strong>Matter over Wi-Fi:</strong> устройство подключается к Wi-Fi; отдельный Thread Border Router ему не нужен.</li> <li><strong>Matter over Thread:</strong> нужен пограничный маршрутизатор Thread, соединённый с вашей LAN, и доступные телефону данные этой Thread-сети.</li> <li><strong>Только Thread без Matter:</strong> проверьте прикладной протокол. Например, Thread-устройство HomeKit добавляется другим способом.</li> <li><strong>Обычное Wi-Fi-устройство без Matter:</strong> QR-код приложения производителя не превращает его в Matter-устройство.</li> </ul> <p>Если устройство относится к последнему случаю, ищите его интеграцию: на сайте есть <a href="/wi-fi-integratsii-home-assistant-podklyuchenie-lokalnyh-ustroystv-bez-oblaka">разбор локальных Wi-Fi-интеграций Home Assistant</a>. Повторять мастер Matter в таком случае бессмысленно.</p> <h2>Не путайте три компонента</h2> <p><strong>Matter Server</strong> хранит данные контроллера и обменивается командами с устройствами. Интеграция Matter соединяет Home Assistant с этим сервером.</p> <p><strong>Thread Border Router</strong> передаёт IP-пакеты между Thread и домашней сетью. Он может быть отдельным устройством и не обязан находиться в том же корпусе, что Home Assistant.</p> <p><strong>Телефон</strong> участвует в первичном добавлении и передаче сетевых данных. Bluetooth часто нужен именно на этом этапе; постоянное управление не обязано идти через Bluetooth телефона.</p> <p>Настройка Matter не прошивает произвольный Zigbee-адаптер в Thread автоматически. Разделение ролей и процедура подключения описаны в <a href="https://www.home-assistant.io/integrations/matter" rel="external noopener">документации Matter Home Assistant</a>.</p> <h2>Шаг 1. Убедитесь, что Home Assistant видит Matter Server</h2> <p>В HAOS откройте Settings → Devices &amp; services → Matter. Проверьте, что интеграция загружена и соединение с сервером установлено. Если мастер предлагает установить официальный Matter Server, завершите этот шаг и дождитесь его запуска.</p> <p>При ошибке соединения откройте журнал самого Matter Server. Пока интеграция не может подключиться к серверу, QR-код розетки диагностировать рано.</p> <p>Home Assistant Container требует отдельного Matter Server и корректной сетевой конфигурации. Старый python-matter-server уже архивирован: разработчики перенесли работу в matterjs-server. При ручной установке проверяйте <a href="https://github.com/matter-js/python-matter-server" rel="external noopener">актуальный проект и указания по переходу</a>, а не закрепляйте образ из старой инструкции. Обращайте внимание на постоянный каталог данных: удаление контейнера вместе с данными контроллера — совсем не то же самое, что обычный перезапуск.</p> <p>Не переустанавливайте сервер с очисткой хранилища ради одной неподключившейся лампы. Сначала сохраните резервную копию и разберите конкретную ошибку. Порядок подготовки и проверки копии разобран в <a href="/home-assistant-nadyozhnyy-bekap-i-vosstanovlenie-zaschischaem-nastroyki-umnogo-doma">руководстве по резервному копированию Home Assistant</a>.</p> <h2>Шаг 2. Проверьте телефон и режим добавления</h2> <p>Используйте актуальное приложение Home Assistant Companion. Включите Bluetooth и необходимые разрешения для поиска устройств и локальной сети. Проверьте, что приложение подключено к правильному серверу Home Assistant.</p> <p>Для нового устройства включите режим сопряжения по инструкции производителя. Долгое нажатие может означать и вход в pairing, и полный сброс — это зависит от модели. Сканируйте Matter QR или вводите соответствующий цифровой setup-код. Не вводите содержимое произвольной QR-ссылки как цифровой код.</p> <p>Если мастер не видит устройство даже рядом с телефоном, проверьте режим сопряжения и разрешения Bluetooth. Если видит, но останавливается позже, переходите к сети. Этапы обнаружения и установления соединения описаны в <a href="https://developers.home.google.com/matter/primer/commissioning" rel="external noopener">разборе commissioning от Google</a>. Зафиксируйте текст ошибки и этап: «не найдено устройство» и «таймаут после передачи сети» требуют разных проверок.</p> <h2>Шаг 3. IPv6 нужен внутри дома, даже без IPv6 у провайдера</h2> <p>Работа сайтов по IPv4 ещё не доказывает, что Matter может связаться с устройством. Ему нужны локальная IPv6-связность и обнаружение через mDNS. Глобальный IPv6-адрес от провайдера для этого не обязателен.</p> <p>Для первого теста разместите Home Assistant, телефон, Wi-Fi-устройство и Border Router в простой доверенной LAN. Гостевой SSID с изоляцией клиентов — плохой стенд для диагностики. Проверьте, что IPv6 включён в сетевых настройках HA.</p> <p>Не начинайте с отключения всего firewall. Сначала сравните поведение в обычной LAN и в проблемном сегменте. Если в LAN устройство добавляется, круг поиска сужается до маршрутизации, multicast и правил между сегментами.</p> <p>Отражатель mDNS решает обнаружение сервисов, но <strong>не создаёт IPv6-маршруты</strong>. Поэтому «поставил mDNS repeater, всё равно не работает» — вполне ожидаемая ситуация. Для сложных VLAN используйте требования к сети из официальной документации, а не случайный список открытых портов.</p> <h2>Шаг 4. Для Thread проверьте сеть и credentials</h2> <p>Откройте интеграцию Thread и посмотрите, какая сеть выбрана предпочтительной. Наличие найденного Border Router ещё не означает, что телефон получил ключи именно его сети.</p> <p>Если Home Assistant создал вашу первую Thread-сеть, передайте её данные телефону. В Android Companion для этого есть Sync Thread credentials в разделе Troubleshooting. В iOS передача доступна через настройки Thread и Send credentials to phone. Названия пунктов могут отличаться по языку интерфейса.</p> <p>Если дома уже есть Thread от Apple или Google, сначала импортируйте данные нужной сети в Home Assistant и выберите её согласно соответствующему сценарию. Не создавайте новую сеть только потому, что старый Border Router обнаружился автоматически. Разные сети не объединяются от одинакового имени.</p> <p>Порядок импорта и передачи ключей для разных платформ приведён в <a href="https://www.home-assistant.io/integrations/thread/" rel="external noopener">инструкции по Thread</a>. Не публикуйте credentials и setup-коды в скриншотах диагностики.</p> <h2>Устройство уже работает в Apple Home или Google Home</h2> <p>Начинайте с функции совместного доступа Matter в той экосистеме, где устройство уже добавлено. Откройте новое окно сопряжения, получите свежий код и в Home Assistant выберите добавление уже настроенного устройства.</p> <p>Заводской код на корпусе и временный код совместного доступа выполняют разные роли. Для multi-admin используйте код из текущего окна сопряжения; если время истекло, создайте новый. Заводской код не «сгорает навсегда» — он нужен, в частности, после заводского сброса.</p> <p>Полный сброс оставьте на случай, когда вы действительно хотите начать настройку заново и готовы восстановить привязки. Иначе можно исправить одну проблему ценой потери рабочего подключения в другой системе.</p> <h2>Подключилось, но пропадает или не показывает нужную функцию</h2> <p><strong>Работает рядом с Border Router, пропадает на месте установки:</strong> проверьте питание, радиопокрытие и доступность соседних Thread-узлов. Батарейный датчик не следует считать ретранслятором только из-за логотипа Thread.</p> <p><strong>Пропадает после перезапуска роутера:</strong> сравните доступность Border Router, IPv6 и сервера до и после перезагрузки. Не меняйте одновременно радио, Wi-Fi и версии приложений — потеряете связь между действием и результатом.</p> <p><strong>Переключатель появился, энергопотребление нет:</strong> поддержка Matter не гарантирует экспорт всех функций фирменного приложения. Проверьте конкретную модель, прошивку и поддерживаемые сущности.</p> <p><strong>У вас уже работает Zigbee:</strong> менять весь комплект ради устранения ошибки одной Matter-розетки не требуется. Для сравнения возможностей есть <a href="/zha-ili-zigbee2mqtt-chto-vybrat-i-kak-pereyti-v-home-assistant">ZHA или Zigbee2MQTT</a>.</p> <p>Перед повторной попыткой запишите четыре вещи: модель и прошивку устройства, Wi-Fi или Thread, этап сбоя и версии HA/Matter Server/Companion. С такими данными журнал превращается в инструмент диагностики, а очередной сброс перестаёт быть единственным планом.</p>]]></content:encoded>
</item><item>
<title>AdGuard Home на OpenWrt: настройка DNS без конфликта с dnsmasq</title>
<link>https://v3trov.pro/adguard-home-na-openwrt-ustanovka-dns-filtratsiya-i-ustranenie-konfliktov</link>
<pdalink>https://v3trov.pro/adguard-home-na-openwrt-ustanovka-dns-filtratsiya-i-ustranenie-konfliktov</pdalink>
<guid>https://v3trov.pro/adguard-home-na-openwrt-ustanovka-dns-filtratsiya-i-ustranenie-konfliktov</guid>
<pubDate>Sun, 13 Sep 2026 04:42:19 +0000</pubDate>
<category>index</category>

<enclosure url="/uploads/posts/v3trov/images/20260914_003234_aee36762.webp" type="image/webp" />
<content:encoded><![CDATA[<p>После установки AdGuard Home сайты перестали открываться, хотя Wi-Fi подключён и роутер отвечает. Переустанавливать прошивку обычно рано: сначала нужно понять, кто слушает DNS-порт 53 и куда пересылает запросы.</p> <p>Покажем <strong>постепенное подключение фильтрации на OpenWrt</strong>. Сначала AdGuard работает на отдельном порту, затем dnsmasq направляет ему внешние запросы. Такой вариант удобно проверить и отменить. Его ограничение — AdGuard обычно видит роутер вместо отдельных клиентов. Для индивидуальных правил ниже разобрана другая схема.</p> <figure class="article-media"><img src="/uploads/posts/v3trov/images/20260914_003234_aee36762.webp" alt="199-scheme.png" loading="lazy" style="max-width:100%;height:auto;" width="1600" height="900"></figure> <h2>Сначала проверьте ресурсы и сохраните настройки</h2> <p>На роутере выполните:</p> <pre><code class="language-bash">ubus call system board df -h free </code></pre> <p>Нужны версия OpenWrt, архитектура и запас места в overlay. Не ориентируйтесь на объём /tmp: он не равен свободной flash. Большие списки фильтров и журналы могут оказаться тяжёлыми для маломощного роутера. В таком случае разумнее отдельный DNS-сервер в LAN.</p> <p>Скачайте backup OpenWrt через System → Backup / Flash Firmware. Для точечного отката дополнительно сохраните конфигурацию DHCP/DNS, выбрав новое имя файла:</p> <pre><code class="language-bash">cp -p /etc/config/dhcp /root/dhcp.before-adguard-20260913 </code></pre> <p>Все дальнейшие команды предполагают обычную конфигурацию с одним dnsmasq. Если экземпляров несколько, сначала разберите их назначения. Во время изменений держите открытым доступ к LuCI или SSH <strong>по IP</strong>, чтобы он не зависел от DNS.</p> <p>Если роутеру не хватает памяти и flash, альтернативный вариант вынесен в <a href="/pi-hole-unbound-vash-privatnyy-dns-server-s-blokirovkoy-reklamy">разбор отдельного DNS-сервера Pi-hole + Unbound</a>. Это другая связка программ: команды из неё не нужно смешивать с настройками AdGuard.</p> <h2>Установка пакета: opkg или apk</h2> <p>В OpenWrt 25.12 и новее используется apk; в 24.10 — opkg. В нестандартной сборке проверьте фактически установленный менеджер. Не выполняйте оба варианта подряд. Переход описан в <a href="https://openwrt.org/docs/guide-user/additional-software/apk" rel="external noopener">документации OpenWrt по apk</a>.</p> <p>Для сборки с apk:</p> <pre><code class="language-bash">apk update apk add adguardhome </code></pre> <p>Для сборки с opkg:</p> <pre><code class="language-bash">opkg update opkg install adguardhome </code></pre> <p>Если пакет не найден, проверьте репозитории своей версии и архитектуры. Не подмешивайте feeds от другой ветки ради одного пакета.</p> <p>Запустите службу:</p> <pre><code class="language-bash">service adguardhome enable service adguardhome start </code></pre> <p>Первичная настройка обычно доступна на порту 3000. В мастере выберите адрес LAN для веб-интерфейса, свободный веб-порт и отдельный пароль. Не назначайте веб-интерфейсу порт LuCI. Порядок установки на роутере приведён в <a href="https://openwrt.org/docs/guide-user/services/dns/adguard-home" rel="external noopener">OpenWrt Wiki: AdGuard Home</a>.</p> <h2>Тест до переключения всей сети</h2> <p>Оставьте dnsmasq на 53. Для DNS AdGuard задайте <strong>порт 5454</strong> и адреса, на которых он должен принимать тестовые запросы: LAN и loopback либо доступные локальные интерфейсы с ограничением firewall. WAN не открывайте. Порт 5454 здесь произвольный тестовый порт: предварительно убедитесь, что он свободен. Порт 5353 лучше не занимать — он используется mDNS.</p> <p>В AdGuard выберите внешние upstream DNS, которым доверяете, и нажмите проверку upstream. Не указывайте адрес этого же роутера на порту 53: после включения пересылки получится петля.</p> <p>С компьютера, где установлен dig, проверьте оба пути. Здесь 192.168.1.1 — пример LAN-адреса роутера:</p> <pre><code class="language-bash">dig @192.168.1.1 -p 5454 example.org A dig @192.168.1.1 -p 53 example.org A </code></pre> <p>Первый запрос должен появиться в Query Log AdGuard. Второй пока обслуживает прежняя схема. Если на 5454 ответа нет, не переключайте dnsmasq: проверьте службу, адрес прослушивания, TCP/UDP и firewall.</p> <h2>Передайте внешние запросы dnsmasq в AdGuard</h2> <p>В LuCI откройте Network → DHCP and DNS. Запишите старые значения, затем:</p> <ol> <li>Укажите DNS forwardings: 127.0.0.1#5454.</li> <li>Включите Ignore resolve file, чтобы внешние запросы не уходили параллельно DNS провайдера.</li> <li>Проверьте прежние DNS forwardings: не должно остаться общего обходного upstream. Специальные правила для отдельных доменов разбирайте отдельно.</li> <li>Сохраните изменения и примените их.</li> </ol> <p>DHCP и обслуживание локальных имён остаются у dnsmasq. Проверьте с клиента обычный запрос на 53 и известное локальное имя. Например, nas.lan нужно заменить именем реально существующего устройства.</p> <pre><code class="language-bash">nslookup example.org 192.168.1.1 nslookup nas.lan 192.168.1.1 </code></pre> <p>Кэш dnsmasq может не отправить повторный запрос в AdGuard. Проверяйте свежий домен или очистите кэш перезапуском службы. Синтаксис upstream и условных пересылок объясняется в <a href="https://adguard-dns.io/kb/adguard-home/configuration/" rel="external noopener">справке AdGuard Home</a>.</p> <p>Если используете policy routing, сохраните специальные доменные правила для него: DNS участвует в наполнении наборов адресов. Перед заменой схемы посмотрите <a href="/vpn-tolko-dlya-vybrannyh-saytov-i-ustroystv-v-openwrt-razdelnaya-marshrutizatsiya-trafika">разбор раздельной маршрутизации в OpenWrt</a>.</p> <h2>Почему в журнале все запросы от роутера</h2> <p>В цепочке «клиент → dnsmasq → AdGuard» отправителем для AdGuard становится dnsmasq. Это ожидаемо. Для правил по отдельным устройствам клиентам нужно обращаться непосредственно к AdGuard на 53.</p> <p>Тогда схема меняется: AdGuard занимает 53, dnsmasq переносится, например, на 54 и сохраняет DHCP с локальными именами. В DHCP явно выдаётся адрес AdGuard, а локальная зона и обратные DNS-запросы направляются к dnsmasq. Это отдельное переключение: нельзя просто занять 53, пока его слушает старая служба.</p> <p>Не объединяйте обе схемы вслепую и не направляйте общие upstream друг в друга. Сначала закончите проверку выбранного варианта, затем переходите к следующему.</p> <h2>Проверяйте блокировку по журналу, а не по баннеру</h2> <p>Для контролируемого теста добавьте временное пользовательское правило:</p> <pre><code class="language-text">||example.org^ </code></pre> <p>Повторите запрос через AdGuard и убедитесь, что Query Log показывает блокировку именно вашим правилом. Конкретный DNS-ответ зависит от режима блокировки. После теста удалите правило и очистите кэш, затем проверьте разрешение домена снова.</p> <p>Один рекламный баннер ничего не доказывает: реклама может приходить с того же домена, что и полезное содержимое. DNS-фильтр не умеет выбирать отдельные элементы страницы.</p> <p><strong>Нет запросов от телефона:</strong> проверьте Private DNS, защищённый DNS браузера и серверы, полученные по IPv6. DHCP option 6 управляет IPv4, но не всей IPv6-настройкой.</p> <p><strong>Не работает приложение:</strong> найдите заблокированный домен в момент ошибки и добавьте точечное исключение. Не отключайте все фильтры навсегда из-за одного ложного срабатывания.</p> <p><strong>После reboot пропала история:</strong> проверьте рабочий каталог AdGuard. Хранение в /tmp не переживает перезагрузку; постоянные журналы на маленькой flash требуют ограничения объёма и срока хранения.</p> <p>Если фильтрация работает дома, но не при удалённом подключении, проверьте <a href="/tailscale-na-openwrt-mesh-set-subnet-router-i-bezopasnoe-administrirovanie">маршруты и доступ к LAN через Tailscale на OpenWrt</a>. Наличие туннеля ещё не означает, что телефон использует домашний DNS.</p> <h2>Как вернуть DNS при неудаче</h2> <p>Для описанной схемы, где AdGuard остаётся на 5454, восстановите сохранённый файл DHCP/DNS:</p> <pre><code class="language-bash">cp -p /root/dhcp.before-adguard-20260913 /etc/config/dhcp service dnsmasq restart </code></pre> <p>Это откат к состоянию файла в момент копирования: более поздние изменения DHCP тоже будут отменены. Если успели перенести AdGuard на 53, сначала освободите этот порт остановкой AdGuard, иначе dnsmasq не запустится.</p> <p>После восстановления проверьте DNS с клиента. Финальная проверка рабочей фильтрации — перезагрузка роутера, выдача адресов по DHCP, внешние и локальные имена, IPv6 и доступ к обычным домашним сервисам.</p>]]></content:encoded>
</item><item>
<title>Home Assistant в Proxmox: установка HAOS без скриптов и проброс Zigbee</title>
<link>https://v3trov.pro/home-assistant-v-proxmox-ustanovka-haos-usb-probros-i-rezervnoe-kopirovanie</link>
<pdalink>https://v3trov.pro/home-assistant-v-proxmox-ustanovka-haos-usb-probros-i-rezervnoe-kopirovanie</pdalink>
<guid>https://v3trov.pro/home-assistant-v-proxmox-ustanovka-haos-usb-probros-i-rezervnoe-kopirovanie</guid>
<pubDate>Sun, 13 Sep 2026 04:41:45 +0000</pubDate>
<category>index</category>

<enclosure url="/uploads/posts/v3trov/images/20260914_003214_4c094ee8.webp" type="image/webp" />
<content:encoded><![CDATA[<p>Вы импортировали образ Home Assistant, нажали Start — и получили UEFI Shell вместо умного дома. Или всё заработало, но после перезагрузки исчез Zigbee-адаптер. Обе проблемы часто связаны с настройками VM, а не с Home Assistant.</p> <p>Ниже — ручная установка <strong>Home Assistant OS в виртуальную машину Proxmox VE на x86-64</strong>. Она подходит, если Proxmox уже установлен и вы можете открыть консоль хоста. Мы не будем запускать сторонний скрипт с правами root: параметры останутся видны в интерфейсе.</p> <figure class="article-media"><img src="/uploads/posts/v3trov/images/20260914_003214_4c094ee8.webp" alt="198-scheme.png" loading="lazy" style="max-width:100%;height:auto;" width="1600" height="900"></figure> <h2>Что выбрать: HAOS или Home Assistant Container</h2> <p>HAOS включает управляемую ОС, Supervisor и установку приложений через интерфейс Home Assistant. Home Assistant Container предполагает, что Docker, соседние службы и обновления ОС вы обслуживаете самостоятельно. Контейнер внутри LXC добавляет ещё один слой настройки устройств и прав.</p> <p>Для VM с обычным домашним набором интеграций начните с 2 vCPU, 4 ГБ RAM и диска 32–64 ГБ на SSD. Это пример, а не обещание вместить сюда видеоархив и распознавание речи. Официальный минимум для виртуальной установки — 2 vCPU и 2 ГБ RAM; образ берите в разделе <a href="https://www.home-assistant.io/installation/alternative" rel="external noopener">KVM/Proxmox на сайте Home Assistant</a>.</p> <p>Если у вас ARM-плата, этот x86-образ не подойдёт. Для другого сценария есть отдельный материал <a href="/ustanovka-home-assistant-na-orange-pi-zero-3-rabochiy-sposob-docker-i-rezervnoe-kopirovanie">о Home Assistant Container на Orange Pi Zero 3</a>; команды создания VM из этой статьи к нему не относятся.</p> <h2>1. Подготовьте образ и свободный VMID</h2> <p>Скачайте QCOW2-образ по официальной ссылке и распакуйте архив. На вход импорту нужен файл .qcow2, а не .xz. Передайте его на Proxmox по SFTP/SCP в каталог с достаточным свободным местом.</p> <p>В примере используем VMID 120 и хранилище local-lvm. <strong>Проверьте, что номер свободен, а хранилище существует и поддерживает диски VM.</strong> Если у вас ZFS или Directory storage, его имя будет другим.</p> <p>Сначала полезно посмотреть состояние хоста:</p> <pre><code class="language-bash">qm list pvesm status </code></pre> <p>Не удаляйте существующую VM ради совпадения с номером из инструкции.</p> <h2>2. Создайте пустую виртуальную машину</h2> <p>В мастере Create VM задайте имя homeassistant и свободный номер. Выберите установку без ISO. Для этой схемы используем:</p> <ul> <li>Machine: q35;</li> <li>BIOS: OVMF (UEFI);</li> <li>EFI Disk: на выбранном хранилище;</li> <li>Pre-Enroll keys: выключено для этой HAOS VM;</li> <li>SCSI Controller: VirtIO SCSI single;</li> <li>Network: VirtIO на bridge, подключённом к домашней LAN, часто vmbr0.</li> </ul> <p>Home Assistant OS требует UEFI. Настройка EFI относится к гостевой VM: менять Secure Boot физического сервера ради неё не нужно. Устройство виртуальных дисков, OVMF и USB-проброс описаны в <a href="https://pve.proxmox.com/pve-docs/pve-admin-guide.pdf" rel="external noopener">руководстве Proxmox VE</a>.</p> <p>На шаге диска не создавайте новый диск, если мастер позволяет. Если он уже создан, удалять его можно только после проверки, что это пустой диск <strong>новой</strong> VM. EFI Disk оставьте: он хранит параметры прошивки и не заменяет системный диск HAOS.</p> <h2>3. Импортируйте QCOW2 и подключите его</h2> <p>Откройте Shell самого узла Proxmox. Подставьте полный путь к распакованному файлу:</p> <pre><code class="language-bash">qm disk import 120 /root/haos_ova.qcow2 local-lvm </code></pre> <p>Название haos_ova.qcow2 здесь условное: у скачанного образа обычно есть номер версии. Используйте фактическое имя файла. В старых инструкциях встречается команда qm importdisk — проверьте доступный синтаксис вашей версии через справку qm.</p> <p>После окончания импорта откройте Hardware у VM. Там должен появиться <strong>Unused Disk</strong>. Выберите его, нажмите Edit и подключите как SCSI0. Не запускайте повторный импорт только потому, что диск ещё не появился в Boot Order: импорт и подключение — два разных действия.</p> <p>В Options → Boot Order включите и поставьте первым <strong>SCSI0 с образом HAOS</strong>. EFI Disk первым загрузочным диском ставить не надо. Затем запустите VM и откройте Console.</p> <h2>4. Найдите адрес и завершите первый запуск</h2> <p>Посмотрите IP в консоли HAOS или списке DHCP-клиентов роутера. Откройте http://IP-АДРЕС:8123. Имя homeassistant.local удобно, но зависит от mDNS и не обязано работать через VLAN или удалённое подключение.</p> <p>Первый запуск может потребовать загрузки компонентов. Пока консоль показывает подготовку, смотрите её сообщения, а не перезапускайте VM каждые полминуты. Проверьте доступ к DNS и интернету, если загрузка явно остановилась.</p> <p>Закрепите DHCP-адрес за MAC виртуального сетевого адаптера. Затем включите Start at boot в Proxmox. Если MQTT и другие зависимости находятся в соседних VM, предусмотрите их порядок запуска.</p> <h2>5. Пробросьте Zigbee-координатор</h2> <p>Остановите новую VM, откройте Hardware → Add → USB Device и выберите физический адаптер. При одном экземпляре удобно сопоставление по Vendor/Device ID. Если подключены два одинаковых устройства, эти идентификаторы совпадут: используйте привязку к физическому порту и подпишите разъёмы.</p> <p>После старта убедитесь, что адаптер виден в Home Assistant. Для интеграции используйте стабильный путь /dev/serial/by-id/…, когда он доступен, вместо случайного /dev/ttyUSB0. Один координатор должен обслуживаться одним процессом: не отдавайте его одновременно ZHA и Zigbee2MQTT.</p> <p>Выбор стека вынесен в <a href="/zha-ili-zigbee2mqtt-chto-vybrat-i-kak-pereyti-v-home-assistant">сравнение ZHA и Zigbee2MQTT</a>. Если у вас Sonoff, отдельно проверьте модель и тип радиочипа по <a href="/sonoff-zigbee-3-0-usb-dongle-plus-v-home-assistant-nastroyka-zha-i-zigbee2mqtt">руководству для Sonoff USB Dongle Plus</a>.</p> <p>USB-удлинитель позволяет отнести радио от корпуса сервера и источников помех. После настройки проверьте отдельно перезапуск HAOS и полную перезагрузку Proxmox. Миграция VM на другой узел не переносит подключённый USB-адаптер физически.</p> <h2>Что проверять при ошибках</h2> <p><strong>UEFI Shell:</strong> импортированный диск подключён? SCSI0 включён в Boot Order? Выбрана OVMF? Образ распакован и предназначен для x86-64 KVM? EFI Disk и системный диск не перепутаны?</p> <p><strong>Нет IP:</strong> сетевой адаптер подключён к правильному bridge? На нём есть физический интерфейс LAN? Работает DHCP? Для начала используйте простую LAN без дополнительного VLAN-тега.</p> <p><strong>Адрес есть, интерфейс не открывается:</strong> посмотрите состояние HAOS в консоли, попробуйте прямой IP и проверьте правила между клиентом и VM.</p> <p><strong>Zigbee исчез после reboot:</strong> проверьте наличие устройства на хосте, правило USB-проброса и путь внутри гостя. Если устройство есть, но порт занят, ищите второй процесс, который пытается открыть координатор.</p> <p>Если после установки вы подключаете устройства нового стандарта, используйте <a href="/matter-v-home-assistant-matter-server-thread-i-podklyuchenie-ustroystv">диагностику Matter и Thread в Home Assistant</a>: USB-проброс Zigbee и доступность Matter по IPv6 проверяются отдельно.</p> <h2>Перед переносом рабочего дома</h2> <p>Сделайте <a href="/home-assistant-nadyozhnyy-bekap-i-vosstanovlenie-zaschischaem-nastroyki-umnogo-doma">встроенную резервную копию Home Assistant</a> и скачайте её на другой компьютер. Отдельно сохраните ключ шифрования, если он используется. Затем создайте backup всей VM на хранилище вне её системного диска. Пошаговый следующий этап — <a href="/proxmox-backup-server-ustanovka-hranilishche-i-pervaya-rezervnaya-kopiya">подключение Proxmox Backup Server и пробное восстановление VM</a>.</p> <p>При восстановлении старой конфигурации не запускайте две одинаковые системы в рабочей сети одновременно: автоматизации могут отработать дважды. Тестовую копию сначала загружайте с отключённой сетью и без радиокоординатора.</p> <p>Установка завершена, когда HAOS загружается после перезапуска хоста, сохраняет адрес, видит координатор и у вас есть копия, которую можно восстановить. Только после этого переносите повседневные автоматизации.</p>]]></content:encoded>
</item><item>
<title>Proxmox Backup Server: настройка бэкапа и восстановление VM</title>
<link>https://v3trov.pro/proxmox-backup-server-ustanovka-hranilishche-i-pervaya-rezervnaya-kopiya</link>
<pdalink>https://v3trov.pro/proxmox-backup-server-ustanovka-hranilishche-i-pervaya-rezervnaya-kopiya</pdalink>
<guid>https://v3trov.pro/proxmox-backup-server-ustanovka-hranilishche-i-pervaya-rezervnaya-kopiya</guid>
<pubDate>Sun, 13 Sep 2026 04:38:10 +0000</pubDate>
<category>index</category>

<enclosure url="/uploads/posts/v3trov/images/20260914_003154_bc1c7ef0.webp" type="image/webp" />
<content:encoded><![CDATA[<p>Утром Proxmox перестал загружаться. На диске остались виртуальные машины, а где-то рядом — вчерашний snapshot. Поможет ли он, если отказал сам накопитель? Именно с этого вопроса стоит начинать настройку резервного копирования.</p> <p>В этой инструкции построим понятную схему: <strong>Proxmox VE отправляет копии на отдельный Proxmox Backup Server, а одну VM мы восстанавливаем под новым номером</strong>. Адреса и имена ниже — пример: PBS 192.168.10.30, datastore home-backup, тестовая VM 120. Подставьте свои значения.</p> <figure class="article-media"><img src="/uploads/posts/v3trov/images/20260914_003154_bc1c7ef0.webp" alt="197-scheme.png" loading="lazy" style="max-width:100%;height:auto;" width="1600" height="900"></figure> <h2>Нужен ли дома отдельный PBS</h2> <p>Если у вас одна небольшая VM и копия раз в неделю, обычного задания Proxmox VE на отдельный накопитель может хватить. PBS полезен, когда нужны история копий нескольких машин, дедупликация и регулярная проверка данных.</p> <p>Дедупликация позволяет хранить повторяющиеся блоки один раз. Однако она не превращает произвольный терабайт данных в сто гигабайт: результат зависит от того, сколько данных меняется. Видеоархив и уже сжатые файлы ведут себя иначе, чем несколько похожих Linux-систем.</p> <p>Для основной копии выберите отдельный x86-64 компьютер и отдельный диск. PBS внутри того же Proxmox пригоден для знакомства, но после отказа хоста потребуется сначала вернуть сам PBS. Продумайте, с какого устройства вы будете читать копии в такой ситуации.</p> <h2>Установка: не перепутайте системный диск и диск копий</h2> <p>Скачайте ISO из <a href="https://pbs.proxmox.com/docs/installation.html" rel="external noopener">официального раздела установки PBS</a>. Для домашней системы разумно начать с 4 ГБ RAM и SSD под ОС; ёмкость datastore рассчитывайте по реальным данным и сроку хранения. Это отправная точка, а не универсальные требования для любого объёма.</p> <p>Перед установкой подпишите диски по модели, объёму и серийному номеру. Мастер установки переразмечает выбранный накопитель. Особенно легко ошибиться, если подключены два одинаковых SSD.</p> <p>После установки:</p> <ol> <li>Закрепите адрес PBS в своей сети.</li> <li>Откройте https://192.168.10.30:8007 из LAN.</li> <li>Войдите как root в realm Linux PAM.</li> <li>Проверьте время, DNS и доступность обновлений.</li> <li>Сохраните данные для аварийного входа отдельно от Proxmox VE.</li> </ol> <p>Доступ к веб-интерфейсу подтверждает только работу сервера. Хранилища для копий пока ещё может не быть.</p> <h2>Datastore: где будут лежать данные</h2> <p>В разделе дисков PBS найдите накопитель для копий. Для нового пустого диска можно создать файловую систему через интерфейс и включить создание datastore. Назовите его home-backup. При добавлении существующего каталога убедитесь, что он расположен на нужном смонтированном диске.</p> <p>Принципиальная проверка: после перезагрузки путь datastore должен по-прежнему указывать на накопитель копий. Иначе запись может пойти в каталог на системном разделе и заполнить его. Как работают UUID и точки монтирования, разобрано в статье <a href="/kak-podklyuchit-hdd-ili-ssd-k-odnoplatniku-na-armbian-ili-debian">подключение HDD/SSD в Debian и Armbian</a>. Для PBS используйте его инструменты управления дисками; рекурсивно менять владельца готового datastore по общему Linux-примеру не нужно.</p> <p>Не доводите диск до 100% заполнения. Порог уведомления, например 80%, выберите заранее и оставьте запас на очередное задание. Устройство datastore описано в <a href="https://pbs.proxmox.com/docs/storage.html" rel="external noopener">документации PBS</a>.</p> <h2>Подключение к Proxmox VE и права токена</h2> <p>В PBS создайте отдельного пользователя pve-backup@pbs и API token для узла Proxmox. Для записи собственных backup groups подходит роль DatastoreBackup на пути /datastore/home-backup. При разделении привилегий токена его эффективные права ограничены и правами пользователя, и правами самого токена: одного назначения пользователю может оказаться недостаточно. Модель разрешений приведена в <a href="https://pbs.proxmox.com/docs/user-management.html" rel="external noopener">User Management</a>.</p> <p>В Proxmox VE откройте <strong>Datacenter → Storage → Add → Proxmox Backup Server</strong>:</p> <ul> <li>ID: понятное локальное имя, например pbs-home;</li> <li>Server: адрес PBS;</li> <li>Datastore: home-backup;</li> <li>Username: полный идентификатор созданного токена;</li> <li>Password: секрет токена;</li> <li>Fingerprint: отпечаток сертификата, сверенный с интерфейсом вашего PBS.</li> </ul> <p>Секрет токена и ключ шифрования резервных копий — разные вещи. Если включаете клиентское шифрование, сохраните ключ восстановления отдельно: пароль администратора PBS не заменит его.</p> <h2>Первая копия и расписание</h2> <p>Сначала выберите небольшую некритичную VM и выполните Backup now на хранилище pbs-home. Дождитесь окончания, прочитайте журнал, затем найдите соответствующий snapshot в PBS. После этого настройте Datacenter → Backup с нужными VM, расписанием и уведомлениями.</p> <p>Пример политики для домашней лаборатории: 7 ежедневных и 4 еженедельных точек. Примерьте её к допустимой потере данных: ночное копирование означает, что изменения за текущий день могут исчезнуть. Для важных данных это может быть слишком большой интервал.</p> <p>В обслуживании PBS есть три разные задачи:</p> <ul> <li><strong>Prune</strong> убирает точки восстановления согласно политике хранения.</li> <li><strong>Garbage Collection</strong> освобождает блоки, которые больше не нужны оставшимся копиям.</li> <li><strong>Verify</strong> проверяет сохранённые данные на целостность.</li> </ul> <p>Удаление snapshot не обязано немедленно освобождать место. У GC есть защитный интервал; строка Pending removals сама по себе не означает поломку. Планируйте обслуживание вне основного окна backup. Механика объяснена в <a href="https://github.com/proxmox/proxmox-backup/blob/master/docs/maintenance.rst" rel="external noopener">описании обслуживания PBS</a>.</p> <h2>Восстановление: проверка, ради которой всё затевалось</h2> <p>Выберите копию в Proxmox VE и восстановите её <strong>под свободным VMID</strong>, например 920. Не включайте автоматический запуск восстановленной машины.</p> <p>До первого старта отключите её сетевой адаптер или подключите к изолированному bridge. Клон может получить адрес рабочей VM, запустить те же задания и отправить реальные команды устройствам. Особенно это важно для Home Assistant, почты и баз данных.</p> <p>Проверьте загрузку через консоль, наличие нужных файлов и запуск приложения. Для сетевого теста назначьте отдельную сеть и контролируемый доступ. Запишите дату копии, время восстановления и то, что пришлось делать вручную. Это ваша короткая аварийная инструкция.</p> <p>Если копируете VM с приложением, проверьте ещё и его собственные данные. Для Home Assistant полезен отдельный слой резервирования конфигурации; принципы разбирает материал <a href="/home-assistant-nadyozhnyy-bekap-i-vosstanovlenie-zaschischaem-nastroyki-umnogo-doma">о бэкапах Home Assistant</a>. Полный backup VM и копия приложения решают разные задачи восстановления.</p> <p>Для проверки PBS из другой сети можно использовать <a href="/tailscale-na-openwrt-mesh-set-subnet-router-i-bezopasnoe-administrirovanie">доступ к домашней LAN через Tailscale на OpenWrt</a>. В правилах доступа укажите адрес PBS и нужный порт; удалённый вход в панель сам по себе не создаёт внешнюю резервную копию.</p> <h2>Когда что-то пошло не так</h2> <p><strong>Хранилище не подключается:</strong> проверьте адрес, порт 8007, имя datastore и полный идентификатор токена. Ошибка разрешений — повод проверить ACL, а не переходить сразу на root.</p> <p><strong>Новый токен не продолжает старую группу:</strong> проверьте владельца backup group. Смена учётной записи может требовать отдельного переназначения владельца администратором.</p> <p><strong>Backup успешен, но приложение после restore неисправно:</strong> проверьте согласованность данных самого приложения и журнал гостевой системы. Verify не проверяет бизнес-логику и не заменяет запуск восстановленной VM.</p> <p><strong>Копии есть только дома:</strong> отказ диска вы предусмотрели, потерю всего помещения — ещё нет. Нужна дополнительная копия в другом месте и проверенный способ получить к ней доступ без основного сервера.</p> <p>Работу можно считать законченной, когда вы знаете не только где зелёная галочка, но и <strong>как поднять нужный сервис из копии на другом хосте</strong>.</p>]]></content:encoded>
</item><item>
<title>Remnawave: архитектура панели, ноды и безопасная эксплуатация</title>
<link>https://v3trov.pro/remnawave-arhitektura-paneli-nody-i-bezopasnaya-ekspluatatsiya</link>
<pdalink>https://v3trov.pro/remnawave-arhitektura-paneli-nody-i-bezopasnaya-ekspluatatsiya</pdalink>
<guid>https://v3trov.pro/remnawave-arhitektura-paneli-nody-i-bezopasnaya-ekspluatatsiya</guid>
<pubDate>Sun, 13 Sep 2026 04:28:41 +0000</pubDate>
<category>index</category>

<content:encoded><![CDATA[<p>Remnawave — система управления инфраструктурой на базе Xray-core, в которой панель, база данных и рабочие ноды разделены на самостоятельные компоненты. Такая архитектура удобна для централизованного администрирования, но требует больше дисциплины, чем один сервис на одном сервере: появляются секреты между узлами, отдельные домены, резервные копии PostgreSQL и дополнительные сетевые границы.</p> <blockquote> <p><strong>Правовой и этический дисклеймер.</strong> Эта статья рассматривает Remnawave как серверное программное обеспечение: архитектуру, развёртывание компонентов, защиту панели, мониторинг и восстановление. Материал не рекламирует услуги доступа, не описывает обход ограничений и не содержит готовых пользовательских конфигураций. Используйте технологии только в собственной инфраструктуре и в соответствии с законом, договором с провайдером и правилами подключённых сетей.</p> </blockquote> <p>Цель — не получить работающую кнопку любой ценой, а понять, какие данные и соединения нужно защищать до запуска системы.</p> <h2>Из каких компонентов состоит Remnawave</h2> <p>Основной компонент — Panel. Он управляет пользователями, нодами, конфигурациями и служебными данными. Панель использует PostgreSQL и запускается вместе с необходимыми сервисами через Docker Compose. Рабочая нода размещается отдельно и выполняет сетевую конфигурацию Xray-core, полученную от управляющего контура.</p> <p>Упрощённая схема:</p> <pre><code class="language-text">Администратор → HTTPS → Reverse proxy → Remnawave Panel → PostgreSQL │ ├→ Node A → Xray-core ├→ Node B → Xray-core └→ метрики и журналы </code></pre> <p>Такое разделение помогает централизовать управление, но панель становится критической системой. Потеря её базы или секретов затрагивает все связанные ноды. Поэтому резервное копирование и изоляция должны появиться раньше рабочих объектов.</p> <p>Официальный код и актуальная документация находятся в <a href="https://github.com/remnawave/panel" rel="external noopener">репозитории Remnawave</a> и на сайте проекта. Не копируйте compose-файлы из случайных сборок: переменные и структура компонентов меняются между версиями.</p> <h2>Panel и Node — не одно и то же</h2> <p>Panel хранит административное состояние: пользователей, параметры нод, шаблоны и служебные настройки. Node исполняет конфигурацию на конкретном сервере. Их не стоит размещать вместе только ради экономии одной виртуальной машины, если задача требует отказоустойчивости или раздельных зон доверия.</p> <p>Плюсы отдельной панели:</p> <ul> <li>единая точка управления несколькими нодами;</li> <li>централизованная база и аудит;</li> <li>рабочие серверы не обязаны публиковать административный интерфейс;</li> <li>ноду можно обслуживать независимо от frontend.</li> </ul> <p>Минусы:</p> <ul> <li>больше контейнеров и сетевых связей;</li> <li>отдельная PostgreSQL;</li> <li>секреты взаимодействия Panel и Node;</li> <li>зависимость от DNS, TLS и reverse proxy;</li> <li>более сложное восстановление.</li> </ul> <p>Для одного личного стенда компактная панель может быть проще. Если сравниваете подходы, прочитайте материал <a href="/3x-ui-dlya-administratora-zashchita-paneli-i-rezervnye-kopii">3x-ui для администратора</a>.</p> <h2>Что нужно подготовить до установки</h2> <p>До запуска контейнеров определите:</p> <ol> <li>отдельный домен для административной панели;</li> <li>домен публичной страницы подписки, если она действительно нужна вашему внутреннему сценарию;</li> <li>адреса и зоны размещения нод;</li> <li>способ резервного доступа к серверам;</li> <li>место хранения шифрованных копий;</li> <li>окно обновлений и порядок отката;</li> <li>ответственного за ключи и токены.</li> </ol> <p>Не начинайте с публикации всех портов. Сначала нарисуйте потоки: кто обращается к панели, как панель связывается с нодой, куда отправляются метрики и где находится база.</p> <h2>Docker Compose — это не граница безопасности</h2> <p>Контейнеры упрощают доставку компонентов и воспроизводимость версий, но сами по себе не изолируют плохо настроенный сервис от интернета. Опубликованный порт остаётся опубликованным, а секрет в файле .env остаётся секретом, который нужно защищать.</p> <p>Официальная инструкция Remnawave требует привязывать внутренние сервисы к 127.0.0.1 и использовать reverse proxy. Это принципиально: PostgreSQL, внутренний backend и метрики не должны быть доступны из произвольной сети.</p> <p>Проверьте compose-конфигурацию на три типа ошибок:</p> <ul> <li>порт опубликован на 0.0.0.0 вместо localhost;</li> <li>каталог с базой или секретами имеет слишком широкие права;</li> <li>используется плавающий тег образа без зафиксированной версии и плана обновления.</li> </ul> <p>После запуска сравните ожидаемые порты с фактически слушающими. Docker способен добавлять сетевые правила, которые администратор не заметит при беглом просмотре обычного firewall.</p> <h2>Секреты в .env</h2> <p>Remnawave использует несколько секретов для аутентификации и внутренних функций. Официальная инструкция отдельно требует сгенерировать APP_SECRET, METRICS_PASS и WEBHOOK_SECRET_HEADER, а также заменить пароль PostgreSQL.</p> <p>Правила обращения с .env:</p> <ul> <li>генерируйте каждый секрет независимо;</li> <li>не используйте примеры из документации как реальные значения;</li> <li>ограничьте чтение файла владельцем сервиса;</li> <li>не добавляйте .env в Git;</li> <li>не отправляйте файл целиком в чат или тикет;</li> <li>учитывайте секреты в процедуре резервного копирования;</li> <li>планируйте ротацию и последствия замены каждого значения.</li> </ul> <p>Изменение секрета может разорвать связь компонентов. Не ротируйте всё одновременно: сначала зафиксируйте зависимости и подготовьте проверку после каждого шага.</p> <h2>Reverse proxy для панели</h2> <p>Reverse proxy должен быть единственной публичной точкой входа к веб-интерфейсу. Он завершает TLS, перенаправляет запросы на localhost и создаёт отдельный журнал доступа.</p> <p>Минимальные требования:</p> <ul> <li>действующий HTTPS-сертификат;</li> <li>закрытый прямой порт backend;</li> <li>корректные заголовки Host и адреса клиента;</li> <li>лимит размера запросов;</li> <li>разумные тайм-ауты;</li> <li>ограничение административного домена по адресам или закрытой сети, если это возможно;</li> <li>отдельная защита от перебора учётных данных.</li> </ul> <p>Не используйте один и тот же виртуальный хост для панели, метрик и тестовых страниц. Разные домены и явные маршруты уменьшают вероятность случайно открыть внутренний endpoint.</p> <h2>Первый super-admin</h2> <p>В Remnawave первый зарегистрированный пользователь становится super-admin. Это удобный старт и одновременно чувствительный момент.</p> <p>Создавайте первого пользователя сразу после запуска, пока доступ к панели разрешён только с административного адреса. После этого проверьте, что свободная регистрация не оставлена доступной по ошибке. Используйте уникальный пароль и отдельную административную учётную запись, не совпадающую с повседневными сервисами.</p> <p>Если применяется вход через внешнего поставщика OAuth, оценивайте новую зависимость: кто контролирует приложение, какие callback-адреса разрешены и что произойдёт при недоступности поставщика. Не добавляйте OAuth только ради красивой кнопки входа.</p> <h2>Безопасное подключение нод</h2> <p>Нода должна доверять только своей панели, а панель — только ожидаемой ноде. Защитите канал управления и не публикуйте служебные токены.</p> <p>Перед добавлением ноды проверьте:</p> <ul> <li>сервер обновлён и имеет корректное время;</li> <li>SSH доступен по ключам;</li> <li>рабочий и административный трафик разделены правилами;</li> <li>внутренний API не открыт всему интернету;</li> <li>секрет создан специально для этой связи;</li> <li>имя ноды не раскрывает персональные данные или точный адрес;</li> <li>мониторинг отличает недоступность ноды от недоступности панели.</li> </ul> <p>Добавляйте по одной ноде и проверяйте её состояние до перехода к следующей. Массовое подключение скрывает ошибки DNS, времени и firewall за общим симптомом «ничего не работает».</p> <h2>PostgreSQL и резервное копирование</h2> <p>Для Remnawave база — центральная часть восстановления. Копии одного compose-файла недостаточно. Нужны логический дамп PostgreSQL, файл переменных, конфигурация reverse proxy и список используемых версий.</p> <p>Практичная политика:</p> <ul> <li>ежедневный автоматический дамп базы;</li> <li>шифрованная копия вне основного сервера;</li> <li>ограниченный срок хранения;</li> <li>контроль успешного завершения задания;</li> <li>регулярное тестовое восстановление;</li> <li>отдельная копия перед каждым обновлением.</li> </ul> <p>Не считайте размер файла доказательством исправности. Проверяйте, что дамп читается и разворачивается в чистую базу. Тест выполняйте в изолированной среде без подключения к рабочим нодам, чтобы восстановленная панель не начала отправлять им старую конфигурацию.</p> <h2>Что восстанавливать и в каком порядке</h2> <p>После аварии порядок важнее скорости:</p> <ol> <li>подготовить чистую ОС и Docker;</li> <li>восстановить зафиксированные версии образов;</li> <li>вернуть секреты и настройки доменов;</li> <li>поднять PostgreSQL;</li> <li>восстановить базу;</li> <li>запустить backend и frontend;</li> <li>проверить вход и целостность данных;</li> <li>только после этого разрешить связь с одной тестовой нодой;</li> <li>подключать остальные ноды по очереди.</li> </ol> <p>Не направляйте рабочий DNS на новую панель до проверки миграций базы и совместимости версий. Старая база с новым приложением иногда требует необратимого обновления схемы.</p> <h2>Обновления без сюрпризов</h2> <p>У Remnawave активно развиваются панель, frontend и ноды. Читайте руководство по обновлению именно для установленной ветки, а не случайную инструкцию годичной давности.</p> <p>Перед обновлением сохраните:</p> <ul> <li>дамп PostgreSQL;</li> <li>текущий compose-файл;</li> <li>.env и права на него;</li> <li>версии всех образов;</li> <li>конфигурацию reverse proxy;</li> <li>список активных нод;</li> <li>результат последней проверки здоровья.</li> </ul> <p>После обновления проверяйте не только страницу входа. Нужны состояние миграций, связь с нодами, метрики, ошибки backend и срок действия TLS-сертификата.</p> <p>Если новая версия требует изменить переменные окружения, добавляйте их осознанно. Слепая замена рабочего .env новым sample-файлом способна удалить старые обязательные параметры или секреты.</p> <h2>Метрики, API и webhooks</h2> <p>Служебные интерфейсы часто оказываются опаснее панели, потому что их забывают закрыть. METRICS_PASS и WEBHOOK_SECRET_HEADER должны быть уникальными, а endpoint — доступным только ожидаемым системам.</p> <p>Для API используйте минимальные права и отдельные токены для разных интеграций. Не отдавайте super-admin токен боту, которому нужно только прочитать состояние ноды. Если токен оказался в журнале, скриншоте или репозитории, считайте его скомпрометированным и замените.</p> <p>Webhook должен проверять секрет до обработки данных. Ограничение по IP полезно как дополнительный слой, но адрес источника может меняться, а доверие к заголовку без правильного reverse proxy создаёт ложную защиту.</p> <h2>Наблюдаемость без сбора лишнего</h2> <p>Полезный мониторинг отвечает на вопросы:</p> <ul> <li>доступна ли панель из административного контура;</li> <li>соединены ли ноды с управляющей системой;</li> <li>не растут ли ошибки PostgreSQL;</li> <li>хватает ли диска для базы и журналов;</li> <li>создан ли свежий дамп;</li> <li>не истекает ли сертификат;</li> <li>не появились ли новые публичные порты;</li> <li>не изменились ли версии контейнеров без запланированного обновления.</li> </ul> <p>Не собирайте полные конфигурации и пользовательские секреты в общей системе логирования. Для диагностики обычно достаточно идентификатора компонента, времени, кода ошибки и обезличенного контекста.</p> <h2>Когда Remnawave избыточен</h2> <p>Распределённая система имеет смысл, когда действительно нужны несколько нод, единый контроль и отдельный жизненный цикл компонентов. Для одного тестового сервера она добавляет PostgreSQL, reverse proxy, домены и больше секретов.</p> <p>Выбирайте Remnawave, если готовы обслуживать:</p> <ul> <li>отдельную базу;</li> <li>контейнеры нескольких компонентов;</li> <li>TLS и DNS;</li> <li>связь панели с нодами;</li> <li>регулярные миграции;</li> <li>резервное восстановление.</li> </ul> <p>Если задача укладывается в небольшой личный стенд, сначала оцените более компактную архитектуру. Но независимо от панели общие правила одинаковы: минимальная публикация портов, стабильные версии и резервные копии.</p> <p>Техническую основу Xray без рекламного контекста разбирает статья <a href="/vless-kak-tunnel-mezhdu-vashimi-proektami-teoriya-i-nastroyka">VLESS как туннель между своими проектами</a>.</p> <h2>Чек-лист перед вводом в эксплуатацию</h2> <ul> <li>Panel, PostgreSQL и метрики не опубликованы напрямую.</li> <li>Reverse proxy принимает HTTPS и проксирует только нужные маршруты.</li> <li>Первый super-admin создан из доверенной сети.</li> <li>Все стандартные секреты заменены случайными уникальными значениями.</li> <li>.env исключён из Git и закрыт правами.</li> <li>Каждая нода имеет понятную границу доступа.</li> <li>IPv4 и IPv6 проверены с внешней машины.</li> <li>Версии контейнеров зафиксированы.</li> <li>Дамп PostgreSQL создаётся автоматически.</li> <li>Тестовое восстановление выполнено без связи с рабочими нодами.</li> <li>API, метрики и webhooks защищены отдельными секретами.</li> <li>Журналы ротируются и не содержат ключей.</li> </ul> <h2>Итог</h2> <p>Remnawave стоит рассматривать как управляющий контур, а не просто веб-страницу над Xray-core. Надёжность зависит от разделения Panel и Node, закрытых внутренних портов, защищённого .env, PostgreSQL-копий и контролируемых обновлений.</p> <p>Сначала обеспечьте восстановление и минимальную поверхность атаки, затем подключайте рабочие ноды по одной. Такая последовательность полезна для любой распределённой панели и не зависит от конкретного сетевого сценария.</p>]]></content:encoded>
</item><item>
<title>3x-ui для администратора: защита панели и резервные копии</title>
<link>https://v3trov.pro/3x-ui-dlya-administratora-zashchita-paneli-i-rezervnye-kopii</link>
<pdalink>https://v3trov.pro/3x-ui-dlya-administratora-zashchita-paneli-i-rezervnye-kopii</pdalink>
<guid>https://v3trov.pro/3x-ui-dlya-administratora-zashchita-paneli-i-rezervnye-kopii</guid>
<pubDate>Sun, 13 Sep 2026 04:26:33 +0000</pubDate>
<category>index</category>

<content:encoded><![CDATA[<p>3x-ui — веб-панель для управления Xray-core: она хранит конфигурацию, создаёт входящие подключения, ведёт учёт трафика и показывает состояние сервиса. Удобный интерфейс одновременно становится новой критической точкой: если панель открыта всему интернету, слабый пароль или устаревшая версия способны скомпрометировать весь сервер.</p> <blockquote> <p><strong>Правовой и этический дисклеймер.</strong> Материал посвящён администрированию собственной серверной инфраструктуры, защите панели и резервному копированию. Он не рекламирует услуги доступа, не содержит способов обхода ограничений и не призывает нарушать законодательство или правила сетей. Перед эксплуатацией самостоятельно проверьте применимые требования. Сам проект 3x-ui указывает, что предназначен для личного использования и не должен применяться незаконно или как production-система.</p> </blockquote> <p>Ниже не будет готовых клиентских конфигураций и советов по маскировке трафика. Разберём то, что действительно должен понимать администратор: архитектуру, поверхность атаки, изоляцию интерфейса, обновления, журналы и восстановление после сбоя.</p> <h2>Что именно делает 3x-ui</h2> <p>3x-ui не заменяет Xray-core. Панель управляет его конфигурацией и жизненным циклом, а Xray обрабатывает сетевые соединения. Рядом обычно находятся системный сервис или контейнер, база SQLite либо PostgreSQL, каталог сертификатов и резервные копии.</p> <p>Упрощённая схема выглядит так:</p> <pre><code class="language-text">Администратор → HTTPS / закрытый контур → 3x-ui → конфигурация Xray-core ├→ база данных ├→ журналы └→ резервные копии </code></pre> <p>Это разделение важно для диагностики. Если веб-интерфейс открывается, но сетевой сервис не запускается, проблема может быть в сгенерированной конфигурации Xray. Если Xray работает, а вход в панель невозможен, нужно проверять веб-сервис, reverse proxy и базу, не меняя сразу сетевые правила.</p> <p>Актуальные возможности и ограничения перечислены в <a href="https://github.com/MHSanaei/3x-ui" rel="external noopener">официальном репозитории 3x-ui</a>. Не используйте случайные форки и установочные скрипты из роликов или архивов.</p> <h2>Главный принцип: панель не должна быть публичной по умолчанию</h2> <p>Административный интерфейс содержит сведения о пользователях, портах, объёмах трафика и конфигурации сервера. Его публикация на случайном высоком порту не является защитой: сканеры находят такие сервисы автоматически.</p> <p>Предпочтительные варианты доступа:</p> <ol> <li>только с localhost через SSH-туннель;</li> <li>только из собственной административной сети;</li> <li>через reverse proxy с HTTPS и дополнительным ограничением по адресам;</li> <li>через отдельный защищённый контур управления.</li> </ol> <p>Открывать панель на всех интерфейсах стоит только при осознанной необходимости и с несколькими уровнями защиты. Смена URL-пути уменьшает шум в журнале, но не заменяет firewall, TLS и сильную аутентификацию.</p> <h2>Отдельные порты для разных задач</h2> <p>Не смешивайте административный интерфейс и рабочие входящие подключения на одном случайном наборе правил. Составьте простую таблицу:</p> <table> <thead> <tr> <th>Назначение</th> <th>Кто должен иметь доступ</th> <th>Контроль</th> </tr> </thead> <tbody> <tr> <td>Панель управления</td> <td>Только администратор</td> <td>Firewall, HTTPS, журнал входов</td> </tr> <tr> <td>SSH</td> <td>Ограниченный список адресов или закрытая сеть</td> <td>Ключи, запрет пароля, Fail2ban</td> </tr> <tr> <td>Метрики и API</td> <td>Только система мониторинга</td> <td>Отдельный токен и ACL</td> </tr> <tr> <td>Рабочие входящие порты</td> <td>Только необходимые клиенты</td> <td>Минимальный набор правил</td> </tr> </tbody> </table> <p>После каждого изменения проверяйте, какие процессы действительно слушают сеть. Лишний открытый порт часто остаётся от теста, старого контейнера или временного reverse proxy.</p> <h2>Безопасная первичная настройка</h2> <p>Официальный установщик создаёт случайные данные входа и путь панели. Сохраните их в менеджере паролей и сразу проверьте несколько пунктов:</p> <ul> <li>уникальный длинный пароль администратора;</li> <li>отдельное имя пользователя без очевидных вариантов admin и root;</li> <li>HTTPS с действующим сертификатом;</li> <li>закрытый прямой порт панели;</li> <li>корректное системное время;</li> <li>включённые автоматические обновления безопасности ОС;</li> <li>резервная копия до создания первых рабочих объектов.</li> </ul> <p>Не вставляйте пароль, токен API или приватный ключ в команды, которые попадут в историю shell. Для автоматизации используйте защищённые переменные окружения или хранилище секретов с минимальными правами.</p> <h2>Reverse proxy и TLS</h2> <p>Reverse proxy удобно завершает TLS, добавляет журнал запросов и позволяет ограничить административный интерфейс. Но он не делает небезопасный backend безопасным автоматически.</p> <p>Проверьте четыре условия:</p> <ol> <li>backend панели слушает localhost или отдельный внутренний интерфейс;</li> <li>наружу опубликован только HTTPS reverse proxy;</li> <li>заголовки реального адреса клиента принимаются только от доверенного proxy;</li> <li>HTTP либо перенаправляется на HTTPS, либо полностью закрыт.</li> </ol> <p>Не отключайте проверку сертификата ради временного удобства. Если панель доступна только внутри сети, можно использовать внутренний центр сертификации, но его корневой сертификат должен устанавливаться на административные устройства контролируемо.</p> <h2>Firewall без самообмана</h2> <p>Начинайте с политики «запрещено всё, кроме необходимого». До применения правил убедитесь, что не потеряете SSH-доступ, и держите открытой резервную консоль провайдера или гипервизора.</p> <p>Типичные ошибки:</p> <ul> <li>открыт весь диапазон портов вместо одного сервиса;</li> <li>разрешён IPv4, но забыт такой же контроль IPv6;</li> <li>Docker публикует порт в обход ожидаемой цепочки firewall;</li> <li>старое правило остаётся после смены порта;</li> <li>мониторинг доступен без пароля;</li> <li>тестовый интерфейс слушает 0.0.0.0.</li> </ul> <p>Проверяйте результат с другой машины, а не только командой на самом сервере. Локальный тест не показывает, что реально доступно извне.</p> <h2>Обновления: стабильная версия вместо dev-latest</h2> <p>У 3x-ui есть стабильные релизы и непрерывная development-сборка. Для обычного сервера выбирайте стабильный тег, читайте примечания к выпуску и не обновляйте панель непосредственно перед поездкой или важным событием.</p> <p>Рабочий порядок:</p> <ol> <li>сохранить базу, конфигурацию и сертификаты;</li> <li>записать текущую версию панели и Xray-core;</li> <li>проверить свободное место и состояние диска;</li> <li>обновить в запланированное окно;</li> <li>проверить вход в панель, запуск Xray и журналы;</li> <li>сохранить новую контрольную копию после успешной проверки.</li> </ol> <p>Официальные релизы публикуются на <a href="https://github.com/MHSanaei/3x-ui/releases" rel="external noopener">странице 3x-ui Releases</a>. Rolling dev build предназначен для проверки свежих изменений, а не для сервера, от которого требуется предсказуемость.</p> <h2>Что включать в резервную копию</h2> <p>Скриншоты интерфейса не являются резервной копией. Нужны данные, из которых можно восстановить работающий экземпляр:</p> <ul> <li>база 3x-ui;</li> <li>конфигурация и параметры запуска;</li> <li>сертификаты и ключи, если они не выпускаются заново;</li> <li>конфигурация reverse proxy;</li> <li>правила firewall в документированном виде;</li> <li>версия панели и образа контейнера;</li> <li>отдельная инструкция восстановления.</li> </ul> <p>Храните минимум одну копию вне сервера. Архив на том же диске исчезнет вместе с виртуальной машиной. Шифруйте резервные копии, потому что в них могут находиться секреты и идентификаторы клиентов.</p> <p>Главная проверка — пробное восстановление на изолированной машине. Непроверенный архив даёт уверенность, но не гарантирует результат.</p> <h2>SQLite или PostgreSQL</h2> <p>SQLite проще и подходит для небольшого личного экземпляра: меньше компонентов, понятное копирование, лёгкое восстановление. Но файл базы нельзя бездумно копировать во время активной записи — используйте штатный экспорт или согласованный снимок.</p> <p>PostgreSQL оправдан, когда требуется отдельный сервер БД, регулярные транзакционные копии или более крупная инсталляция. Он добавляет обслуживание: обновления, роли, сеть, мониторинг, резервное копирование и проверку восстановления.</p> <p>Не переходите на PostgreSQL только потому, что он выглядит «профессиональнее». Выбирайте хранилище по реальной нагрузке и способности обслуживать ещё один критический компонент.</p> <h2>Журналы и минимальный мониторинг</h2> <p>Администратору нужны не все события навсегда, а ответы на конкретные вопросы:</p> <ul> <li>работает ли сервис панели;</li> <li>запущен ли Xray-core;</li> <li>не растёт ли число ошибок конфигурации;</li> <li>хватает ли места на диске;</li> <li>были ли неудачные входы;</li> <li>не изменились ли неожидаемо открытые порты;</li> <li>создана ли свежая резервная копия.</li> </ul> <p>Настройте ротацию журналов. Бесконечный debug-лог способен заполнить диск и остановить сервис. Не отправляйте полные конфигурации и секреты во внешнюю систему мониторинга.</p> <p>Для общего понимания Xray и сетевых туннелей без привязки к конкретной панели можно прочитать материал <a href="/vless-kak-tunnel-mezhdu-vashimi-proektami-teoriya-i-nastroyka">VLESS как туннель между своими проектами</a>.</p> <h2>3x-ui и Remnawave — разные модели управления</h2> <p>3x-ui удобен как компактная панель для одного или нескольких управляемых серверов. Remnawave строится вокруг отдельной панели, базы и нод, поэтому сильнее разделяет управляющий и рабочий контуры. Сравнивать их только по количеству кнопок неправильно.</p> <p>Если важны централизованные ноды, отдельные компоненты и более сложная эксплуатационная модель, читайте разбор <a href="/remnawave-arhitektura-paneli-nody-i-bezopasnaya-ekspluatatsiya">архитектуры Remnawave</a>. Для небольшого личного стенда лишняя распределённость может лишь увеличить число точек отказа.</p> <h2>Чек-лист администратора</h2> <p>Перед тем как считать установку законченной, проверьте:</p> <ul> <li>панель недоступна напрямую из произвольной сети;</li> <li>используется HTTPS без предупреждений браузера;</li> <li>пароль уникален и сохранён безопасно;</li> <li>API выключен либо защищён отдельным ограниченным токеном;</li> <li>SSH работает по ключам;</li> <li>IPv4 и IPv6 проверены одинаково;</li> <li>выбран стабильный релиз;</li> <li>резервная копия хранится вне сервера;</li> <li>восстановление хотя бы один раз протестировано;</li> <li>журнал не содержит секретов и регулярно ротируется.</li> </ul> <h2>Итог</h2> <p>3x-ui следует воспринимать не как «кнопку для настройки сети», а как административную систему с доступом к критической конфигурации Xray-core. Главные меры защиты скучны и поэтому эффективны: закрытый интерфейс, HTTPS, минимальные порты, стабильные обновления, ограниченные токены и проверенные резервные копии.</p> <p>Чем меньше компонентов опубликовано наружу и чем понятнее процедура восстановления, тем надёжнее личная инфраструктура. Любые сценарии использования должны соответствовать закону, договору с провайдером и правилам сетей, в которых работает сервер.</p>]]></content:encoded>
</item><item>
<title>Meshtastic для Android: установка, подключение и настройка</title>
<link>https://v3trov.pro/meshtastic-dlya-android-ustanovka-podklyuchenie-i-nastroyka</link>
<pdalink>https://v3trov.pro/meshtastic-dlya-android-ustanovka-podklyuchenie-i-nastroyka</pdalink>
<guid>https://v3trov.pro/meshtastic-dlya-android-ustanovka-podklyuchenie-i-nastroyka</guid>
<pubDate>Sun, 13 Sep 2026 04:03:59 +0000</pubDate>
<category>index</category>

<content:encoded><![CDATA[<p>Meshtastic для Android превращает телефон в экран и клавиатуру для LoRa-ноды. Через приложение можно настроить регион и канал, отправлять сообщения, смотреть соседние узлы, передавать координаты и обновлять прошивку совместимых плат. Интернет для обмена по LoRa не нужен, но Bluetooth-связь телефона с вашей нодой должна работать стабильно.</p> <p>Ниже — последовательная настройка с нуля: где взять безопасную версию приложения, как подключить плату, какие параметры менять сначала и что проверять, если сообщения не доходят.</p> <h2>Что понадобится</h2> <p>Подготовьте Android-смартфон с Bluetooth, совместимую плату Meshtastic и исправный USB-кабель для первичной прошивки или зарядки. Антенну LoRa подключайте до включения передатчика: работа радиомодуля без согласованной антенны может повредить выходной каскад.</p> <p>Если плата ещё не прошита, сначала используйте руководство <a href="/meshtastic-s-nulya-vybor-platy-proshivka-i-nastroyka-svyazi">Meshtastic с нуля</a>. В нём разобраны выбор частотной версии, веб-прошивальщик и первый тест между двумя устройствами.</p> <h2>Где скачать приложение</h2> <p>Самый простой вариант — установить Meshtastic из Google Play. Если магазин недоступен или нужна конкретная версия, используйте только <a href="https://github.com/meshtastic/Meshtastic-Android/releases" rel="external noopener">официальные релизы Meshtastic Android на GitHub</a>.</p> <p>На момент подготовки руководства актуальная стабильная ветка — 2.8. В списке GitHub также встречаются snapshot и debug-сборки. Они предназначены для тестирования новых функций, могут быть нестабильными и не подходят для основной походной или аварийной связи.</p> <p>При установке APK вручную Android попросит временно разрешить установку из выбранного источника. После установки верните запрет. Не скачивайте APK с каталогов-перепаковщиков: приложение имеет доступ к Bluetooth, геолокации и конфигурации каналов.</p> <h2>Первое подключение по Bluetooth</h2> <ol> <li>Включите плату и поднесите её к телефону.</li> <li>Запустите приложение и выдайте разрешение на поиск устройств поблизости.</li> <li>Откройте список доступных устройств и выберите свою ноду.</li> <li>Подтвердите код сопряжения, показанный на экране платы или в инструкции к устройству.</li> <li>Дождитесь синхронизации конфигурации и списка нод.</li> </ol> <p>На Android 12 и новее Bluetooth-разрешения отделены от обычной геолокации. На старых версиях поиск BLE-устройств может не работать без разрешения местоположения. Сам GPS включать для простого сопряжения обычно не требуется, но системная политика конкретной версии Android может отличаться.</p> <p>Не пытайтесь одновременно подключить одну ноду к двум телефонам. Перед диагностикой закройте Meshtastic на втором устройстве и удалите старое BLE-соединение, если оно постоянно перехватывает плату.</p> <h2>Обязательная настройка региона</h2> <p>Первый параметр после подключения — LoRa Region. Он определяет допустимые частоты и ограничения передачи. Выбирайте регион фактического использования устройства, а не вариант с большей мощностью или красивым названием.</p> <p>Неверный регион приводит к двум проблемам: нода не слышит соседей и может передавать вне разрешённого диапазона. После смены региона приложение сохранит параметры на плату, а радио перезапустится.</p> <p>Затем проверьте Modem Preset. Для первой связи удобнее оставить распространённый LongFast. Обе ноды должны использовать совместимые регион, пресет и параметры канала. Увеличение дальности всегда оплачивается временем передачи и меньшей пропускной способностью.</p> <h2>Имя ноды и роль устройства</h2> <p>Задайте длинное имя, понятное владельцу, и короткое имя из нескольких символов для списка нод. Не используйте в публичной сети номер квартиры, точный адрес или телефон.</p> <p>Для переносной платы оставьте роль Client. Router и Repeater не делают маленькую ноду автоматически лучше: они меняют поведение маршрутизации и увеличивают нагрузку на эфир. Эти роли нужны стационарным узлам с хорошей антенной, питанием и действительно полезным расположением.</p> <p>После изменения роли проверьте энергопотребление. Настройки, подходящие для ретранслятора на крыше, быстро разрядят карманное устройство.</p> <h2>Каналы и ключи</h2> <p>Первичный канал LongFast позволяет увидеть пользователей с совместимыми настройками. Его стандартный ключ широко известен, поэтому сообщения в таком канале нельзя считать приватными.</p> <p>Для своей группы создайте отдельный канал и сгенерируйте новый PSK. Передать конфигурацию можно QR-кодом или ссылкой-приглашением. Делитесь ею только через доверенный канал: получатель ключа сможет читать сообщения группы и отправлять свои.</p> <p>Полезная схема:</p> <ul> <li>основной приватный канал — для вашей команды;</li> <li>публичный LongFast — для обнаружения соседей;</li> <li>отдельный служебный канал — для телеметрии, если она действительно нужна.</li> </ul> <p>Не создавайте много каналов «на всякий случай». Каждый дополнительный трафик занимает эфирное время и усложняет поиск причины неполадок.</p> <h2>Как отправить первое сообщение</h2> <p>Для честного теста нужны две LoRa-ноды. Телефон связывается по Bluetooth только со своей платой, а между платами сообщение идёт по радио.</p> <ol> <li>Положите две ноды в одной комнате, но не вплотную друг к другу.</li> <li>Убедитесь, что у них один регион и совместимый первичный канал.</li> <li>Подключите Android к первой ноде.</li> <li>Отправьте короткое сообщение в общий канал.</li> <li>Проверьте получение на второй плате или втором телефоне.</li> </ol> <p>Значок отправки означает, что приложение передало пакет своей ноде. Подтверждение доставки зависит от типа сообщения, маршрута и версии прошивки; его отсутствие не всегда означает, что пакет точно потерян. Для диагностики посмотрите время последнего контакта с нодой и журнал пакетов.</p> <h2>Личные сообщения и список нод</h2> <p>Во вкладке нод отображаются устройства, сведения о которых дошли до вашего клиента. Запись может быть старой: всегда смотрите время последнего контакта.</p> <p>Личное сообщение адресуется конкретной ноде, но всё равно проходит через общую mesh-сеть и может ретранслироваться промежуточными устройствами. Доставка зависит от качества маршрута и доступности адресата. Для чувствительных данных не полагайтесь только на красивую подпись контакта — сверяйте идентификатор устройства и используйте приватный канал.</p> <p>SNR и RSSI помогают оценить последний принятый пакет. Они не являются постоянным измерением канала и не гарантируют обратную связь в этот момент.</p> <h2>Карта и координаты</h2> <p>Карта приложения показывает ноды, чьи координаты получил ваш клиент. Позицию может дать встроенный GPS платы, телефон или фиксированная настройка стационарного узла.</p> <p>Перед публикацией координат выберите точность. Для домашней ноды разумнее показывать район, а не конкретный дом. Отдельная глобальная карта работает через MQTT и требует добровольного Map Reporting. Пошаговая настройка и устранение неполадок описаны в руководстве <a href="/karta-meshtastic-kak-nayti-nody-i-pokazat-svoyu-set">карта Meshtastic: как найти ноды</a>.</p> <p>Отсутствие устройства на публичной карте не означает отсутствия LoRa-сети поблизости. Многие пользователи сознательно не отправляют координаты в интернет.</p> <h2>Обновление приложения и прошивки</h2> <p>Старайтесь держать приложение и прошивку платы в совместимых стабильных версиях. Перед крупным обновлением сохраните параметры каналов и ключи безопасным способом. Не публикуйте экспорт конфигурации: в нём могут находиться секреты приватных каналов.</p> <p>После обновления сначала проверьте базовые функции:</p> <ol> <li>Bluetooth-подключение;</li> <li>правильный регион;</li> <li>наличие каналов;</li> <li>сообщение между двумя близкими нодами;</li> <li>только затем GPS, MQTT и дополнительные модули.</li> </ol> <p>Так проще понять, какая именно часть изменила поведение.</p> <h2>Если приложение не видит плату</h2> <h3>Проверьте питание и режим Bluetooth</h3> <p>Перезагрузите ноду и подождите около минуты. Некоторые платы отключают Bluetooth по тайм-ауту или после перехода в энергосберегающий режим.</p> <h3>Удалите старое сопряжение</h3> <p>В системных настройках Android забудьте устройство, перезапустите Bluetooth и подключитесь заново из приложения Meshtastic. Не создавайте пару заранее из общего меню Bluetooth, если текущая версия приложения ожидает собственный диалог.</p> <h3>Проверьте разрешения</h3> <p>Разрешите поиск устройств поблизости. Для старого Android дополнительно проверьте геолокацию. Отключите для Meshtastic жёсткую оптимизацию батареи на время диагностики.</p> <h3>Исключите второй телефон</h3> <p>Если нода уже подключена к другому клиенту, новое соединение может отклоняться. Закройте приложение на остальных телефонах и перезагрузите плату.</p> <h3>Сверьте версии</h3> <p>Если приложение очень новое, а прошивка давно не обновлялась, возможны несовместимые параметры. Установите стабильные версии из официальных источников. Snapshot-сборка — плохой способ исправлять обычную проблему Bluetooth.</p> <h2>Сообщения не доходят</h2> <p>Проверяйте систему от простого к сложному:</p> <ul> <li>одинаковый частотный регион;</li> <li>совместимый Modem Preset;</li> <li>одинаковый ключ и имя канала;</li> <li>подключённая антенна нужного диапазона;</li> <li>короткая дистанция для первого теста;</li> <li>отсутствие постоянного MQTT-трафика и лишней телеметрии.</li> </ul> <p>Если связь работает рядом, увеличивайте расстояние постепенно. Высота и свободная зона вокруг антенны обычно дают больше, чем максимальная мощность в помещении. Не меняйте сразу частоту, роль, канал и прошивку — иначе причина останется неизвестной.</p> <h2>Практичная начальная конфигурация</h2> <p>Для первой переносной ноды достаточно:</p> <ul> <li>роль Client;</li> <li>правильный регион;</li> <li>пресет LongFast;</li> <li>одно нейтральное имя;</li> <li>публичный канал для теста;</li> <li>отдельный приватный канал для своей группы;</li> <li>выключенные MQTT и лишняя телеметрия до проверки радио.</li> </ul> <p>После стабильного обмена добавляйте карту, GPS, уведомления и интернет-шлюз по одной функции. Такой порядок экономит время и не превращает простую проблему в клубок зависимостей.</p> <h2>Итог</h2> <p>Meshtastic для Android лучше настраивать в два этапа: сначала надёжное Bluetooth-соединение телефона с платой, затем радиосвязь между двумя нодами. Регион, пресет и ключ канала должны совпадать, а для приватной группы нужен собственный PSK.</p> <p>Устанавливайте стабильную сборку из Google Play или официального GitHub, не раскрывайте экспорт каналов и точные домашние координаты. Когда базовые сообщения работают без интернета, можно безопасно добавлять карту и MQTT.</p>]]></content:encoded>
</item></channel></rss>