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) переходим под rootsudo su
Установим необходимые для работы пакеты
sudo apt -y install gnupg wget apt-transport-https ca-certificates
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/smolenskcat << 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
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;
Удаляем файл конфигурации веб сервера по дефолту
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