Проблема с wb-cloud-agent

приложен диагностический архив, доступен только сотрудникам поддержки
(348,0 КБ)

В веб интерфейса WirenBoard отсутствует раздел про WB Cloud:

Вывод wb-cloud-agent:

root@wirenboard-AKWGH45O:~# wb-cloud-agent
| Provider         | Controller Url / Activation Url         |
|------------------|-----------------------------------------|
| wirenboard.cloud | No connect to: https://wirenboard.cloud |

Проверка подключения:

curl --connect-timeout 45 --retry 8 --retry-delay 1 --retry-all-errors \
  --cert /var/lib/wb-cloud-agent/device_bundle.crt.pem \
  --engine ateccx08 \
  --key ATECCx08:00:02:C0:00 \
  --key-type ENG \
  -w '|||{"code":"%{response_code}"}' \
  https://agent.wirenboard.cloud/api-agent/v1/agent-start-up/
curl: (58) unable to set private key
Warning: Problem (retrying all errors). Will retry in 1 seconds. 8 retries
Warning: left.
curl: (58) unable to set private key
Warning: Problem (retrying all errors). Will retry in 1 seconds. 7 retries
Warning: left.
curl: (58) unable to set private key
Warning: Problem (retrying all errors). Will retry in 1 seconds. 6 retries
Warning: left.

Возможно проблема связана с заменой контроллера? У меня был старый контроллер подключенный к облаку. Его заменили на новый по гарантии. Все настройки были перенесены на новый согласно официальной инструкции. Возможно, сертификат на новом повредился после переноса настроек?

попробуйте сначала сделать
проверить дату и время на контроллере
apt update ; apt -y upgrade
Затем перезагрузить контроллер
Проверить дату и время на контроллере

1 Like

Добрый день.

Вот тут лучше подробней что за “официальная” инструкция? Если имеется в виду восстановление из бэкапа - то она не предназначена для восстановления на дроугой контроллер.
Ну и настройки соединения с облаком - индивидуальны для каждого контроллера.
То есть:

Jan 10 19:06:16 wirenboard-AKWGH45O wb-cloud-agent[12869]: RuntimeError: Cert /var/lib/wb-cloud-agent/device_bundle.crt.pem and key ATECCx08:00:02:C0:00 seem to be inconsistent (possibly because of CPU board missmatch)!

говорит о попытке подключения с другими данными.
Рекомендую удалить провайдера и снова его добавить, это должно помочь.

да, эта инструкция

Не помогает:

root@wirenboard-AKWGH45O:~# wb-cloud-agent del-provider wirenboard.cloud
Warning: The controller on the remote server could not be detached due to network problems.
Unbind it manually using the command: 'wb-cloud-agent cloud-unbind https://wirenboard.cloud'
Provider wirenboard.cloud successfully deleted


root@wirenboard-AKWGH45O:~# wb-cloud-agent cloud-unbind https://wirenboard.cloud
Warning: The controller on the remote server could not be detached due to network problems.
Unbind it manually using the command: 'wb-cloud-agent cloud-unbind https://wirenboard.cloud'


root@wirenboard-AKWGH45O:~# wb-cloud-agent
No one provider was found


root@wirenboard-AKWGH45O:~# wb-cloud-agent add-provider https://wirenboard.cloud
Provider wirenboard.cloud successfully added


root@wirenboard-AKWGH45O:~# wb-cloud-agent
| Provider         | Controller Url / Activation Url         |
|------------------|-----------------------------------------|
| wirenboard.cloud | No connect to: https://wirenboard.cloud |

wb-cloud-agent последней версии (apt-get update/upgrade запускал)

Попробовал аналогичное (загрузить конфиги с другого контроллера).
Что-то простого способа не вижу. Проще, скорее всего сделать сброс и включить контроллер в облако штатным методом. Ну и восстановить (нужные) конфиги из бэкапа.

@BrainRoot

Я правильно понимаю, что проблема в том, что корректны сертификат был перетерт сертификатом со старого контроллера из бекапа?

Где он хранится?
Можно ли восстановить/перегенерировать его?

Скорее - да.

Оригинальный: /etc/ssl/certs/device_bundle.crt.pem
Ну и /usr/lib/wb-cloud-agent/check-certs.sh создает симлинки на него.

Он должен соответствовать аппаратному ключу. Я пока не нашел способа его перегенерации.

А какие конфиги нужно восстанавливать в таком случае? Все, кроме /etc/ssl/certs/device_bundle.crt.pem? Или еще какие-то нужно сохранить?

Не совсем правильный подход, лучше “восстановить” только нужные.
То есть вот из списка сервисов взять то что настроено,используется и только эти конфиги скопировать.

Там в списке 58 сервисов :slight_smile: .

Думаю, проще все-таки исключить только те, которые заведомо содержат настройки специфичные для конкретного экземпляра контроллера.
У меня в целом все работает после переноса конфигов, проблема возникла только с облачным сервисом.

А почему бы его не делать с именем соответствующим оригинальному номеру контроллера?

Тогда при восстановлении таким образом перезатираться сертификат не будет …

При создании симлинков по идее должен проверить валидность сертификата …

И вообще. Замена контроллера не такая “редкая” операция. Контроллер по идее должен восстанавливаться в идеале “одной кнопкой” (из облака или со флешки …). Имхо

1 Like

Контроллер - это набор произвольного количества сервисов. То есть они не может быть дополнительное ПО. Плюс - провайдеров облачных может быть больше одного и “стандартного” может не быть вообще.
То есть это конечно хорошо бы, но задача уровня “сделать бэкап-восстановление сервера” который сконфигурирован неизвестно как.
Это даже в большом IT не реализовано.

Задача “вышел из строя сервер - нужно срочно заменить (при этом железо будет отличаться)” реализована и прекрасно работает.
Бэкап запросто разворачивается … в том числе с восстановлением МАС адресов …
По опыту из сложностей это драйвера жесткого диска (при этом решается и разными путями - я рекомендую устанавливать все драйвера такие на все целевые серверы чтобы попадало в бэкап …) + сетевые карты (они могут быть совсем другими … но по факту нужно только сопоставить (тут я предпочитаю руками - но можно и автоматически)
В вашем случае обоих проблем нет.
Также вы можете делать бэкап и восстановление только “вашего” и “поддерживаемого” (это будет “понятное” ограничение)

Но согласен что это отдельная и не такая простая задача (как “кажется”). Но бэкап и восстановление вы уже начали делать.

Учитывая что контроллер это “обычный ПК” на “обычном линуксе” (но очень устаревшем и большей частью не поддерживаемый и с кучей уязвимостей из-за этого) думаю использовать “стандартные” средства восстановления … и бэкапа дополнительно у себя.
но вот особенности с аппаратным шифрованием … и может что еще … нужно обрабатывать по “особому”

Да, все это возможно.
Но - это довольно большая работа.
Как делаю я: Зная, что именно у меня на каждом контроллере сконфигурировано и используется (вот прямо в описании контроллера в проекте список сервисов) просчто беру их конфиги. Все.

Смог добавить контроллер в облако после отката на заводские настройки.

Оставлю заметку на будущее для себя.

Перенос настроек WB+Z2M+SH:

  1. Экспортировать config…tgz и everything…tgz архивы со старого контроллера, скопировать на новый и распаковать во временную директорию

WB:

apt-get update && apt-get upgrade

# скопировать настройки из распакованного архива (сonfig):
cp mnt/data/etc/wb-mqtt-serial.conf /mnt/data/etc/
cp mnt/data/etc/wb-mqtt-serial.conf.d/templates/* /mnt/data/etc/wb-mqtt-serial.conf.d/templates/
f.d/templates/
cp mnt/data/etc/wb-hardware.conf /mnt/data/etc/
cp mnt/data/etc/wb-mqtt-gpio.conf /mnt/data/etc/
cp mnt/data/etc/wb-webui.conf /mnt/data/etc/
cp mnt/data/etc/wb-rules/* /mnt/data/etc/wb-rules/

Z2M:

apt-get install zigbee2mqtt

# скопировать настройки из распакованного архива (сonfig):
cp -r mnt/data/root/zigbee2mqtt/data/* /mnt/data/root/zigbee2mqtt/data/

SprutHub:

# Установка
wget -qO - https://makesimple.org/scripts/install.sh | bash

# скопировать резервные копии SH из распакованного архива (everything):
cp mnt/data/makesimple/.Backup/* /mnt/data/makesimple/.Backup/

Залогиниться в SH http://wirenboard:7777/ и восстановить настройки из резервной копии.

Может имеет смысл включать бекапы SprutHub (/mnt/data/makesimple/.Backup/) в config…tgz бекап WB по-умолчанию?

Весь раздел и скачивается при выборе “скачать все” в интерфейсе.

Да, бекапы SprutHub включены в everything_… бекап. Но у меня он весит порядка 1гб.

Предложение включить их в config_…. бекап. Он значительно меньше места занимает, быстрее копируется с контроллера и обратно.

Бекапы SprutHub небольшие по размеру и не сильно увеличат размер бекапа WB.

Да, конечно, можете включить в свою реализацию. Для примера: Резервное копирование настроек контроллера — Wiren Board

Это ПО используют не все, то есть большинство без него. Бэкап делает копию файлов с раздела - просто разметите бэкап ПО в нем - да и все.