Обновление сервера Ubiquiti UniFi Network Application с версии 7.2.94 на версию 8.1.113 с переходом с Debian GNU/Linux 10 (Buster) на Debian GNU/Linux 12 (Bookworm)

Updating the Ubiquiti UniFi Network Application server from 7.2.94 to 8.1.113 with migration from Debian GNU/Linux 10 (Buster) to Debian GNU/Linux 12 (Bookworm)В этой заметке мы рассмотрим вариант обновления сервера управления беспроводными токами доступа Ubiquiti UniFi с версии UniFi Network Application 7.2.94 на версию 8.1.113 с повышением ОС сервера с Debian GNU/Linux 10 (Buster) на Debian GNU/Linux 12 (Bookworm).

Как известно, на середину этого года запланировано окончание LTS поддержки ОС Debian 10 "Buster", после чего эта версия ОС перейдёт в статус EOL (End of life) и для неё будет прекращён выпуск обновлений безопасности. Поэтому следует спланировать и начать мероприятия по обновлению/миграции серверов на базе Debian 10 на более новые версии Debian 11 "Bullseye" или Debian 12 "Bookworm", срок поддержки которых - до середины 2026 и 2028 годов, соответственно. В общем случае сервер на базе Debian 10 может быть обновлён методом In-Place Upgrade до уровня Debian 11 по этому описанию, после чего обновлённую ОС Debian 11 по аналогии можно будет поднять уже до уровня Debian 12.

Имеющийся в нашем случае сервер управления UniFi Network 7.2.94, который работал на базе Debian 10, был успешно обновлён указанным методом до уровня Debian 11. Но хотелось большего – подтянуть версию самого ПО UniFi Network до актуальной на данный момент времени версии 8.1.113, обновив при этом и ОС до уровня Debian 12. На этапе попыток обновления UniFi Network я погряз в сложностях, вызванных необходимостью поднятия старой версии MongoDB. После очередной безуспешной попытки обновления и последующего отката виртуального сервера из резервной копии ВМ стало очевидно, что добиться желаемой цели через многоэтапное обновление ПО будет тем ещё квестом. Поэтому было решено развернуть новую чистую инсталляцию с использованием актуальных версий ОС и ПО, а затем провести миграцию настроек UniFi Network с переключением точек доступа на новый сервер управления. Далее пошагово рассмотрим эту процедуру.

 

Шаг 1. Экспорт резервной копии данных UniFi Network 7.2

На исходном сервере с UniFi Network 7.2.94 в боковом меню навигации выбираем раздел настроек, на вкладке "System" находим область "Backup". Выбираем глубину выгружаемых исторических данных и используем гиперссылку "Download", после чего будет сформирован и предложен к загрузке файл резервной копии в формате *.unf.

Download backup from UniFi Network 7.2.94

Имя файла будет содержать время выгрузки и версию ПО, например, network_backup_26.04.2024_14-13_v7.2.94.unf. В этот файл резервной копии попадут все настройки приложения с информацией о сайтах, подключенных точках доступа и историческими данными логирования.

 

Шаг 2. Развёртывание нового сервера UniFi Network 8.1

Разворачиваем новый сервер на базе ОС Debian GNU/Linux 12 (Bookworm). В нашем случае для этого используется виртуальная машина Hyper-V. Имя хоста и IP-адрес используем отличные от исходного сервера с UniFi Network 7.2.94.

Перед тем, как развернуть на новом сервере новую версию UniFi Network Application 8.1.113, ознакомимся с заметками о выпуске. Здесь мы сможем узнать о предварительных требованиях для развёртывания ПО и здесь же доступны ссылки на скачивание инсталляционных пакетов под разные ОС.

На форуме Ubiquiti можно найти отдельную большую ветку обсуждения, где описан Bash скрипт "UniFi Network Application Easy Installation Script" от некого гражданина Glenn Rietveld. Скрипт имеет разные версии под разные версии UniFi Network Application. Предполагается, что этот скрипт можно использовать для нового развёртывания актуальной версии UniFi Network на разных ОС Linux. На тестовой виртуальной машине мы испытали работу данного скрипта под интересующую нас версию unifi-8.1.113.sh. Скрипт действительно может упростить процедуру развёртывания ПО, однако меня смутило то, что в ходе работы скрипта подключается сторонний репозиторий. Поэтому мы проведём установку UniFi Network актуальной версии самостоятельно.

Устанавливаем пакеты, которые потребуются нам в дальнейшем:

# apt-get update && apt-get install ca-certificates apt-transport-https gnupg2

Скачиваем GPG-ключ Ubiquiti:

# wget -O /etc/apt/keyrings/ubiquiti-unifi-repo.gpg https://dl.ui.com/unifi/unifi-repo.gpg

Добавляем в конфигурацию пакетного менеджера apt официальный репозиторий Ubiquiti со ссылкой на ранее загруженный ключ:

# echo 'deb  [ signed-by=/etc/apt/keyrings/ubiquiti-unifi-repo.gpg ] https://www.ui.com/downloads/unifi/debian stable ubiquiti' > /etc/apt/sources.list.d/ubiquiti-unifi.list

Теперь нам следует обновить кеш пакетного менеджера и убедиться в том, что при этом не возникает никаких ошибок:

# apt-get update

Далее, по аналогии нам нужно подключить официальный репозиторий MongoDB версии 7.0:

# wget -O /etc/apt/keyrings/mongodb-server-7.0.asc https://pgp.mongodb.com/server-7.0.asc
# echo 'deb [ signed-by=/etc/apt/keyrings/mongodb-server-7.0.asc ] http://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main' > /etc/apt/sources.list.d/mongodb-org-7.0.list
# apt-get update

Посмотрим информацию о пакете unifi:

# apt-cache show unifi
Package: unifi
Version: 8.1.113-25191-1
Architecture: all
Depends: binutils, coreutils, adduser, libcap2, curl,
 mongodb-server (>= 1:3.6.0) | mongodb-10gen (>= 3.6.0) | mongodb-org-server (>= 3.6.0),
 mongodb-server (<< 1:7.1.0) | mongodb-10gen (<< 7.1.0) | mongodb-org-server (<< 7.1.0),
 openjdk-17-jre-headless | temurin-17-jre, logrotate
Pre-Depends: debconf (>= 0.5) | debconf-2.0
Conflicts: unifi-controller
Provides: unifi-controller
Replaces: unifi-controller
Installed-Size: 244198
Maintainer: UniFi developers 
Priority: optional
Section: java
Filename: pool/ubiquiti/u/unifi/unifi_8.1.113-25191-1_all.deb
Size: 150740136
SHA256: d649e6fa5f0c49bed72aad9621b7a1027cfb96844f8e09dcf91f7cce958a1001
SHA1: ab2bc362a1422e0a59b4a868f9e78b859601e1da
MD5sum: ef519ae4393bb7c78ee2f1a60cbc1697
Description: Ubiquiti UniFi server
 Ubiquiti UniFi server is a centralized management system for UniFi suite of devices.
 After the UniFi server is installed, the UniFi Network application can be accessed on any
 web browser. The UniFi Network application allows the operator to instantly provision thousands
 of UniFi devices, map out network topology, quickly manage system traffic, and further
 provision individual UniFi devices.
Description-md5: bc4a2d81ebc3a227c97baa3109427448
Homepage: https://ui.com</unifi-dev@ubnt.com>

Обратите внимание на то, что в качестве зависимости у пакета unifi имеется пакет mongodb-org-server, который должен быть не старше, чем 3.6.0, но и не новей, чем 7.0.0. При этом, в официальном репозитории mongodb.org для Debian Bookworm крайняя доступная ветка – это 7.0. Именно поэтому мы подключили эту ветку ранее в пакетный менеджер apt с помощью конфигурационного файла mongodb-org-7.0.list.

Выполняем установку пакета:

# apt-get install unifi

После проведения установки ПО проверим, что служба unifi.service успешно запущена и работает

# systemctl status unifi.service

Если с установкой пакетов и запуском службы проблем не возникло, то можно не дочитывать то, что написано здесь далее, а сразу переходить к шагу 3.

В некоторых ситуациях могут возникнуть проблемы. Например, можно словить ошибку "Could not execute systemctl:  at /usr/bin/deb-systemd-invoke line 145." при попытке установки пакета unifi, которая может быть связана с невозможностью запуска экземпляра mongodb. Изначально мы благополучно наступили на эти грабли. В нашем случае mongodb 7.0 не хотела запускаться даже в ручном режиме, выдавая не совсем понятные ошибки. Выяснилось, что начиная с версии mongodb 5.0 x86_64 в качестве обязательного требования выступает наличие процессорной инструкции AVX. А в нашем случае эта процессорная инструкция была усечена гипервизором Hyper-V в результате включения режима процессорной совместимости в свойствах виртуальной машины.

Hyper-V VM with Processor Compatibility without AVX and problem starting mongodb

После отключения в свойствах ВМ режима совместимости, проблема с запуском mongodb версии 7.0 была решена.

Если в вашем случае отключение режима совместимости недопустимо, либо для сервера используется устаревший процессор, не имеющий поддержки AVX, то придётся использовать mongodb версии ниже 5.0. В этом случае в качестве стабильной версии mongodb можно использовать версию 4.4. Однако эта версия доступна только в старом официальном репозитории для Debian Buster, который можно подключить в Debian Bookworm следующим образом:

# wget -O /etc/apt/keyrings/mongodb-server-4.4.asc https://pgp.mongodb.com/server-4.4.asc
# echo 'deb [ signed-by=/etc/apt/keyrings/mongodb-server-4.4.asc ] http://repo.mongodb.org/apt/debian buster/mongodb-org/4.4 main' > /etc/apt/sources.list.d/mongodb-org-4.4.list
# apt-get update

Разумеется, репозиторий более новой версии mongodb 7.0 в этом случае должен быть отключен. И так как версия 4.4 является версией "не первой свежести", может возникнуть необходимость ручной доустановки старого пакета libssl1.1, которого нет в официальных репозиториях Debian Bookworm:

# wget http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.1w-0+deb11u1_amd64.deb
# dpkg -i libssl1.1_1.1.1w-0+deb11u1_amd64.deb

 

Шаг 3. Импорт данных в UniFi Network 8.1 и миграция точек доступа

Переходим на веб-интерфейс нового сервера UniFi Network 8.1 по адресу https://fqdn:8443/, где откроется мастер первоначальной настройки. В нижней части первой страницы мастера настройки щелкнем по гиперссылке "Or restore setup from backup":Restore setup from backup in UniFi Network 8.1

На запрос файла резервной копии, укажем файл *.unf, который мы сделали на шаге 1. Подтвердим восстановление из резервной копии и дождёмся окончания процедуры.

После успешного входа в веб-интерфейс UniFi Network 8.1 с ранее действующей учётной записью администратора из старой конфигурации UniFi Network 7.2 пройдёмся по всем настройкам и проверим корректность их переноса на новый сервер. После восстановления конфигурации точки доступа на новом сервере должны быть видны, но неактивны.

Для окончательного переключения точек доступа со старого сервера управления на новый, вернёмся в веб-интерфейс старого сервера UniFi Network 7.2 в раздел настроек "System" и воспользуемся ссылкой "Export Site":

UniFi Network 7.2 - Export Site

В открывшейся веб-форме нас интересует не возможность загрузки резервной копии данных сайта (данные сайта на новый сервер у нас фактически уже перенесены), а возможность последующей миграции точек доступа. Поэтому нажимаем кнопку "Continue".

UniFi Network 7.2 - Export Site

Откроется следующее окно с доступом к функции миграции сайта на новый сервер. Снова жмём "Continue".

UniFi Network 7.2 - Migrate Site

Вводим адрес нового сервера с UniFi Network 8.1 и отмечаем те активные точки доступа, подключенные к старому серверу, которые хотим мигрировать на новый сервер. В перечне доступных точек будут только устройства в состоянии Online. Нажимаем кнопку "Migrate Devices".

UniFi Network 7.2 - Migrate Devices (Access Points)

После запуска процедуры миграции точек доступа нам будет предложено удалить информацию о мигрируемых точках доступа на старом сервере (кнопка "Forget Devices"), либо сохранить информацию об этих точках доступа (кнопка "Skip"). Можно выбрать "Skip", так как удалить информацию о точках доступа на старом сервере можно позже, после того, как мы убедимся, что эта сама миграция прошла действительно успешно.

UniFi Network 7.2 - Migrate Online Wi-Fi AP

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

UniFi Network 7.2 - Offline Wi-Fi Access Points

Переходим в веб-консоль на новом сервере с UniFi Network 8.1 и убеждаемся в том, что мигрируемые точки доступа стали отображаться как активные:

UniFi Network 8.1 - Online Wi-Fi Access Points

После проверки работоспособности точек доступа в связке с новым сервером управления с UniFi Network 8.1 можем вывести из работы и удалить старый сервер на с UniFi Network 7.2.

Добавить комментарий