На кофе

Поиск

Поиск Яндекс

Вход

VDI сервис OpenUDS на Astra Linux 1.7

Поделиться статьей

OpenUDS  - это сервер управления виртуальными рабочими местами, создаем и управляем им на Astra-Linux:

OpenUDS Astra linux

OpenUDS реализует:
  • Виртуальные рабочие столы.

  • Доступ к сетевым сервисам и сетевой инфраструктуре.

  • Виртуализация приложений.

Можно использовать как инструмент, который решает следующие проблемы:
  • Запуск всевозможных облачных окружений клиента и приложений. 

  • Заменяем существующие терминальные решения.

Что мы получаем:
  • Универсальную или кастом пользовательскую среду с безопасными удаленными рабочими местами , независисящими от железа.

Этим решением мы можем импортозаместить VMware Horizon, Cisco Desktop Virtualisation Solution with VMware View, Citrix XenApp и XenDesktop и другие продукты.

Фичи:
  • Мы можем подключитьтся к виртуальным рабочим столам по протоколам RDP, SPICE, X2Go, HTML5.

  • С помощью обычного браузера пользователь может получить доступ к VDI.

  • Позже рассмотрим интеграцию с ProxmoxVE на AstraLinux, о развертывании которой мы писали в этой статье,  также возможна интеграция со следующими открытыми облачными платформами, такими как  OpenNebula на Astra Linux, OpenStack, oVirt.

Далее по порядку:

1. В терминале (Alt+t) переходим под root
sudo su

Установим необходимые для работы пакеты

sudo apt -y install gnupg wget apt-transport-https ca-certificates
2. Добавим репозиторий Astra Linux 1.7:
cat << EOF > /etc/apt/sources.list
deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-main/ 1.7_x86-64 main contrib non-free
deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-update/ 1.7_x86-64 main contrib non-free
deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-base/ 1.7_x86-64 main contrib non-free
deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-extended/ 1.7_x86-64 main contrib non-free
deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-extended/ 1.7_x86-64 astra-ce
EOF

Подразумеваем, что изначально ОС Astra Linux обновлена, если нет, то выполняем

apt update

astra-update -r -A

После обновления перегружаемся по требованию

sudo reboot

После обновления возможно криво переустановится графическое окружение fly, это фича Astra Linux

Переустановим на всякий случай:

sudo apt install --reinstall fly-all-main -fy

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

sudo apt autoremove -fy

3. Разрешим установку пакетов со сторонних репозиториев

Комментируем содержимое /etc/apt/preferences.d/smolensk
cat << EOF > /etc/apt/preferences.d/smolensk
#Package: *
#Pin: release n=1.7_x86-64
#Pin-Priority: 900
EOF

4. Вначале установим имя хоста системы на доменное имя (FQDN), которое мы будем использовать

hostnamectl set-hostname vdi.entnet.ru

5. В файл hosts добавим имя хоста:

Определим ip адрес:

ifconfig | grep "inet" | grep "broadcast" |  awk '{print $2}'

Отредактируем /etc/hosts:

mcedit /etc/hosts

Установим имя нашего сервера в файле конфигурации hosts:

192.168.1.XXX   vdi.entnet.ru    vdi

где 192.168.1.XXX — IP-адрес нашего сервера; vdi — имя сервера; entnet.ru — наш домен, если используется.

6. Рестартанем графическую сессию:

sudo systemctl restart fly-dm

7. База данных MariaDB. Установим версию моложе, поскольку по требованиям OpenUDS необходима версия не ниже 10.4, а в репозитории Astra Linux 1.7.5 имеется только 10.3

Скачаем архив и подключим его в виде файлового репозитория:

mkdir -p /tmp/mariadb

wget -O /tmp/mariadb-10.4.33.tar https://dlm.mariadb.com/3701215/MariaDB/mariadb-10.4.33/repo/debian/mariadb-10.4.33-debian-buster-amd64-debs.tar

tar -C /tmp/mariadb -xf /tmp/mariadb-10.4.33.tar

cd /tmp/mariadb/mariadb-10.4.33-debian-buster-amd64-debs/

./setup_repository

sudo apt-get update

sudo apt install mariadb-server -fy

sudo systemctl enable --now mariadb.service

sudo mysql_secure_installation

8. Создаем базу данных

sudo mysql -u root

MariaDB> CREATE DATABASE dbuds CHARACTER SET utf8 COLLATE utf8_general_ci;
MariaDB> CREATE USER 'dbuds'@'%' IDENTIFIED BY 'entnet';
MariaDB> GRANT ALL PRIVILEGES ON dbuds.* TO 'dbuds'@'%';
MariaDB> FLUSH PRIVILEGES;
MariaDB> exit;

9. Устанавливаем необходимые пакеты:
sudo apt install dialog apt-transport-https gnupg2 nginx-full nginx-extras curl -fy

Удаляем, всё, что связано с apache (TODO проверить)

sudo apt purge apache* -fy

rm -R /var/lib/apache2

10. Ну и, после завершения настроек, перезапускаем демоны и службу а также добавим их в автозапуск:

systemctl restart nginx

systemctl enable nginx

11. Поскольку мы имеем в наличии только пакеты .rpm, будем преобразовывать .rpm в .deb при помощи пакета alien:

sudo apt install alien -fy

12. Установим python версией не ниже 3.11 (TODO посмотреть требования)

sudo apt update

sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget pkg-config default-libmysqlclient-dev gcc-astra -fy

13. Выходим из под рута!

exit

14. Скачиваем архив, распаковываем

wget -O /tmp/Python-3.11.8.tgz https://www.python.org/ftp/python/3.11.8/Python-3.11.8.tgz

tar -xf /tmp/Python-3.11.8.tgz

cd Python-3.11.8

./configure --enable-optimizations

make -j 4

sudo make altinstall

15. Проверяем версию python:

python3.11 --version

16. Узнаем путь, где установлена данная версия:

which python3.11

Обновляем альтернативы

sudo update-alternatives --install /usr/bin/python python /usr/local/bin/python3.11 1

sudo update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.11 2

17. Доустанавливаем необходимые пакеты

sudo apt install python3-pip -fy

sudo apt install gunicorn3 -fy

18. Пропишем симлинк для gunicorn

sudo ln -s /usr/bin/gunicorn3 /usr/bin/gunicorn.py3

sudo apt-get --assume-yes install gcc libxml2-dev python3-dev

sudo apt-get install libsasl2-dev python-dev libldap2-dev libssl-dev libxmlsec1-dev -fy

19. Скачаем пакеты .rpm:

wget -O /tmp/openuds-server.rpm https://git.altlinux.org/tasks/337181/build/400/x86_64/rpms/openuds-server-3.6.0-alt10.noarch.rpm

wget -O /tmp/openuds-server-nginx.rpm https://git.altlinux.org/tasks/337181/build/400/x86_64/rpms/openuds-server-nginx-3.6.0-alt10.noarch.rpm

20. Для преобразования файла .rpm в файл .deb используется опция -d. На выходе получится DEB-пакет:

sudo alien -d --scripts /tmp/openuds-server.rpm

sudo alien -d --scripts /tmp/openuds-server-nginx.rpm

Ответ должен быть примерно такой: openuds-server-nginx.deb generated

21. Установим данные пакеты:

sudo dpkg -i  *.deb

22. Отредактируем файл конфигурации сервера OpenUDS внесем туда свой пароль, отредактируем временную зону на свое усмотрение и выставим русский язык:

 sudo mcedit /etc/openuds/settings.py

'PASSWORD': 'entnet',  # Not used with sqlite3.

TIME_ZONE = 'Europe/Moscow'

LANGUAGE_CODE = 'ru'

23. Создадим пользователя openuds

sudo /usr/sbin/groupadd -r -f openuds

sudo /usr/sbin/groupadd -r -f _webserver

sudo /usr/sbin/useradd -M -r -g openuds -G _webserver -c 'OpenUDS Brocker Daemon' -s /bin/false  -d /var/lib/openuds openuds

24. Зададим пароль пользователю openuds

sudo passwd openuds

25. Важно! Перейдем под пользователя openuds ! Сделать это мы сможем из-под root.
sudo su

su -s /bin/bash - openuds

25.1. Установим необходимые для миграции зависимости:

python -m pip install python-dev-tools --user --upgrade --no-warn-script-location
wget requirements.txt https://github.com/VirtualCable/openuds/raw/master/server/requirements.txt
python -m pip install -r requirements.txt --no-warn-script-location 
python -m pip install gunicorn==19.9.0 --no-cache-dir
python -m pip install selectors --no-cache-dir
python -m pip install namedtupled --no-cache-dir
python -m pip install collection --no-cache-dir
python -m pip install Mapping --no-cache-dir
python -m pip install Django==4.0  --no-cache-dir
python -m pip install Service --no-cache-dir
#python -m pip install requests==2.25.0 --no-cache-dir
python -m pip install urllib3==2.2.1 --no-cache-dir
python -m pip install chardet --no-cache-dir
python -m pip install certifi --no-cache-dir
python -m pip install requests --no-cache-dir
python -m pip install dateutils --no-cache-dir
python -m pip install bitarray --no-cache-dir
python -m pip install Pillow --no-cache-dir
python -m pip install ovirtsdk4 --no-cache-dir
python -m pip install ovirt-engine-sdk-python --no-cache-dir
python -m pip install defusedxml --no-cache-dir
python -m pip install dnspython --no-cache-dir
python -m pip install pyrad --no-cache-dir
python -m pip install python-ldap --no-cache-dir
python -m pip install pyotp --no-cache-dir
python -m pip install qrcode --no-cache-dir
python -m pip install paramiko --no-cache-dir
python -m pip install weasyprint --no-cache-dir
python -m pip install matplotlib --no-cache-dir
python -m pip install pyldap --no-cache-dir
python -m pip install matplotlib --no-cache-dir
python -m pip install python-ldap --no-cache-dir
python -m pip install dateutils --no-cache-dir

25.2. Заполним базу первоначальными данными

cd /usr/share/openuds

25.3. Проверим корректность

python3 manage.py check

25.4. Мигрируем данные

python3.11 manage.py migrate

25.5. Ну и выходим из-под пользователя openuds

exit

26. Поправим код для корректной работы модуля Mapping

sudo mcedit /usr/local/lib/python3.11/collections/__init__.py

Добавляем в этот файл

from collections.abc import Mapping

Картинку прилепить

27. Запускаем gunicorn:

sudo systemctl enable --now openuds-web.service

28. Запускаем nginx:

Включаем сайт OpenUDS

sudo ln -s /etc/nginx/sites-available.d/openuds.conf /etc/nginx/sites-enabled/openuds.conf

29. Создадим папку для ключей ssl

mkdir -p /etc/ssl/openuds

В нее мы положим уже имеющиеся (если есть) либо выпустим бесплатные сертификаты, как в статье Устанавливаем и автоматически продлеваем сертификаты ssl при помощи Lets Encrypt и Certbot на Astra Linux

Например

vdi.entnet.ru.crt - открытый ключ

vdi.entnet.ru.key - закрытый ключ

Редактируем файл конфигурации веб сервера (прописываем в нем путь к ssl ключам)

sudo mcedit /etc/nginx/sites-enabled/openuds.conf

В нем пропишем пути к ssl ключам:

ssl_certificate /etc/ssl/openuds/vdi.entnet.ru.crt;

ssl_certificate_key /etc/ssl/openuds/vdi.entnet.ru.key;

ssl сертификаты

Удаляем файл конфигурации веб сервера по дефолту

sudo rm /etc/nginx/sites-enabled/default

Включаем службу в автозапуск

sudo systemctl enable --now nginx.service

Перегружаем веб-сервер

sudo systemctl restart nginx.service

29. Включаем и запускаем менеджер задач OpenUDS

sudo systemctl enable --now openuds-taskmanager.service

30. Ну и перезапустим все службы

systemctl restart mysql openuds-web.service openuds-taskmanager.service nginx

31. Удалим ненужный уже источник установки mariadb:

sudo rm /etc/apt/sources.list.d/mariadb.list

sudo apt update

32. Отправляем сервер в перезагрузку, так как  не создается файл /run/openuds/socket

sudo reboot

После перезагрузки открываем в браузере сайт управления OpenUDS

Примечание: Имя/пароль по умолчанию: root/udsmam0 

 

Админ панель OpenUDS Astra Linux