В одном посте я прочитал про инструмент именуемый, как Headwind MDM — это Open-Source платформа для управления корпоративными Android-устройствами. Тема интересная, себе пометил что хочу ее разобрать и возможно применять на рабочем месте, как когда-то давным-давно также узнал про инструмент удаленного управления Windows системами, кто не знает это я про Aspia говорю.

Сегодня я покажу каким образом можно в локальной сети управлять смартфонами (у меня цель управлять PDA терминалами (Zebra TC210K) на складе и производстве), подключенными к офисному Wi-Fi, что подразумевается, как управление:

  • Устанавливать только по ПО что разрешено
  • Блокировать функции смартфона
  • Собирать статистику.

В роли подопытного смартфона выступит то что есть в наличии для теста, а именно Honor 5C.

Системные требования:

(минимальные требования к серверу)

  • OS: Ubuntu 22.04 Server
  • IP&DNS: Статический
  • RAM: 4Gb
  • CPU: 2
  • SSD: 20Gb

Шаг №1: Создаю VM (виртуальную машину) с учетом минимальных требований к серверу:

  • OS: Ubuntu 22.04 Server
  • RAM: 4Gb
  • CPU: 1 sockets (2cores)
  • SSD: 50Gb

Шаг №2: Обновляю установленную систему до самого последнего релиза в рамках текущего LTS релиза для Ubuntu 22.04 Server/Desktop:

ekzorchik@srv-home:~$ sudo nano /etc/update-manager/release-upgrades
[DEFAULT]
Prompt=never
ekzorchik@srv-home:~$ sudo rm -Rf /var/lib/apt/lists
ekzorchik@srv-home:~$ sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y && sudo apt-get autoremove -y
ekzorchik@srv-home:~$ sudo reboot
ekzorchik@srv-home:~$ uname -a && lsb_release -a
Linux srv-home 5.15.0-105-generic #115-Ubuntu SMP Mon Apr 15 09:52:04 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.4 LTS
Release:        22.04
Codename:       jammy
ekzorchik@srv-home:~$

Шаг №3: Настройки локали прописываю следующим образом:

sudo rm -f /etc/localtime
sudo ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime
sudo locale-gen en_US.UTF-8
echo "LC_ALL="en_US.UTF-8"" | sudo -s tee /etc/default/locale
echo "LANG="en_US.UTF-8"" | sudo tee -a /etc/default/locale
echo "LANGUAGE="en.US.UTF-8"" | sudo tee -a /etc/default/locale

Шаг №4: Синхронизируем время опираясь на заметку: "Настраиваем службу времени в Ubuntu 22.04 Server"

Шаг №5: Устанавливаю пакеты перед тем как запустить установку:

ekzorchik@srv-home:~$ sudo apt install -y aapt tomcat9 postgresql vim certbot unzip net-tools unzip

Шаг №6: Настраиваю сервис базы данных Postgres:

ekzorchik@srv-us2204mdm:~$ su - postgres
Password:
su: Authentication failure
ekzorchik@srv-us2204mdm:~$ sudo su - postgres
postgres@srv-us2204mdm:~$ psql
psql (14.11 (Ubuntu 14.11-0ubuntu0.22.04.1))
Type "help" for help.
postgres=#
postgres=# CREATE USER us_hmdm WITH PASSWORD 'Aa1234567aA';
CREATE ROLE
postgres=# CREATE DATABASE db_hmdm WITH OWNER=us_hmdm;
CREATE DATABASE
postgres=# \q
postgres@srv-us2204mdm:~$ exit
logout
ekzorchik@srv-us2204mdm:~$

Шаг №7: Скачиваю, распаковываю и устанавливаю:

ekzorchik@srv-us2204mdm:~$ wget https://h-mdm.com/files/hmdm-5.25-install-ubuntu.zip
ekzorchik@srv-us2204mdm:~$ unzip hmdm-5.25-install-ubuntu.zip
ekzorchik@srv-us2204mdm:~$ ls -l hmdm-install/hmdm_install.sh
-rwxr-xr-x 1 ekzorchik ekzorchik 18786 Feb 16 09:51 hmdm-install/hmdm_install.sh
ekzorchik@srv-us2204mdm:~$ cd hmdm-install/
ekzorchik@srv-us2204mdm:~/hmdm-install$ sudo ./hmdm_install.sh
Please choose the installation language (en/ru) [en]: ru
PostgreSQL database setup
=========================
Make sure you've installed PostgreSQL and created the database.
If you didn't create a database yet, please click Ctrl-C to break,
then execute the following commands:
-------------------------
su postgres
psql
CREATE USER hmdm WITH PASSWORD 'topsecret';
CREATE DATABASE hmdm WITH OWNER=hmdm;
\q
exit
-------------------------
PostgreSQL host [localhost]: localhost
PostgreSQL port [5432]: 5432
PostgreSQL database [hmdm]: db_hmdm
PostgreSQL user [hmdm]: us_hmdm
PostgreSQL password: Aa1234567aA
File storage setup
==================
Please choose where the files uploaded to Headwind MDM will be stored
If the directory doesn't exist, it will be created
##### FOR TOMCAT 9, USE SANDBOXED DIR: /var/lib/tomcat9/work #####
Headwind MDM storage directory [/var/lib/tomcat9/work]: /var/lib/tomcat9/work нажимаю клавишу "ENTER"
Please choose the directory where supply scripts will be located.
Headwind MDM scripts directory [/opt/hmdm]: /opt/hmdm нажимаю клавишу "ENTER"
Web application setup
=====================
Headwind MDM requires access from Internet
Please assign a public domain name to this server
Protocol (http|https) [https]: изменяю на http и нажимаю клавишу "ENTER"
Domain name or public IP (e.g. example.com): 192.168.10.13 и нажимаю клавишу "ENTER"
Port (e.g. 8080, leave empty for default ports 80 or 443): нажимаю клавишу "ENTER"
Project path on server (e.g. /hmdm) or ROOT: ROOT и нажимаю клавишу "ENTER"
To enable password recovery function, Headwind MDM must be connected to SMTP.
Password recovery is an optional but recommended feature.
Setup SMTP credentials [Y/n]?: выбираю "n" и нажимаю клавишу "ENTER"
Ready to install!
Location on server: /var/lib/tomcat9/work
URL: http://192.168.10.13
Is this information correct [Y/n]? Подтверждаю выбор символом "Y" и нажимаю клавишу "ENTER"
Waiting for undeploying the previous version
..........
Tomcat config file created: /var/lib/tomcat9/conf/Catalina/localhost/ROOT.xml
Deploying hmdm-5.25.2-os.war to Tomcat: /var/lib/tomcat9/webapps/ROOT.war
........................................................................................................................
ERROR: failed to deploy WAR file!
Please check /var/lib/tomcat9/logs/catalina.out for details.
ekzorchik@srv-home:~/hmdm-install$
Так почему не установилось.
Запустил еще раз и успешно
ekzorchik@srv-us2204mdm:~/hmdm-install$ sudo ./hmdm_install.sh
Please choose the installation language (en/ru) [en]: ru
PostgreSQL database setup
=========================
Make sure you've installed PostgreSQL and created the database.
If you didn't create a database yet, please click Ctrl-C to break,
then execute the following commands:
-------------------------
su postgres
psql
CREATE USER hmdm WITH PASSWORD 'topsecret';
CREATE DATABASE hmdm WITH OWNER=hmdm;
\q
exit
-------------------------
PostgreSQL host [localhost]: localhost
PostgreSQL port [5432]: 5432
PostgreSQL database [hmdm]: db_hmdm
PostgreSQL user [hmdm]: us_hmdm
PostgreSQL password: Aa1234567aA
The database is already setup.
To re-deploy Headwind MDM, the database needs to be cleared.
Clear the database? ALL DATA WILL BE LOST!
Type "erase" to clear the database and continue setup: набираем "erase" и нажимаю клавишу "ENTER"

и дальше все тоже самое что и выше при первом запуске инсталлятора и установка проходит успешно:

Ready to install!
Location on server: /var/lib/tomcat9/work
URL: http://192.168.10.13
Is this information correct [Y/n]? y
Waiting for undeploying the previous version
..........
Tomcat config file created: /var/lib/tomcat9/conf/Catalina/localhost/ROOT.xml
Deploying hmdm-5.25.2-os.war to Tomcat: /var/lib/tomcat9/webapps/ROOT.war
...........
Deployment successful, initializing the database...
======================================
Minimal installation of Headwind MDM has been done!
At this step, you can open in your web browser:
http://192.168.10.13:8080
Login: admin:admin
======================================
Setup HTTPS via LetsEncrypt [Y/n]?: указываю "n" и нажимаю клавишу "ENTER"
Setup HTTPS via LetsEncrypt [Y/n]?: n

начинается процесс скачивания файлов с официального сервера:

Move required APKs from h-mdm.com to your server [Y/n]?: Y
Downloading https://h-mdm.com/files/hmdm-5.26-os.apk...
--2024-04-25 14:02:54--  https://h-mdm.com/files/hmdm-5.26-os.apk
Downloading https://h-mdm.com/files/pager-1.02.apk...
--2024-04-25 14:03:00--  https://h-mdm.com/files/pager-1.02.apk
Downloading https://h-mdm.com/files/phoneproxy-1.02.apk...
--2024-04-25 14:03:03--  https://h-mdm.com/files/phoneproxy-1.02.apk
Downloading https://h-mdm.com/files/LauncherRestarter-1.04.apk...
--2024-04-25 14:03:06--  https://h-mdm.com/files/LauncherRestarter-1.04.apk
======================================
Headwind MDM installation is completed!
To access your web panel, open in the web browser:
http://192.168.10.13
Login: admin:admin
======================================
ekzorchik@srv-us2204mdm:~/hmdm-install$

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

Шаг №8: Проверяю что система слушает порты развернутого сервиса выше:

ekzorchik@srv-us2204mdm:~/hmdm-install$ cd ~
ekzorchik@srv-us2204mdm:~$ sudo netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      836/systemd-resolve
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      5190/postgres
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      918/sshd: /usr/sbin
tcp6       0      0 :::8080                 :::*                    LISTEN      54552/java
tcp6       0      0 192.168.10.13:31000     :::*                    LISTEN      54552/java
tcp6       0      0 :::22                   :::*                    LISTEN      918/sshd: /usr/sbin
udp        0      0 127.0.0.53:53           0.0.0.0:*                           836/systemd-resolve
udp        0      0 192.168.10.13:68        0.0.0.0:*                           834/systemd-network
ekzorchik@srv-us2204mdm:~$

Шаг №9: Установка выше завершена, теперь могу обратиться по IP&DNS адресу сервера выше к сервису Headwind MDM, где URL будет: http://192.168.10.13:8080

Headwind MDM - система управления мобильными устройствами с открытым кодом

Headwind MDM успешно установлена на Ubuntu 22.04 Server

  • Имя пользователя или email: указываю дефолтный логин admin
  • Пароль: указываю дефолтный пароль admin от логина admin

и нажимаю "Войти"

Первым делом система попросит изменить дефолтный пароль, изменяю

  • Новый пароль: указываю к примеру, 712mbddr@
  • Подтверждение: подтверждаю, 712mbddr@

Устанавливаем новый пароль на вход в Headwind MDM.

и после нажимаю "Установить пароль"

Вот так выглядит Web-интерфейс после входа

Вот так выглядит Web-интерфейс после входа

нажимаю на иконку с нарисованным на нем QR кодом, но увы получаю ошибку

URL выглядит как:

http://192.168.10.13/#/qr/6fb9c8dc81483173a0c0e9f8b2e46be1/h0001

Нажимаю на иконку с нарисованным на нем QR кодом, но увы получаю ошибку

на этот счет я спросил на сайте в форме поддержки по продукту, на что получил ответ:

«Я правильно понимаю, что вы хотите настроить Headwind MDM именно в локальной сети?

Я рекомендую вам настраивать Headwind MDM на домене в сети Интернет, это наиболее простой способ, не требующий дополнительных ухищрений. Как это сделать — написано здесь: https://h-mdm.com/ru/ustanovka-veb-paneli/

В вашем случае, полагаю, достаточно будет настроить редирект порта 80 -> 8080 с помощью iptables. Как это сделать — написано здесь: https://qa.h-mdm.com/1533/

Также, если хотите, у нас есть пробная версия Premium, ограниченная по времени, которую можно тоже развернуть на вашем сервере. Напишите мне, если вам интересно получить доступ.»

но вот я конкретно написал, что мне нужно в локальной сети развернуть без возможности иметь внешнее доменное имя и внешний WAN-IP адрес, я пока обкатываю на локальных мощностях. Если честно я уже смирился, что когда задаешь вопрос разработчику или в организацию по вопросам хоть ты и перелопатил всю ихнюю документацию, то тебе отвечают не про то что у тебя.

На заметку: Я предполагаю, что функционал через QR код доступен если разворачиваемая система работает в интернете, имеет доменное имя и статический WAN-IP адрес и у нее есть сертификат, к примеру, от Let’s Encrypt, после чего сервис доступен, как https://domain_name:8080. Могу ошибаться, пока еще не проверял. Стремно выставлять в интернет средством управления Android устройствами.

Что по итогу, я разобрал в шагах, как происходит установка Headwind MDM на Ubuntu 22.04 Server, в дальнейшем я буду показывать своими заметками как заводить в нее в ручном режиме смартфон, настраивать и взаимодействовать, а пока на этом все, с уважением автор блога Олло Александр aka ekzorchik.